⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tb_cla16.v

📁 carry lookahead adder verilog program
💻 V
字号:
`timescale 1ns/100ps

module tb_cla16;
    parameter samples = 100;
    parameter n = 16;        
    reg [n-1:0]    a,b;
    reg Cin;
    wire Cout;
    wire [n-1:0]    Sum;
    integer i;
    reg [3*n+1:0] temp;
cla16 UUT(.a(a),.b(b),.Cin(Cin),.Cout(Cout),.s(Sum));

  function [1+n+n+n+1-1:0] gen_rand_data;
     input integer  i;
     reg Cin;
     reg [n-1:0] a;
     reg [n-1:0] b;
     reg [n-1:0] Sum;
     reg Cout;
     begin
         a = {$random};
         b = {$random};
         Cin= {$random};
         {Cout, Sum} = a + b + {{n-1{1'b0}}, Cin};     
 gen_rand_data = {Cin,a[n-1:0],b[n-1:0],Cout,Sum[n-1:0]};
     end
  endfunction


   initial   begin
#10 
    for(i=1; i<=samples; i=i+1) 
    begin
           temp=gen_rand_data(i);
           {Cin,a[n-1:0],b[n-1:0]}=temp[3*n+1:n+1];
             #10  if({Cout,Sum[n-1:0]}==temp[n:0]) 
	            $display("--result correct--");
	          else
            $display($realtime,,"bad result: Cin=1'b%b,a=n-1'b%b,b=n-1'b%b,Cout=1'b%b, Sum=n-1'b%b",Cin,a,b,Cout,Sum);
           	end
			#10 a={16'b1};b={16{1'b1}};
            #10
            $stop;
    end
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -