我正在尝试显示时间。但是它返回值0。怎么了?
代码:
module hello_world;
integer in_reg;
initial
begin
in_reg = 3'd2;
$monitor($time, " In register value = %b\n",in_reg[2:0]);
end
endmodule
输出:
0在寄存器值= 010
答案 0 :(得分:2)
没有错。当$monitor
语句输出其行时,模拟时间为0。
我猜您知道,$monitor
会在任何输入更改时输出一行。但是,它不会在$ time内执行此操作,因为这样做没有任何意义。 (何时输出一条线?每隔ns?每隔ps?每隔fs?)
因此,您的代码将in_reg
设置为3'd2
,然后$monitor
进行显示。然后模拟完成。什么也没发生。
答案 1 :(得分:0)
尝试一下,下面的代码每10ns会打印10次in_reg内容,模拟时间将显示为10,20,...等
`timecale 1ns/1ps
module hello_world;
integer in_reg;
initial
begin
in_reg = 3'd2;
repeat(10)
begin
#10;
$display($time, " In register value = %b\n",in_reg);
end
end
endmodule