Влияет ли задержка времени в блоке последовательной логической схемы на синтез или место или результат маршрута?

Я использую Xilinx ISE в качестве IDE. Если я добавлю задержку 100 пс при каждом назначении в всегда (Verilog)/ процессе (VHDL) с чувствительным списком, только часы и сброс. Как это.

always@(posedge clk)
    if(rst)
      a <= #100 'd0;
    else
      a <= #100 b;
    end 

Я думаю, что функция задержки влияет только на процесс моделирования. Потому что каждая книга и руководство пользователя говорят нам delay не синтезируется.

Но мне все еще интересно, может ли функция задержки действительно влиять на место или результат маршрута? Как статическое время или отчет о часах? Как может сделать схему максимальной частоты выше или медленнее?

4 ответа

Решение

Вы правы в том, что в заявлениях о задержке нет ничего внутреннего, что делает их несинтезируемыми, однако делать это крайне непрактично. Причина этого заключается в том, что однажды на ПЛИС вы имеете дело с физической схемой, производительность которой зависит от PVT (процесс, напряжение, температура) и может сделать это во многом! Единственным препятствием против этого будет аналоговая схема, которая пытается ощутить все вышеперечисленное и соответствующим образом настроить себя. Такой зверь все еще будет ограничен в том, что он может делать, и будет физически большим и потреблять энергию в зависимости от ярости задержки и дисперсии во всем вышеперечисленном, что вы хотите поддержать.

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

Нет, #delay в вашем коде не повлияет на время проектирования, когда он загружен в FPGA.

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

Задержка заявления (#100) обычно игнорируются во время синтеза в Verilog. Таким образом, в синтезе это так же, как:

always@(posedge clk)
    if(rst)
      a <= 0;
    else
      a <= b;
    end 

Руководство по синтезу и симуляции Xlinx гласит:

Задержки в синтезе кода

Не используйте в вашем коде операторы Wait for XX ns (VHDL) или #XX (Verilog). (...) Это утверждение не объединяется с компонентом. В проектах, которые включают эту конструкцию, функциональность имитированного проекта не всегда совпадает с функциональностью синтезированного проекта.

(...)

Дождаться XX нс Пример кода Verilog

#XX;

Не используйте утверждение After XX ns в своем коде VHDL или назначение Delay в своем коде Verilog

(...)

Пример кодирования Verilog для Delay Assignment

assign #XX Q=0;

XX указывает количество наносекунд, которые должны пройти перед выполнением условия. Это утверждение обычно игнорируется инструментом синтеза. В этом случае функциональность моделируемого проекта не соответствует функциональности синтезированного проекта.

"Обычно" не влияет на результаты синтеза и P&R.

Xilinx: Это утверждение обычно игнорируется инструментом синтеза.

Когда это оказывает влияние тогда?

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

Если в коде присутствует оператор задержки, ожидается следующее предупреждение от Xilinx ISE:

ВНИМАНИЕ:Xst:916 - design.v строка x: Задержка игнорируется для синтеза.

Другие вопросы по тегам