я шел через SV LRM section 9.3.2 и получил это сомнение, я вставив пример ниже для справкиможет кто-то объяснить fork и loop в системном verilog?
for(int j=1; j <=3; ++j)
fork
automatic int k = j;
begin
.... # use k here
end
join_none
Может кто-нибудь объяснить мне, что на самом деле происходит?
Что произойдет, если я переместю переменную
automatic
за пределы вилки?for(int j=1; j <=3; ++j) begin automatic int k = j; fork begin .... # use k here end join_none end
Что произойдет, если я переведу петлю внутри вилки?
fork for(int j=1; j <=3; ++j) begin automatic int k = j; begin .... # use k here end end join_none
Спасибо заранее.
Чтобы получить представление о том, что происходит, модифицирует пример в LRM и запустить моделирование: 'Ок $ записи ("% 0D", к),' 'на # (4-к) $ display ("k:% 0d j:% 0d", k, j); '. Вы заметите, что порядок 'k' является почитанием из примера в LRM и что' j' одинаково в каждом экземпляре. Не существует правильного значения для 'j', поскольку оно не определено для LRM, поэтому разные тренажеры могут отображать другое значение. – Greg