Я пытаюсь реализовать вилы присоединиться Verilog код, но что-то не так:Что именно параллельная вилка соединяется параллельно?
reg [7:0] a, b;
initial fork
a = 0; // initial
b = 0; // initial
#1 a = 1;
#1 b = a + 1; // is b 1 or 2?
join
Приведенный выше код сбивает с толку, потому что b
очень расплывчатое значение. Как я знаю, соединение вилки работает как параллельное, поэтому я считаю, что b
должен быть 1. Я прав?
Мой результат моделирования состоит в том, что «b'is 2 не 1. Но, по моему мнению, это должно быть 1. Потому что a пока не 1.
Я хотел бы сделать пример кода вроде этого.
Initial
$display("initial time = %d", $time);
Fork
#1000 $display("spend time = %d at #1000", $time);
#5 $display("spend time = %d at #5", $time);
#50 $display("spend time = %d at #50", $time);
join
$display("main process time = %d", $time);
end
, тогда я получил это как следующее. начальное время 0 провести время 5 время тратить 50 время тратить 1000 основное время процесса 1000
так из этого эксперимента, я получил его о вилке присоединиться.
Так что я пробую еще один такой.
Initial begin
'Ifdef FK
fork
'endif
$display ("initial time %d , $time);
a<=0;
b<=0;
#100 a<=1;
#100 b<=a+1;
'Ifdef FK
join
'Endif
$display ("the output a,b %d %d time %d, a,b, $time);
End
В результате, как этого 0, 0, 100 Кроме того, когда от FK 1, 0, 200 Но я не понимаю, выше результата. Почему у них есть 0,0 100 и 1,0 200?
Что вы получаете, когда вы его имитации? – Morgan