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

 
 
> Проблема timingа в timing simulation CPLD - Lattice, hold time violation репорт симулятора, выходы мертвы в X
Саша Z
сообщение Oct 19 2008, 16:04
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Есть небольшой дизайн логики с state machine, счетчиком и логикой. Работаю с Латисом, в данном случае с Classic 1.2 ибо нужны небольшие CPLD.
Симулятор: Aldec Active-HDL 8.1 (из ispLever 7.1), CPLD библиотеки инсталлирваны ОК.
Функциональная симуляция проходит ОК, с ожидаемыми результатами. Делаю timing simulation файлы, запускаю timing simulation в Альдеке - получаю warnings насчет hold time violations у FFs state machine и счетчиков. Traces симуляции дают выхода заткнутые в X (неопределенное состояние). Подозреваю что такое состяние естх результат hold time violations о которых докладывает симулятор.
Пока не нашел в ispLever Classic 1.2 возможности посмотреть причину violations и возможности ее исправить.
Может кто более опытный в данных аспектах подскажет куда смотреть ?

При необходимости могу выложить sources (VHDL + test bench) и файл constraints.

Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Oct 19 2008, 16:22
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Саша Z @ Oct 19 2008, 11:04) *
Функциональная симуляция проходит ОК, с ожидаемыми результатами. Делаю timing simulation файлы, запускаю timing simulation в Альдеке - получаю warnings насчет hold time violations у FFs state machine и счетчиков. Traces симуляции дают выхода заткнутые в X (неопределенное состояние). Подозреваю что такое состяние естх результат hold time violations о которых докладывает симулятор.
Пока не нашел в ispLever Classic 1.2 возможности посмотреть причину violations и возможности ее исправить.


Думаете верно, это и есть нарушение времянок.

1. STA проходит?
2. При сборке проекта не было ругани на неопределенные клоки, констрейны и т.д.?
3. Верификационное окружение корректно описывает поведение логики IO буферов?
4. Проект в железе работает ?


--------------------
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Oct 19 2008, 16:36
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(des00 @ Oct 19 2008, 20:22) *
Думаете верно, это и есть нарушение времянок.

1. STA проходит?
2. При сборке проекта не было ругани на неопределенные клоки, констрейны и т.д.?
3. Верификационное окружение корректно описывает поведение логики IO буферов?
4. Проект в железе работает ?


Спасибо за быстрый ответ.
Не припомнится ругани на какие-нить проблемы на стадии build, есть единственный клок и он вроде определен как и другие констрейны (которых не много).
А что вы имеете ввиду насчет 3. ? Сорри, опыта у меня маловато в данно области пока.
До железа пока не дошло, вначале хочу довести до ума в симуляторе. Да и железа пока нет, все на стадии разработки еще.
Может дать сорсы и файл констрейнов ?
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 19 2008, 16:46
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Саша Z @ Oct 19 2008, 11:36) *
Не припомнится ругани на какие-нить проблемы на стадии build, есть единственный клок и он вроде определен как и другие констрейны (которых не много).


т.е. STA не ругается на нарушение времянок, I/O tsu/th заданы и выполняются ?

Цитата
А что вы имеете ввиду насчет 3. ?
Может дать сорсы и файл констрейнов ?


в тестбенче когда вы задаете внешние воздействия вы случайно не нарушаете tsu/th входных тригеров ? Например

sample_in_data <= #1ns 5;
@(posedge clk);

В функционале это нормально отработается по клоку, но при временной симуляции может вызвать нарушение tsu/th на входном тригере и тогда 'X' пойдет по схеме.

Если нарушаете тогда приходится править например так

sample_in_data <= #2.5ns 5;
@(posedge clk);

у меня под латексы ничего нет, если формат констрейнов не от синопсиса, ничем помочь не смогу %)
правда по хдл модели + sdf файл могу найти место где у вас возникает нарушение в моделсиме. Но это только завтра. В личку написал мое мыло для связи.


--------------------
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Oct 19 2008, 20:22
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(des00 @ Oct 19 2008, 20:46) *
т.е. STA не ругается на нарушение времянок, I/O tsu/th заданы и выполняются ?
в тестбенче когда вы задаете внешние воздействия вы случайно не нарушаете tsu/th входных тригеров ? Например

sample_in_data <= #1ns 5;
@(posedge clk);

В функционале это нормально отработается по клоку, но при временной симуляции может вызвать нарушение tsu/th на входном тригере и тогда 'X' пойдет по схеме.

Если нарушаете тогда приходится править например так

sample_in_data <= #2.5ns 5;
@(posedge clk);

у меня под латексы ничего нет, если формат констрейнов не от синопсиса, ничем помочь не смогу %)
правда по хдл модели + sdf файл могу найти место где у вас возникает нарушение в моделсиме. Но это только завтра. В личку написал мое мыло для связи.


Спасибо, послал.

В tb у меня только начальный Reset и клок. Больше входов нет.
Констрейнами не задавал ts/th, да и честно говоря пока не в курсе как и когда нужно.
STA - static timing analysis ? пытаюсч вспомнить как делать, читал где-то не так давно..
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 20 2008, 03:25
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Саша Z @ Oct 19 2008, 15:22) *
STA - static timing analysis ? пытаюсч вспомнить как делать, читал где-то не так давно..


про STA вы правы, по идее он должен запускаться после разводки, для проверки времянок.

Но для ваших 6 КГц думаю что это не критично. Да и входов у вас нет, только выходы.

Ваши файлы получил, т.к. под латекс ничего нет, собрал под альтеру MAX3000A, задал клок 10КГц. Собрал, запустил на моделирование.

Код
vcom NUC_tester_tb.vhd
vcom prj.vho  
vsim -novopt -sdftyp /NUC_tester_tb/uut=prj_vhd.sdo NUC_tester_tb


результат в атаче.

Не видно 'x', вроде все работает, под альтеру правда. Либо что-то не так запускаете под альдек, либо где то, какой то глюк.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Oct 20 2008, 10:47
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(des00 @ Oct 20 2008, 07:25) *
про STA вы правы, по идее он должен запускаться после разводки, для проверки времянок.

Но для ваших 6 КГц думаю что это не критично. Да и входов у вас нет, только выходы.

Ваши файлы получил, т.к. под латекс ничего нет, собрал под альтеру MAX3000A, задал клок 10КГц. Собрал, запустил на моделирование.

Код
vcom NUC_tester_tb.vhd
vcom prj.vho  
vsim -novopt -sdftyp /NUC_tester_tb/uut=prj_vhd.sdo NUC_tester_tb


результат в атаче.

Не видно 'x', вроде все работает, под альтеру правда. Либо что-то не так запускаете под альдек, либо где то, какой то глюк.


Большое спасибо.
Да, странно.Очевидная разница только в симуляторе (Aldec vs. Modelsim) и в библиотеках чипов (Lattice CPLD и Альтера примерно схожей плотности).
Странно....

Послал проэкт на анализ в саппорт Латтиса с пояснительной..посмотрим что скажут.

А вообще, как анализируются подобные timingовые проблемы в среде FPGA/CPLD ? Куда смотреть и как анализировать ? Это на будущее..
Go to the top of the page
 
+Quote Post



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

 


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


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