在下面的Verilog testbench代码中,我得到了从time=0到time=30的监视器输出,但是在那之后,我没有得到直到time=70的监视器输出。
造成这种行为的可能原因是什么?我使用的是Modelsim 10.4。
//design block for mux
module mux(output reg out,input[3:0] in,input[1:0] s);
always @(s or in)
case(s)
2'b00:out<=in[0];
2'b01:out<=in[1];
2'b10:out<=in[2];
2'b11:out<=in[3];
endcase
endmodule
//testbench
module testbench;
reg[3:0] in;
reg[1:0] s;
wire out;
assign out=0;
mux m(out,in,s);
initial
begin
s=0;
in=0;
$monitor("time=%d , s=%d , in=%d ",$time,s,in);
while(in<15)
begin
while(s<3)
begin
s= #10 s+1;
end
#40 s<=0;
#40 in<=in+1;
end
end
endmodule发布于 2018-07-04 23:05:27
$monitor系统任务仅在其一个输入更改时才输出一行。(不包括$time etc系统函数)。在30 no和70 no之间没有变化,因此$monitor没有输出任何行。
https://stackoverflow.com/questions/51176511
复制相似问题