Verilog Adder испытательный стенд - PullRequest
1 голос
/ 04 октября 2019
//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] получают значение. Кроме них, они получили синюю линию. Кроме того, есть красная линия. Я действительно не понимаю, что с этим не так. Пожалуйста, помогите.

1 Ответ

1 голос
/ 04 октября 2019

Хотя вы определяете in1, in2 и out как 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
...