我尝试用一个简单的例子来描述我的问题;请参考以下代码:
wire test_wire;
logic test_logic;
initial begin
fork
begin
$display($time, "wire before!");
@(test_wire);
$display($time, "wire after!");
end
begin
$display($time, "logic before!");
@(test_logic)
$display($time, "logic after!");
end
join_none
end
我认为默认情况下,
wire
被分配为高z,logic
被分配为x,我故意没有为此wire
和logic
做任何分配,因为我想了解差异.
但是,我发现模拟会打印如下:
0 wire before!
0 logic before!
0 wire after!
我想问为什么模拟器只在零时间触发
@(test_wire)
?没有其他代码改变它的值,所以我很困惑。
这可能是您使用的模拟器中的错误。我在EDA Playground上运行代码,4个模拟器都没有显示
0 wire after!
。只有 Cadence 模拟器会显示它。