shems 0 31 мая, 2006 Опубликовано 31 мая, 2006 · Жалоба Вот фрагмент кода... always @(posedge sys_clk_i) begin if (sys_rst_i) bus_we <= #1 1'b0; addr<= #1 3'b000; else ...... bus_we <= #1 1'b1; addr<=#1 3'b010; ...... end Раньше "#1" использовали для корректной симуляции, даже в ModelSime. Все коды opencores написанны в этом стиле. ModelSim 6.1 нормально симулирует и без "#1". Возникает вопрос, стоит ли продолжать использожат "#1" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 31 мая, 2006 Опубликовано 31 мая, 2006 · Жалоба Такое делают для визуального удобства (при рассматривании сигналов) и больше ни для чего. По идее, такое присваивание дает избежать race condition, там, где неумелый разработчик их использовал, но имхо это порочный путь. Я еще иногда использую #1 из-за лени - когда быстро и невнимательно строчишь тестбенч, то можно легко получить совместно с тестируемым модулем этот самый race condition, чтобы избежать я в триггерах в модуле ставлю #1, а в тесбенче нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
daemonDX 0 1 июня, 2006 Опубликовано 1 июня, 2006 · Жалоба Не только для визуального удобства. К примеру, в ModelSim 6.0 для элементов FDDRSE (double-data rate flip-flop) некорректно отрабатывается вход CE. Для решения этой закавыки тож пришлось поставить one unit delay. Иначе получалось интересно - при назначении триггеру, отвечающему за CE блока из 8-ми FDDRSE по переднему фронту клока, единицы, все FDDRSE стартовали по этому же клоку. Вероятно, проблема зарыта в библиотеке Xilinx для ModelSim. Так что one unit delay все еще полезен в некоторых ситуациях Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 1 июня, 2006 Опубликовано 1 июня, 2006 · Жалоба Приветствую! Проблема эта скорее всего в глюках симулятора. Связанно это с неправильной отработкой дельта-циклов в симуляторе. Я переодически натыкался на такое в ActivHDL. Причем такое "неправильное" поведение сильно зависит от всего контекста симуляции. Бывает измениш пару цепей или тригер где то добавиш и удивляешся неоднозначной реакции . Правда в последнее время (ActivHDL 7.1) таких чудес стало гораздно меньше. В ModelSim такого вроде не замечал. Но в ModelSim я обычно гоняю большие проекты предварительно отлаженные по кускам в ActivHDL. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shems 0 7 июля, 2006 Опубликовано 7 июля, 2006 · Жалоба Приветствую! Проблема эта скорее всего в глюках симулятора. Связанно это с неправильной отработкой дельта-циклов в симуляторе. Я переодически натыкался на такое в ActivHDL. Причем такое "неправильное" поведение сильно зависит от всего контекста симуляции. Бывает измениш пару цепей или тригер где то добавиш и удивляешся неоднозначной реакции . Правда в последнее время (ActivHDL 7.1) таких чудес стало гораздно меньше. В ModelSim такого вроде не замечал. Но в ModelSim я обычно гоняю большие проекты предварительно отлаженные по кускам в ActivHDL. Удачи! Rob. Спасибо. Сам попробывал и убедился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться