Verilog 简单加法器&x2B;“测试台返回”;“不在乎”;输入

Verilog 简单加法器&x2B;“测试台返回”;“不在乎”;输入,verilog,iverilog,Verilog,Iverilog,我有一个简单的加法器模块测试台,但我得到了错误的输入: module adderTestbench; wire [31:0] fromAdd; adder lol(32'h00000000,fromAdd); initial begin //forcing program to be sequential #100; //wait 100 end //end begin initial begin $display("%h",fr

我有一个简单的加法器模块测试台,但我得到了错误的输入:

module adderTestbench;

    wire [31:0] fromAdd;

    adder lol(32'h00000000,fromAdd);


    initial begin //forcing program to be sequential
    #100; //wait 100
    end //end begin

    initial begin
    $display("%h",fromAdd);
    end

endmodule

module adder(addIn,addOut);
input [31:0] addIn;
output reg [0:31] addOut;
always @(addIn) 
begin
addOut <= addIn + 32'h00000004;
end
endmodule
模块加法器测试台;
来自ADD的连线[31:0];
加法器lol(32'h00000000,来自ADD);
初始开始//强制程序按顺序进行
#100; //等100
结束//结束/开始
初始开始
$display(“%h”,fromAdd);
结束
端模
模块加法器(addIn,addOut);
输入[31:0]addIn;
输出寄存器[0:31]输出;
始终@(addIn)
开始
addOut标记为“//forcing program to sequential”的代码不会使任何代码连续。
您的两个初始语句仍将并行运行。你可能是说:

initial
begin
   #100; //wait 100
   $display("%h",fromAdd);
end
标记为“//forcing program to sequential”的代码不会使任何代码连续。
您的两个初始语句仍将并行运行。你可能是说:

initial
begin
   #100; //wait 100
   $display("%h",fromAdd);
end

这确实有帮助,但如果我理解正确,请告诉我:使代码具有顺序的是#100在inital语句中这一事实。由于我OP中的代码超出了100,verilog将同时运行带有100的代码和显示器,基本上不做我想做的事情?是的,没错。99%的Verilog初学者都有一个问题,就是知道你需要延迟。所以你的表现比那些好!只是延迟设置的方式是错误的。所有初始语句都是并行执行的。这当然有帮助,但如果我理解正确,请告诉我:#100在初始语句中,这一事实使代码具有顺序性。由于我OP中的代码超出了100,verilog将同时运行带有100的代码和显示器,基本上不做我想做的事情?是的,没错。99%的Verilog初学者都有一个问题,就是知道你需要延迟。所以你的表现比那些好!只是延迟设置的方式是错误的。所有初始语句同时并行执行。