合并事件不会同时触发这两个事件
Merging events doesn't trigger both events
我正在尝试 运行 在 Modelsim 中从 chipverify 网站获取一些代码,但我的输出与网站上的不同。来自网站的示例是关于事件合并的。
module tb;
// Create event variables
event event_a, event_b;
initial begin
fork
// Thread1: waits for event_a to be triggered
begin
wait(event_a.triggered);
$display ("[%0t] Thread1: Wait for event_a is over", $time);
end
// Thread2: waits for event_b to be triggered
begin
wait(event_b.triggered);
$display ("[%0t] Thread2: Wait for event_b is over", $time);
end
// Thread3: triggers event_a at 20ns
#20 ->event_a;
// Thread4: triggers event_b at 30ns
#30 ->event_b;
// Thread5: Assigns event_b to event_a at 10ns
begin
#10 event_b = event_a;
end
join
end
endmodule
我希望网站上的输出是这样的:
[20] Thread1: Wait for event_a is over
[20] Thread2: Wait for event_b is over
但是我得到的是这样的:
[20] Thread1: Wait for event_a is over
同样的结果是当我尝试在 edaplayground(aldec riviera pro 或 icarus verilog 模拟器)上 运行 这段代码时。为什么event_a和event_b合并时没有触发event_b?
LRM 在这里有点含糊不清。如果您在 EDAPlayground 上多尝试一种工具,您会得到不同的结果。
尚不清楚写入事件句柄是否会导致触发方法 re-evaluation。
有关问题的描述,请参阅 this link。
我正在尝试 运行 在 Modelsim 中从 chipverify 网站获取一些代码,但我的输出与网站上的不同。来自网站的示例是关于事件合并的。
module tb;
// Create event variables
event event_a, event_b;
initial begin
fork
// Thread1: waits for event_a to be triggered
begin
wait(event_a.triggered);
$display ("[%0t] Thread1: Wait for event_a is over", $time);
end
// Thread2: waits for event_b to be triggered
begin
wait(event_b.triggered);
$display ("[%0t] Thread2: Wait for event_b is over", $time);
end
// Thread3: triggers event_a at 20ns
#20 ->event_a;
// Thread4: triggers event_b at 30ns
#30 ->event_b;
// Thread5: Assigns event_b to event_a at 10ns
begin
#10 event_b = event_a;
end
join
end
endmodule
我希望网站上的输出是这样的:
[20] Thread1: Wait for event_a is over
[20] Thread2: Wait for event_b is over
但是我得到的是这样的:
[20] Thread1: Wait for event_a is over
同样的结果是当我尝试在 edaplayground(aldec riviera pro 或 icarus verilog 模拟器)上 运行 这段代码时。为什么event_a和event_b合并时没有触发event_b?
LRM 在这里有点含糊不清。如果您在 EDAPlayground 上多尝试一种工具,您会得到不同的结果。
尚不清楚写入事件句柄是否会导致触发方法 re-evaluation。
有关问题的描述,请参阅 this link。