繁体   English   中英

Verilog Adder 测试平台

[英]Verilog Adder testbench

//In here, `WORD_LEN is 32.

`include "Defines.v"

module Adder (in1, in2, out);
  input [`WORD_LEN-1:0] in1, in2;
  output [`WORD_LEN-1:0] out;

  assign out = in1 + in2;
endmodule

///////////////////////////////////////// /////////////

`timescale 1ns/1ns

module AdderTest;
  reg in1, in2;
  wire out;
  Adder TestAdder(.in1(in1), .in2(in2), .out(out));

  initial begin
  in1 = 4'b0000; in2 = 4'b0000; #100;
  in1 = 4'b0011; in2 = 4'b1111; #100;
  in1 = 4'b1000; in2 = 4'b1100; #100;
  $stop;
  end


endmodule

当我模拟这个时,只有 in1[0] 和 in2[0] 得到值。 除了他们,他们得到了一条蓝线。 此外,还有一条红线。 我真的不明白这有什么问题。 请帮忙。

尽管您在模块中将in1in2out定义为 32 位端口(如您的注释所示),但测试台中连接的信号只有 1 位宽。 因此,只有模块输入信号的第一位(即in1[0]in2[0] )被驱动。

尝试使用以下测试台:

module AdderTest;
  reg  [31:0] in1, in2; // CHANGE
  wire [31:0] out;      // CHANGE
  Adder TestAdder(.in1(in1), .in2(in2), .out(out));

  initial begin
    in1 = 4'b0000; in2 = 4'b0000; #100;
    in1 = 4'b0011; in2 = 4'b1111; #100;
    in1 = 4'b1000; in2 = 4'b1100; #100;
    $stop;
  end
endmodule

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM