为什么即使我没有更改其值,模拟器也会触发?

问题描述 投票:0回答:1

我尝试用一个简单的例子来描述我的问题;请参考以下代码:

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)
?没有其他代码改变它的值,所以我很困惑。

verilog system-verilog
1个回答
0
投票

这可能是您使用的模拟器中的错误。我在EDA Playground上运行代码,4个模拟器都没有显示

0 wire after!
。只有 Cadence 模拟器会显示它。

© www.soinside.com 2019 - 2024. All rights reserved.