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

Как коректнее подменить модельку в MS ...

ISE + ModelSim verilog.

Как коректнее подменить модель регистра из для определенного инстанса.

Смысл страданий.

Если "правильно" моделировать "синхронизатор" (два последовательных регистра), то возникает трабл с $setup. Можно в UCF для первого регистра поставить констрейн "ASYNC_REG", но хочется и по другому уметь ...

Теперь о деталях.

Не понятность в том чтоб в результирующем design_timesim.v для первого регистра использовалась моделька не из SIMPRIMS_VER библиотеки, а из компилируемой (поправленной из SIMPRIMS). Можно конечно ручками это творить, ну больно не удобно.

Посмотрел в сторону принципа работы с CoreGen, понял следующее: CoreGen-овские библиотеки используются только для "Simulate Behavioral Mode".

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

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


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

общий ответ, так как смотрю не налетают с конкретными советами :)

 

можно попробовать переопределить блок specify для данного модуля -

 

то есть описать этот регистр отдельно и ему

 

specify

вписать чтобы не нарушалось

$setup(...)

$hold(...)

либо вообще ничего не вписывать (вдруг затрет дефолтные)

endspecify

 

или ключи вызова синтезатора посмотреть - может там есть запрет на timing check по указанной цепи (в Verilog-XL вроде есть)

 

никогда не делал такого - всегда мусор сыпется :) а его потом разбирал (в *nix-е можно налету через | grep)

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


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

<то есть описать этот регистр отдельно и ему ...>

Так вот, я бы рад, его отдельно описать, но встает вопрос, как указать чтоб этому регистру бралась "левая модель"?

 

<или ключи вызова синтезатора посмотреть ...>

Смотрел для Sinplify, не нашел :(

 

А что такое "*nix"?

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


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

наверно при моделировании нетлиста так нельзя (я не понял при чем Simplify? ведь вопрос про симуляторы и сорри за мою описку) - так как specparam воздействует на все инстансы

 

*nix - типа Юних, Линух и прочие POSIX-ы

 

------------------------

 

ну вот взглянул доку (на моделсим :-) )

команд референс -

и вижу там команду

assertion pass

The assertion pass command configures simulator behavior in response to an assertion

pass

судя по описанию она позволяет запретить определенное сообщение (от выбраного элемента)

 

или вот

tcheck_set

 

вобщем надо разбираться :)

 

------------------

 

но кроме назойливых варнингов из синхронизаторов Х-ы лезут - может вторая команда это борет

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


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

<...я не понял при чем Simplify?...>

Подумал, может для Sinplify есть что то другое, чем ставить XSTшный ASYNC_REG. Похоже еще возникло и взаимное недопонимание из-за терминов, в голову не приходило что ModelSim то же можно назвать "синтезатор".

 

<команд референс -

и вижу там команду

assertion pass

The assertion pass command configures simulator behavior in response to an assertion

pass

судя по описанию она позволяет запретить определенное сообщение (от выбраного элемента)

 

или вот

tcheck_set

>

У Вас какой MS?

У меня 5.7.с, таких команд нет :(

Есть просто ключи, но они позволяют только глобально отключить ошибки и т.п.

Есть +nowarm<code>, отключающий не нужные варнинги, но при нарушении $setup, появляется ошибка :(

 

<но кроме назойливых варнингов из синхронизаторов Х-ы лезут - может вторая команда это борет >

Не понял, когда ставиш ASYNC_REG, X-ы уже не лезут.

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


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

ключи, но они позволяют только глобально отключить ошибки и т.п.

Есть +nowarm<code>, отключающий не нужные варнинги, но при нарушении $setup, появляется ошибка :(

 

Не понял, когда ставиш ASYNC_REG, X-ы уже не лезут.

 

это не ключи, это команды tcl скрипта (то, что XST любит расширением .do называть, но вроде для тайм-чека есть и какие-то ключи)

а симулятор прямо из местного ftp

ну и для полной ясности - когда я назвал ModelSim синтезатором - я описАлся (переклинило слегка)

 

а про то что Х-не лезут - понять не могу - ведь задача $setup, $hold кроме генерации текста - сбрасывают триггер в Х (другое дело, что при правильной разводке этот Х никуда не пролезет, но кроме правильной лично я часто применяю и "неправильную" - лишь бы работало)

 

но мое мнение по теме не изменилось - фильтровать выход, а не пытаться накрутить мозги симулятору

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


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

<а про то что Х-не лезут - понять не могу - ведь задача $setup, $hold кроме генерации текста - сбрасывают триггер в Х (другое дело, что при правильной разводке этот Х никуда не пролезет, но кроме правильной лично я часто применяю и "неправильную" - лишь бы работало)

 

но мое мнение по теме не изменилось - фильтровать выход, а не пытаться накрутить мозги симулятору>

Что то мы с Вами где то не стыкуемся ;)

Если в ISE приклеить к инстансу ASYNC_REG и подавать не него данные "как попало" симулятор пишет в логе ошибку , а времянку строит правильно (без Х).

До настоящего времени, при анализе "синхронизаторов" приходилось следить за временем появления данных на входе, иначе один появившийся Х, рушил все.

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


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

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

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

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

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

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

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

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

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

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