Синтез "всегда" блоков

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

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

2 ответа

Решение

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

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

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

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

Более двух часов не синтезируются.

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

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

always @* begin
 $display("%t", $realtime);
 #1 x = y;                  //Delayed by 1 time unit
 $display("%t", $realtime);
end 
Другие вопросы по тегам