Синтез «всегда» блоков - PullRequest
1 голос
/ 02 апреля 2012

Справочное руководство Verilog Golden на стр. 12 предупреждает о несинтезируемых блоках always и дает шаблоны, которым следует следовать, чтобы уменьшить вероятность непреднамеренного создания несинтезируемых блоков always. Однако в руководстве не объясняется, почему и в каких ситуациях блок always не может быть синтезирован.

Каковы наиболее распространенные причины невозможности синтеза блока always?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2012

В основном каждый всегда блок описывает группу триггера, группу защелок или блок комбинационной схемы.

Эти три имеют разные форматы кодирования и не должны смешиваться, иначе это может не произойтибыть синтезируемым.(иногда защелки и комбинации схемы и должны быть смешаны, но их следует избегать)

Любые всегда блоки, которые не могут быть сопоставлены с этими тремя типами цепей, не могут быть синтезированы.

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

Более двух тактов не могут быть синтезированы.

Встроенные блоки всегдане синтезируется.

1 голос
/ 04 апреля 2012

Добавление временных задержек не будет синтезируемым, но часто используется при проверке. Также некоторые инструменты будут жаловаться, если вы попытаетесь синтезировать операторы отображения.

always @* begin
 $display("%t", $realtime);
 #1 x = y;                  //Delayed by 1 time unit
 $display("%t", $realtime);
end 
...