Verilog всегда блокирует без списка чувствительности - PullRequest
0 голосов
/ 18 ноября 2018

будет ли блок always без списка чувствительности выводить комбинационную логику, точно так же, как always_comb или always @(*)? Например, код:

always begin
if (sig_a)begin
 @(posedge sig_b); // wait for a sig_b posedge event
 @(negedge sig_b); // then wait for a sig_b negedge event
 event_true=1;  
end

if (event_true)begin
  @((sig_c==1)&&(sig_a==0)); //wait for sig_a to deassert and sig_c assert event to be true
  yes =1;
 end
 else yes =0;

end

1 Ответ

0 голосов
/ 18 ноября 2018

Инструментам синтеза требуется особый стиль кодирования шаблонов для синтеза вашего кода.Большинство из них допускают только одно явное управление событиями в начале блока always.Некоторые из инструментов синтеза более высокого уровня, которые допускают множественные элементы управления событиями, допускают только многократные вхождения одного и того же фронта тактового сигнала.

Инструменты моделирования не имеют этих ограничений и будут пытаться выполнить любой допустимый синтаксис, который вы можете скомпилировать.Кстати, ваш @((sig_c==1)&&(sig_a==0)) означает, что выражение должно изменить значение, а не ждать, пока оно станет истинным.Конструкция wait(expr) означает ожидание, пока выражение не станет истинным.

...