shems 0 May 31, 2006 Posted May 31, 2006 · Report post Вот фрагмент кода... 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" ? Quote Share this post Link to post Share on other sites More sharing options...
Gate 2 May 31, 2006 Posted May 31, 2006 · Report post Такое делают для визуального удобства (при рассматривании сигналов) и больше ни для чего. По идее, такое присваивание дает избежать race condition, там, где неумелый разработчик их использовал, но имхо это порочный путь. Я еще иногда использую #1 из-за лени - когда быстро и невнимательно строчишь тестбенч, то можно легко получить совместно с тестируемым модулем этот самый race condition, чтобы избежать я в триггерах в модуле ставлю #1, а в тесбенче нет. Quote Share this post Link to post Share on other sites More sharing options...
daemonDX 0 June 1, 2006 Posted June 1, 2006 · Report post Не только для визуального удобства. К примеру, в ModelSim 6.0 для элементов FDDRSE (double-data rate flip-flop) некорректно отрабатывается вход CE. Для решения этой закавыки тож пришлось поставить one unit delay. Иначе получалось интересно - при назначении триггеру, отвечающему за CE блока из 8-ми FDDRSE по переднему фронту клока, единицы, все FDDRSE стартовали по этому же клоку. Вероятно, проблема зарыта в библиотеке Xilinx для ModelSim. Так что one unit delay все еще полезен в некоторых ситуациях Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 58 June 1, 2006 Posted June 1, 2006 · Report post Приветствую! Проблема эта скорее всего в глюках симулятора. Связанно это с неправильной отработкой дельта-циклов в симуляторе. Я переодически натыкался на такое в ActivHDL. Причем такое "неправильное" поведение сильно зависит от всего контекста симуляции. Бывает измениш пару цепей или тригер где то добавиш и удивляешся неоднозначной реакции . Правда в последнее время (ActivHDL 7.1) таких чудес стало гораздно меньше. В ModelSim такого вроде не замечал. Но в ModelSim я обычно гоняю большие проекты предварительно отлаженные по кускам в ActivHDL. Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
shems 0 July 7, 2006 Posted July 7, 2006 · Report post Приветствую! Проблема эта скорее всего в глюках симулятора. Связанно это с неправильной отработкой дельта-циклов в симуляторе. Я переодически натыкался на такое в ActivHDL. Причем такое "неправильное" поведение сильно зависит от всего контекста симуляции. Бывает измениш пару цепей или тригер где то добавиш и удивляешся неоднозначной реакции . Правда в последнее время (ActivHDL 7.1) таких чудес стало гораздно меньше. В ModelSim такого вроде не замечал. Но в ModelSim я обычно гоняю большие проекты предварительно отлаженные по кускам в ActivHDL. Удачи! Rob. Спасибо. Сам попробывал и убедился. Quote Share this post Link to post Share on other sites More sharing options...