在下面的Verilog测试平台代码中,我得到了从时间= 0到时间= 30的监视器输出,但是在那之后,我没有得到直到时间= 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
答案 0 :(得分:0)
$monitor
系统任务仅在其输入之一改变时才输出一行。 (不包括$time
等系统功能)。在30ns至70ns之间没有任何变化,因此$monitor
不会输出任何行。