Jump to content

    
new123

Modelsim/Questa timing simulation, 1'hX значение

Recommended Posts

Форумчане, день добрый.

Подскажите кто знает, в чем причина, что у регистров 1'hX значение постоянно?
Что уже сделал:
1) Прочитал и на форуме и вообще на форумах, что могут быть слаки. Поставил опцию +no_notifier
2) Думал, вдруг может надо все таки проинициализировать на старте, не помогло.
3) Думал, может в резете обработать еще инициализацию, не помогло.
 

Присваиваю значения, вижу их в wave, но на следующем такте опять 1'hX (причем не у всех)

Заранее спасибо за подсказки

Edited by new123

Share this post


Link to post
Share on other sites

Еще читал, что это может быть из за latch, но как их выявить, ума не приложу. 
Думал, может в TA выявить путь сам на себя from reg[0] to reg[0], но от этого поведение у путей вроде не зависит.

Edited by new123

Share this post


Link to post
Share on other sites
43 minutes ago, new123 said:

Присваиваю значения, вижу их в wave, но на следующем такте опять 1'hX (причем не у всех)

Заранее спасибо за подсказки

X-ы возникают либо от неинициализированных переменных (регистров, памяти) либо например из за случаного микса двух и или более выходов с разными значениями 0 и 1. Чтобы отследить откуда это черт X лезет надо фактически пройти по пути входа данных для регистра в котром вы увидели X.  В Modelsim/Questa есть режим просмотра дизайна который позволяет отследить источник возникновения X-а. В том же Dataflow viewer например.  

Share this post


Link to post
Share on other sites
10 minutes ago, RobFPGA said:

Чтобы отследить откуда это черт X лезет надо фактически пройти по пути входа данных для регистра в котром вы увидели

да, спасибо, тоже подумал, уже начал всякие Mux на пути смотреть

Share this post


Link to post
Share on other sites
2 hours ago, RobFPGA said:

В Modelsim/Questa есть режим просмотра дизайна который позволяет отследить источник возникновения X-а. В том же Dataflow viewer например

спасибо, сейчас поковыряю, а то я как то в нетлисте уже запутался

Share this post


Link to post
Share on other sites
8 hours ago, KeisN13 said:

Посмотрите што присвоение значени идёт только из одного места

ну вот у меня огромный вектор, ну пусть будет на 100 бит. Ему значение действительно присваиваются в нескольких местах, в зависимости от условий. При этом некоторые биты падают в X, некоторые держатся нормально после присвоения. 

есть и другие векторы, где в зависимости от условий присваиваются в разных местах, но с ними вообще проблем нет.

 

Пока что выяснил, что массово ноги растут от FIFO, она дает много X. Но как ее проинициализировать, пока еще не вычитал.

Share this post


Link to post
Share on other sites
On 12/30/2021 at 3:46 PM, RobFPGA said:

В том же Dataflow viewer например.  

Роб, если будет минутка. Прошу консультации )

Отрыл я источник 1'hX, спасибо, пришлось разобрать на косточки вот такую схему, закинуть сигналы в wave прямиком из нет листа и сидеть ковырять, кто же в итоге дал 1'hX. Опыту конечно мне это прибавило, но хотел еще спросить. А Dataflow может автоматизировать этот процесс, чтобы на это ушло пару минут макс? Или не стоит убивать время разбираться?

 

Это я только начал timing simulation, а учитывая то, что у меня проект ну никак не готов к такому (банально нет даже инициализации регистров), я просто умру в вычислении 1'hX далее. Я не знал, что сигнал черти от куда может влиять на такой итог.

2022-01-06_19-32.png

Edited by new123

Share this post


Link to post
Share on other sites
5 hours ago, new123 said:

А Dataflow может автоматизировать этот процесс, чтобы на это ушло пару минут макс? Или не стоит убивать время разбираться?

Увы, я таким мало занимался. Как то особой необходимости автоматизировать такой процесс не возникало.  :unknw:  

Share this post


Link to post
Share on other sites
9 hours ago, RobFPGA said:

Увы, я таким мало занимался. Как то особой необходимости автоматизировать такой процесс не возникало.  :unknw:  

а я послушался квартуса, он мне порекомендовал убрать инициализации и поставить Ignore Register Power-Up Initialization для лучшей времянки. Теперь вот хапнул по полной

Edited by new123

Share this post


Link to post
Share on other sites
15 hours ago, new123 said:

А Dataflow может автоматизировать этот процесс, чтобы на это ушло пару минут макс? Или не стоит убивать время разбираться?

Не уверен, что попаду в тему, но:
У квесты/модельсима есть замечательные ключики запуска +initreg+0 +initmem+0. Они позволяют избавиться от части таких вот неопределенных состояний регистров при запуске симуляции.

Share this post


Link to post
Share on other sites
53 minutes ago, nice_vladi said:

есть замечательные ключики запуска +initreg+0 +initmem+0.

надо же, все стало гораздо лучше. Не сразу понял, что надо юзать с vlog, а не с vsim. Жалко только, что пока фифошки нулями не забило. Спасибо.

Share this post


Link to post
Share on other sites
4 hours ago, new123 said:

а я послушался квартуса, он мне порекомендовал убрать инициализации и поставить Ignore Register Power-Up Initialization для лучшей времянки. Теперь вот хапнул по полной

Это  немного не то -  это  вроде  значит что Qu просит дать возможность ему самому выбирать начальный уровень (0 или 1) регистра при оптимизации. Или  если например  начальное значение не соответствует значению по сбросу. Это  позволяет например избавится от  лишнего инвертора на входе или выходе.
 

3 hours ago, new123 said:

надо же, все стало гораздо лучше. Не сразу понял, что надо юзать с vlog, а не с vsim. Жалко только, что пока фифошки нулями не забило. Спасибо.

Глобальная инициализация в симе просто маскирует проблему. Если  поведение дизайна  зависит от начальных  значение после загрузки, и эти значения частично или полностью не устанавливаются по сбросу то это, IMHO, нехорошие проблемы в дизайне.        

Share this post


Link to post
Share on other sites
33 minutes ago, RobFPGA said:

Глобальная инициализация в симе просто маскирует проблему

пока что на текущем этапе 1'hX дает не инициализированные регистры и фифошки, которые постоянно выдают 1'hx и всех от нее цепей.

+initreg+0 помог мне не иницилизировать кучу регистров.
а вот почему фифошки не работают, пока не знаю. Пока что спасаюсь тем, что делаю force (нулями) на их выходе, но на этом я долго не уеду

Share this post


Link to post
Share on other sites
Just now, new123 said:

пока что на текущем этапе 1'hX дает не инициализированные регистры и фифошки, которые постоянно выдают 1'hx и всех от нее цепей.

Для шины  данных X-ы это  понятно.  А вот сигналы управления FIFO (указатели, флаги, valid, ...) должны сбрасывается по внешнему ресету. А без валидных сигналов управления X-ы на шине данных не должны влиять на  последующую логику. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.