Я пытаюсь запустить некоторый код с веб-сайта chipverify в Modelsim, и мой вывод отличается от веб-сайта.Пример с веб-сайта о слиянии событий.
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 simulator).Почему event_b не запускается при слиянии event_a и event_b?