реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Временное моделирование, странности в работе
Alexandr
сообщение May 14 2005, 09:43
Сообщение #1


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



Использую ISE 6.3 и ModelSim 5.8
Проблема вот в чем. Написал код на VHDL. Провел функциональное моделирование. Все нормально. Запускаю временное (которое Simulate Post-Place & Route VHDL Model) и в некоторых местах появляются красные полоски вместо сигналов. По их месту и характеру понимаю, что пропадает один импульс. Ввожу дополнительный контакт в порт, подключаю его к этой цепи, чтобы посмотреть когда он пропадает И..... Все нормально работает, все красные линии исчезают и критическая цепь выглядит как надо. Убираю контакт из порта - все как прежде не работает. Что делать? Ваше мнение.


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 14 2005, 10:15
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



От того, что некая цепь то появится, то исчезнет, меняется временная картина внутри кристалла. Если всего лишь один провод так влияет, то надо что-то исправлять в кон^H^H^Hдизайне.
Go to the top of the page
 
+Quote Post
vetal
сообщение May 14 2005, 10:19
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



'X' обычно проявляются когда проблеммы с начальными условиями(set,reset e.t.c.).
Go to the top of the page
 
+Quote Post
Alexandr
сообщение May 14 2005, 11:59
Сообщение #4


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



Не поверите - дело оказалось вот в чем. В проекте есть несколько процессов, все синхронные, тактируются одним CLK. Однако часть процессов для удобства работают по переднему фронту CLK, часть по заднему. Сделал все процессы по переднему и все заработало wacko.gif . Видимо это какое-то ограничение ISE или ModelSim, потому как более ничего не менял. Может кто объяснит в чем дело?


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Кнкн
сообщение May 14 2005, 12:25
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 646
Регистрация: 21-06-04
Пользователь №: 71



Цитата(Alexandr @ May 14 2005, 14:59)
. Однако часть процессов для удобства работают по переднему фронту CLK, часть по заднему. Сделал все процессы по переднему и все заработало 
*


В общем и целом, при тактировании от одного фронта запас
временной устойчивости схемы больше - может дело в этом ?
Go to the top of the page
 
+Quote Post
vetal
сообщение May 14 2005, 12:41
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



В этом случае должны быть произвольные значения(гонки),но не 'X'.

Alexandr:
Если не сложно попробуйте 2 оставшихся варианта: все по срезу и с точностью до наоборот базовой версии.
Go to the top of the page
 
+Quote Post
Кнкн
сообщение May 14 2005, 13:17
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 646
Регистрация: 21-06-04
Пользователь №: 71



Цитата(vetal @ May 14 2005, 15:41)
В этом случае должны быть произвольные значения(гонки),но не 'X'.
*


Модели триггеров могут проверять нарушения
hold/setup и реагировать на них выдачей 'X'
Это, конечно, зависит от библиотеки.
Алтеровская так делает, а как у Xilinx не знаю.
Go to the top of the page
 
+Quote Post
3.14
сообщение May 14 2005, 13:44
Сообщение #8


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



У Xilinx точно так же (симулируем то наверное в одном и том же).

Если моделируете в VHDL, можно выключить детектор метастабильности (ключики ModelSim), правда весь проект не будет анализироваться на метастабильность.
Если Verilog, тогда надо прикручивать констрейн ASYNC_REG к "проблемным" регистрам.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
Alexandr
сообщение May 14 2005, 13:50
Сообщение #9


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



To vetal
Попробовал тактировать все по заднему фронту. sad.gif Красные линии появились практически во всех цепях. Аж страшно стало.
Поменял местами в базовой версии передние и задние фронты. Глюк не исчез, но переместился с одной цепи на другую, однако надо отдать должное общая работоспособность проекта восстановилась.

To 3.14
Цитата
Если моделируете в VHDL, можно выключить детектор метастабильности (ключики ModelSim), правда весь проект не будет анализироваться на метастабильность.


Использую VHDL. А как выключить детектор метастабильности, можно поподробнее?


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
3.14
сообщение May 14 2005, 14:06
Сообщение #10


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Ищите галку "Global disable of X-generation for simulation" в настройках ModelSim.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
vetal
сообщение May 14 2005, 14:25
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
Попробовал тактировать все по заднему фронту. sad.gif Красные линии появились практически во всех цепях. Аж страшно стало.
Поменял местами в базовой версии передние и задние фронты. Глюк не исчез, но переместился с одной цепи на другую, однако надо отдать должное общая работоспособность проекта восстановилась.

Странности какие-то. Думаю, что дело тут в библиотете.
В окне DataFlow можно попробовать более детально выяснить причину возникновения 'X', но трудоемкая это работа.
Go to the top of the page
 
+Quote Post
Genn
сообщение May 14 2005, 18:44
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 48
Регистрация: 14-04-05
Пользователь №: 4 146



Цитата(Alexandr @ May 14 2005, 14:59)
Не поверите - дело оказалось вот в чем. В проекте есть несколько процессов, все синхронные, тактируются одним CLK. Однако часть процессов для удобства работают по переднему фронту CLK, часть по заднему. Сделал все процессы по переднему и все заработало  wacko.gif . Видимо это какое-то ограничение ISE или ModelSim, потому как более ничего не менял. Может кто объяснит в чем дело?
*


На самом деле, при таком построении проекта никакого криминала нет, и ModelSim здесь не виноват (временную модель то генерит ISE). Однако не ясен один момент: устанавливаете ли Вы временные ограничения при трансляции проекта в кристалл или нет. Поскольку Ваш проет работает только одной тактовой частоты, то выполнение этих ограничений (с вероятностью 99%) автоматически даст положительный результат. При трансляции в кристалл анализируется как поведение тактовой частоты, так и поведение логики итриггеров, включая анализ hold/setup. Ниже прилагаю фрагмент ucf-файла для Fт=10МГц.

# --------------------------
# FROM:TO TIME-SPECs
# --------------------------
# FROM:TO стиль временных ограничений может быть использован для определения путей между
# группами. ПРИМЕЧАНИЕ: Ключевые слова: RAMS, FFS, PADS, and LATCHES определены предварительно
# временные группы (TIMEGRP) используются, чтобы определить все элементы каждого типа в проекте.
TIMEGRP RFFS = RISING FFS ("*"); // создает группу триггеров, работающих по фронту RFFS
TIMEGRP FFFS = FALLING FFS ("*"); // создает группу триггеров, работающих по срезу FFFS
TIMESPEC TSF2F = FROM : FFS : TO : FFS : 50 ns; // Триггеры, работающие по одинаковому перепаду
TIMESPEC TSR2F = FROM : RFFS : TO : FFFS : 25 ns; // фронт к срезу
TIMESPEC TSF2R = FROM : FFFS : TO : RFFS : 25 ns; // срез к фронту
Go to the top of the page
 
+Quote Post
BSV
сообщение May 15 2005, 18:47
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



Предыдущий оратор, наверно прав. Вы просто превышаете частотные ограничения при моделировании - попробуйте уменьшить частоту при временном моделировании (относительно той, что выдал ISE), например, в 2 раза. Или можно попробовать не цеплять SDF-ы (я иногда этим пользуюсь - при этом не учитывается большинство задержек, а схема - такая же, как будет в кристалле). Если все заработает - то боритесь с задержками.

Вот если в проекте несколько тактовых сигналов (не связанных), тогда при временном моделировании просто необходимо отключать "детектор метастабильности" ((С) 3.14, как это точно в моделсиме называется на память не скажу). Поскольку иначе при пересечении клоковых доменов начинают возникать X-ы, даже, если применять асинхронные FIFO, подтверждения и т.п.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
Yra
сообщение Jun 2 2005, 17:39
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 396
Регистрация: 22-10-04
Из: Воронеж
Пользователь №: 962



А вживую проект с красными линиями работает?
У меня было что- то подобное - оказалось дело в оптимизаторе : не понравился ему фрагмент при синтезе - выкинул, и заодно весь кусок, подключенный к выходу этого фрагмента.
Бывает красное появляется, если много комбинаторики в одном месте (типа правильная информация появляется не сразу на выходе асинхронного АЛУ)
Что касается переднего и заднего фронтов - использую и то и другое (в основном для "одновременного" обращения к ОЗУ с двойным доступом) всё работает.
Кстати, даёт какойто выигрыш манипуляция с настройками моделсима (я использую всё "по умолчанию" из- за незнания и из-за неуверенности, что мои изменения приведут к лучшему).


--------------------
всё можно наладить, если достаточно долго вертеть в руках /Законы Мерфи/
Go to the top of the page
 
+Quote Post
kas
сообщение Jun 3 2005, 06:15
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 17-05-05
Из: Красноярск
Пользователь №: 5 108



Цитата(Alexandr @ May 14 2005, 17:43)
Использую ISE 6.3 и ModelSim 5.8
Проблема вот в чем. Написал код на VHDL. Провел функциональное моделирование. Все нормально. Запускаю временное (которое Simulate Post-Place & Route VHDL Model) и в некоторых местах появляются красные полоски вместо сигналов. По их месту и характеру понимаю, что пропадает один импульс. Ввожу дополнительный контакт в порт, подключаю его к этой цепи, чтобы посмотреть когда он пропадает И.....  Все нормально работает, все красные линии исчезают и критическая цепь выглядит как надо. Убираю контакт из порта - все как прежде не работает. Что делать? Ваше мнение.
*


Наложить временные ограничения.

Думаю конструкция PERIOD на clk здесь будет вполне уместна.

И еще, для того чтобы посмотреть внутренние сигналы при моделировании вовсе не обязательно вводить дополнительные порты. Там есть окно workspace, если в это окне поставить курсор на Ваш блок (по умолчанию UUT), то в окне Objects должны появиться все сигналы, которые есть внутри блока.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016