new123 0 Posted December 30, 2021 (edited) · Report post Форумчане, день добрый. Подскажите кто знает, в чем причина, что у регистров 1'hX значение постоянно? Что уже сделал: 1) Прочитал и на форуме и вообще на форумах, что могут быть слаки. Поставил опцию +no_notifier 2) Думал, вдруг может надо все таки проинициализировать на старте, не помогло. 3) Думал, может в резете обработать еще инициализацию, не помогло. Присваиваю значения, вижу их в wave, но на следующем такте опять 1'hX (причем не у всех) Заранее спасибо за подсказки Edited December 30, 2021 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted December 30, 2021 (edited) · Report post Еще читал, что это может быть из за latch, но как их выявить, ума не приложу. Думал, может в TA выявить путь сам на себя from reg[0] to reg[0], но от этого поведение у путей вроде не зависит. Edited December 30, 2021 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted December 30, 2021 · Report post 43 minutes ago, new123 said: Присваиваю значения, вижу их в wave, но на следующем такте опять 1'hX (причем не у всех) Заранее спасибо за подсказки X-ы возникают либо от неинициализированных переменных (регистров, памяти) либо например из за случаного микса двух и или более выходов с разными значениями 0 и 1. Чтобы отследить откуда это черт X лезет надо фактически пройти по пути входа данных для регистра в котром вы увидели X. В Modelsim/Questa есть режим просмотра дизайна который позволяет отследить источник возникновения X-а. В том же Dataflow viewer например. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted December 30, 2021 · Report post 10 minutes ago, RobFPGA said: Чтобы отследить откуда это черт X лезет надо фактически пройти по пути входа данных для регистра в котром вы увидели да, спасибо, тоже подумал, уже начал всякие Mux на пути смотреть Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted December 30, 2021 · Report post 2 hours ago, RobFPGA said: В Modelsim/Questa есть режим просмотра дизайна который позволяет отследить источник возникновения X-а. В том же Dataflow viewer например спасибо, сейчас поковыряю, а то я как то в нетлисте уже запутался Quote Ответить с цитированием Share this post Link to post Share on other sites
KeisN13 0 Posted December 31, 2021 · Report post Да наверняка там два драйвера на одном сигнале. Посмотрите што присвоение значени идёт только из одного места Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted December 31, 2021 · Report post 8 hours ago, KeisN13 said: Посмотрите што присвоение значени идёт только из одного места ну вот у меня огромный вектор, ну пусть будет на 100 бит. Ему значение действительно присваиваются в нескольких местах, в зависимости от условий. При этом некоторые биты падают в X, некоторые держатся нормально после присвоения. есть и другие векторы, где в зависимости от условий присваиваются в разных местах, но с ними вообще проблем нет. Пока что выяснил, что массово ноги растут от FIFO, она дает много X. Но как ее проинициализировать, пока еще не вычитал. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted January 6 (edited) · Report post On 12/30/2021 at 3:46 PM, RobFPGA said: В том же Dataflow viewer например. Роб, если будет минутка. Прошу консультации ) Отрыл я источник 1'hX, спасибо, пришлось разобрать на косточки вот такую схему, закинуть сигналы в wave прямиком из нет листа и сидеть ковырять, кто же в итоге дал 1'hX. Опыту конечно мне это прибавило, но хотел еще спросить. А Dataflow может автоматизировать этот процесс, чтобы на это ушло пару минут макс? Или не стоит убивать время разбираться? Это я только начал timing simulation, а учитывая то, что у меня проект ну никак не готов к такому (банально нет даже инициализации регистров), я просто умру в вычислении 1'hX далее. Я не знал, что сигнал черти от куда может влиять на такой итог. Edited January 6 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted January 6 · Report post 5 hours ago, new123 said: А Dataflow может автоматизировать этот процесс, чтобы на это ушло пару минут макс? Или не стоит убивать время разбираться? Увы, я таким мало занимался. Как то особой необходимости автоматизировать такой процесс не возникало. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted January 7 (edited) · Report post 9 hours ago, RobFPGA said: Увы, я таким мало занимался. Как то особой необходимости автоматизировать такой процесс не возникало. а я послушался квартуса, он мне порекомендовал убрать инициализации и поставить Ignore Register Power-Up Initialization для лучшей времянки. Теперь вот хапнул по полной Edited January 7 by new123 Quote Ответить с цитированием Share this post Link to post Share on other sites
nice_vladi 0 Posted January 7 · Report post 15 hours ago, new123 said: А Dataflow может автоматизировать этот процесс, чтобы на это ушло пару минут макс? Или не стоит убивать время разбираться? Не уверен, что попаду в тему, но: У квесты/модельсима есть замечательные ключики запуска +initreg+0 +initmem+0. Они позволяют избавиться от части таких вот неопределенных состояний регистров при запуске симуляции. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted January 7 · Report post 53 minutes ago, nice_vladi said: есть замечательные ключики запуска +initreg+0 +initmem+0. надо же, все стало гораздо лучше. Не сразу понял, что надо юзать с vlog, а не с vsim. Жалко только, что пока фифошки нулями не забило. Спасибо. Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted January 7 · Report post 4 hours ago, new123 said: а я послушался квартуса, он мне порекомендовал убрать инициализации и поставить Ignore Register Power-Up Initialization для лучшей времянки. Теперь вот хапнул по полной Это немного не то - это вроде значит что Qu просит дать возможность ему самому выбирать начальный уровень (0 или 1) регистра при оптимизации. Или если например начальное значение не соответствует значению по сбросу. Это позволяет например избавится от лишнего инвертора на входе или выходе. 3 hours ago, new123 said: надо же, все стало гораздо лучше. Не сразу понял, что надо юзать с vlog, а не с vsim. Жалко только, что пока фифошки нулями не забило. Спасибо. Глобальная инициализация в симе просто маскирует проблему. Если поведение дизайна зависит от начальных значение после загрузки, и эти значения частично или полностью не устанавливаются по сбросу то это, IMHO, нехорошие проблемы в дизайне. Quote Ответить с цитированием Share this post Link to post Share on other sites
new123 0 Posted January 7 · Report post 33 minutes ago, RobFPGA said: Глобальная инициализация в симе просто маскирует проблему пока что на текущем этапе 1'hX дает не инициализированные регистры и фифошки, которые постоянно выдают 1'hx и всех от нее цепей. +initreg+0 помог мне не иницилизировать кучу регистров. а вот почему фифошки не работают, пока не знаю. Пока что спасаюсь тем, что делаю force (нулями) на их выходе, но на этом я долго не уеду Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted January 7 · Report post Just now, new123 said: пока что на текущем этапе 1'hX дает не инициализированные регистры и фифошки, которые постоянно выдают 1'hx и всех от нее цепей. Для шины данных X-ы это понятно. А вот сигналы управления FIFO (указатели, флаги, valid, ...) должны сбрасывается по внешнему ресету. А без валидных сигналов управления X-ы на шине данных не должны влиять на последующую логику. Quote Ответить с цитированием Share this post Link to post Share on other sites