Перейти к содержанию
    

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

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

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

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

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

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 minutes ago, new123 said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, RobFPGA said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, RobFPGA said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, KeisN13 said:

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, new123 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, RobFPGA said:

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

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

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 hours ago, new123 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 minutes ago, nice_vladi said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, new123 said:

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

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

3 hours ago, new123 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

33 minutes ago, RobFPGA said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, new123 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...