Перейти к содержанию
    

Транспортные задержки в Verilog

Для конфортной работы в тестбенчевском файле на Verilog не хватает транспортных

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для конфортной работы в тестбенчевском файле на Verilog  не хватает транспортных

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

Модели Verilog могут содержать распределённые и маршрутные (path delays) задержки.

Задержки примитивов,UDP и непрерывного назначения (assign) - это распределённые задержки, в то время, как задержки от порта к порту, определяемые в specify блоках, - это маршрутные задержки. Большинство Verilog секций используют исключительно марш. задержки, с установкой распределённых задержек в нуль. Если в модуле содержатся и распределённые и маршрутные задержки, тогда для каждого маршрута выбирается большая из них. Несмотря на это правило, вы можете задавать другие режимы для задержек, используя директивы компилятора или опции команды vlog в ModelSim. Для этого предусмотрены 4 директивы (и соответствующие опции):

`delay_mode_distributed - марш. задержки specify блоков игнорируются в пользу распределённых задержек;

`delay_mode_path - в любых модулях, содержащих марш. задержки, распределённые задержки устанавливаются в нуль;

`delay_mode_unit - распределённые задержки устанавливаются в значение, задаваемое величиной time_unit в директиве `timescale, а марш. задержки specify блоков и временные констрейны игнорируются;

`delay_mode_zero - распределённые задержки устанавливаются в нуль, а марш. задержки specify блоков и временные констрейны игнорируются.

Теперь о транспортных и инерциальных задержках.

Маршрутные задержки по умолчанию - инерциальные, но могут управляться с помощью опций команды vsim ModelSim; предусматривается перевод их в транспортные, либо без перевода, но с заданием процентного соотношения между величиной задержки и длительностью пропускаемого (не поглощаемого) задержкой импульса, например опция +pulse_r/<percent>.

Опция +transport_path_delays переводит марш. задержки (по умолчанию инерциальные) в режим транспортных; при этом примитивы всегда работают в режиме инерциальных задержек. Подобных опций наберётся с десяток и User's Manual детально описывает каждую.

По поводу задания опций.

Можно посоветовать создать несколько do-файлов с различными опциями команды vsim в части задержек, либо без них. После вызова ModelSim из ISE повторите симуляцию проекта, оставаясь в ModelSim, но с новым do-файлом, введя команду do path/name.do в окне ModelSim, где path - путь к нужному name.do файлу.

P.S. Если есть затруднения по созданию do-файлов под ISE, постите - отпишу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...