Зачем устанавливать задержки в Verilog даже для некоторого простого назначения?

Я обнаружил, что в некоторых версиях Verilog обычно бывает много задержек, даже если на каком-то простом заявлении, например ниже. Какова основная причина такой задержки?

cmd <= #'DEL 32'b0
3 ответа

Ваш код не VHDL, или любой другой язык, о котором я знаю. Предположительно, это был Верилог. При нормальном использовании вы не выполняете много спецификаций ручной задержки на любом языке, а исходный код с задержками в нем автоматически генерируется инструментами, которые записывают требуемые задержки (но обычно не с такими задержками). Однако в более раннем исходном коде Verilog вы часто видите большое количество спецификаций задержки "# 0", поскольку модель планирования была исторически нарушена.


Для проверки уровня ворот я хотел бы надеяться, что библиотека, используемая для синтеза, была охарактеризована, и соответствующие задержки добавлены к компонентам базового уровня. Что будет использоваться вместо RTL в симуляции. В Verilog не должно быть необходимости добавлять задержки, подобные этой RTL.

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


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

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

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

licensed under cc by-sa 3.0 with attribution.