Yra 4 4 февраля, 2005 Опубликовано 4 февраля, 2005 · Жалоба Для конфортной работы в тестбенчевском файле на Verilog не хватает транспортных задержек (чтобы задержанный на приличное время сигнал не поменял форму). Слышал, что режим транспортных задержек можно переключить в опциях командной строки симулятора, что не очень удобно (пользуюсь связкой ISE + Modelsim). Можно - ли управлять задержками с помощью каких- нибудь директив препроцессора. Буду рад любой информации по этому поводу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cyclop 0 24 февраля, 2005 Опубликовано 24 февраля, 2005 · Жалоба Для конфортной работы в тестбенчевском файле на Verilog не хватает транспортных задержек (чтобы задержанный на приличное время сигнал не поменял форму). Слышал, что режим транспортных задержек можно переключить в опциях командной строки симулятора, что не очень удобно (пользуюсь связкой ISE + Modelsim). Можно - ли управлять задержками с помощью каких- нибудь директив препроцессора. Буду рад любой информации по этому поводу. <{POST_SNAPBACK}> Модели 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, постите - отпишу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться