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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Проэкт не работает в чипе..., В симуляции все ОК, в чипе не работает, может проблема с заданием ног
Саша Z
сообщение Sep 5 2008, 12:59
Сообщение #31


Знающий
****

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



Цитата(XVR @ Sep 5 2008, 08:47) *
Ой. 07.gif Не понял тайного смысла делать post-route симуляцию на Lattice, если железка на Xilinx'е sad.gif Или Lattice уже выкупил у Xilinx'а CPLD ветку и начал делать синтез для них? wacko.gif


smile.gif не, все гораздо прозаичней...я на работе работаю с Lattice, т.е. все тулы их, ессно под реализацию в CPLD/FPGA Латтиса. Однако, один из бортов системы над которой сейчас работаю был заказан (еще до меня в данной фирме) у подрядчика, и те кто заказывали не дали четких требований к проэктировке (т.е. например бренд CPLD/FPGA, требования к конечной документации и т.д. и т.п.). Подрядчик завязан на Xilinx, посему и исползьзовал Xilinx. Мало того, они не работают со стандартными тулами производителя (ISE ежели в применении к CPLD/FPGA Xilinx либо других стандартных пакетов), Orcad/Altium/Mentor/... пакеты для schematic capture и т.д.....
Они склепали свою какую-то аппликацию для schematic capture (достаточно уродскую, не стабильную и полную багов), к ней присобачили графический редактор логики который привязали к синтезатору и P&R Xilinxа (у них какое-то полу-левое сoглашение с Xilinx по этому поводу). Т.е. они не пишут код логики VHDL/Verilog а вместо этого все рисуют графикой. Посему иьх дизайн логики абсолютно не портируемый, привязан исключителчно к ихней аппликации, сорсов как таковых нет (ибо в графике которая сугубо proprietary ихней проге). Вот мне и досталасч эта головная боль в наследство (пришел в фирму за месяц-два до поставки тех бортов). Кучу проблем с их дизайном (отчасти по вине моей конторы которые не задали четких и исчерпывающих тех. заданий оставив широкое поле выбора понимания подрядчику).
Вот и натолкулся на проблему их дизайна логики в CPLD Xilinxа который на борту. Т.е. у меня вся линейак тулов под Lattice (а инсталлировать не лицензионное на работе (в отличие от дома) - категорически исключено и не принято, по крайней мере в наших краях), пришлось "теорию" гонять под Латисе, а железо - то хто сидит на борту, т.е. Xilinx..



Цитата(sazh @ Sep 5 2008, 09:14) *
Чистый functional наверно моделсимовский. Он оперирует процессами, к примитивам Латтисе не привязан и к Латтисе отношения не имеет.
А чтобы привязаться к Латтисе, нужна имитация включения по питанию. У xilinx эту функцию выполняет GSR.
Короче, смотрите структуру выбранного семейства (eeprom, sram), можно ли эту структуру в ноль инициализировать, читаете раздел как активизировать инициализацию регистров по включению питания в симуляторе. По ресурсам кристалла определяете, выбросил или нет синтезатор часть схемы, реализующую формирование внутреннего ресета (Ищите опцию в смнтезаторе типа игнорировать состояния регистров по power-up или нет. Если игнорировать, то и смысла в схеме формирования начальных состояний этих регистров нет, синтезатор вместо этой схемы константу подставит).
Если все регистры по включению в ноль инициализируются без внешних сигналов и схема формирования внутреннего ресета в ресурсах присутствует, то и в железе рабоать будет.


Functional показывал одинаково и в ModelSimе и в Active-HDLе (сейчас перехожу на Aldec). Да впрочем и весь post-route тоже пробовал и в Модельсиме и в Альдеке- оба показывали одинаково.
В целом согласен с вашими советами. Хотя данная конкретная реализация CPLD предназначена только для данного Xilinx чипа (ибо новая версия ботра будет делаться мной в недалеком будущем), будет интересно и поухителчно попробовать разобраться в нюансах влияния технологий такого рода чипов на мой случай (и ему подобные). Свою версию борта буду делать на Lattice ессно. Кроме того, вспомнил что у меня на работе лежит evaluation board Lattice ECP2 FPGA - думаю прожечь сегодняшнюю реализацию в нем по посмотреть будет ли работать как в Xilinx CPLD...

Но все-таки интересно услышать от пользователей Xilinxа - работает ли данный дизайн в post-route симуляции Xilinxа....я-бы дал свой сорс + test-bench....
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 5 2008, 17:57
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Саша Z @ Sep 5 2008, 16:59) *
Но все-таки интересно услышать от пользователей Xilinxа - работает ли данный дизайн в post-route симуляции Xilinxа....я-бы дал свой сорс + test-bench....
Давай, попробую прогнать (если найдется время smile.gif )
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 5 2008, 20:17
Сообщение #33


Знающий
****

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



Цитата(XVR @ Sep 5 2008, 20:57) *
Давай, попробую прогнать (если найдется время smile.gif )



Спасибо, буду признателен..
Дал source и простенкий test-bench. Проверьте пожалуйста как работает в чисто функциональной симуляции и port-route functional и post-route timing. Пожалуйста обратиие внимание на началчные временны интервалы (там reset по идее будет/не будет работать)..
Прикрепленные файлы
Прикрепленный файл  Driver.vhd ( 4.71 килобайт ) Кол-во скачиваний: 63
Прикрепленный файл  nuc_driver_tb2.vhd ( 2.39 килобайт ) Кол-во скачиваний: 52
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 6 2008, 09:58
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Саша Z @ Sep 6 2008, 00:17) *
Спасибо, буду признателен..
Дал source и простенкий test-bench. Проверьте пожалуйста как работает в чисто функциональной симуляции и port-route functional и post-route timing. Пожалуйста обратиие внимание на началчные временны интервалы (там reset по идее будет/не будет работать)..
Проверил (функционал и post-route), поведение идентичное
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 6 2008, 11:25
Сообщение #35


Знающий
****

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



Цитата(XVR @ Sep 6 2008, 12:58) *
Проверил (функционал и post-route), поведение идентичное


Ага, отлично, спасибо.
Значит можно сделать вывод что post-route симуляция видимо действительно отражает реальную технологию конкретного бренда/семейства, т.е. действительно такое решение не работало-бы наверно в CPLD Lattice, но работает в Xilinxе, т.е. CPLD от данных производителей отлихаются технологией (возможно у одного по power-up flip-flopы устанавливаются в '0', у другого - не гарантировано (либо наоборот - устанавливаются в '1'). Ьотя пока это домыслы. Почитаю datasheet на них - посмотрим. Закину так-же сей вопрос на support Латиса...
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 8 2008, 12:29
Сообщение #36


Знающий
****

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



Цитата(Саша Z @ Sep 6 2008, 14:25) *
Ага, отлично, спасибо.
Значит можно сделать вывод что post-route симуляция видимо действительно отражает реальную технологию конкретного бренда/семейства, т.е. действительно такое решение не работало-бы наверно в CPLD Lattice, но работает в Xilinxе, т.е. CPLD от данных производителей отлихаются технологией (возможно у одного по power-up flip-flopы устанавливаются в '0', у другого - не гарантировано (либо наоборот - устанавливаются в '1'). Ьотя пока это домыслы. Почитаю datasheet на них - посмотрим. Закину так-же сей вопрос на support Латиса...


В догонку - буду баlaгодарен за помощь:
дал два сорса, единственное отличие в том что во втором появился счетчик длительносит состояния forward автомата drive_state в целью идерживания состяния даже после окончания действия управляющих входов задающих данное состояние (input_state = "100").
Проблема в том что после добавления этого счетчика, автомат видимо стал работать не совсем как надо ибо то что вижу что сразу после окончания состояния revese есть прыжок в other, как и должно быть, но затем, без прихода соотв. упарвляющего входа - идет прыжок в forward и состояние удерживается счетчиком. После окончания счетчика - прыгает в other (как задано) затем уже согласно управляющему входу - прыгает в forward.
Т.е. в кратце, после добавления счетчика fwrd_counter появился паразитный прыжок из reverse в forward и в other, т.е. прыжок в forward без нуажного на то управляющего входа.

В первом сорсе нет данного счетчика и все работает ОК. Не мойму, как сей счетчик влияет на такое поведение автомата ?

Дал так-же test-bench. Самое интересное, в functional simulation такое странное поведение (при наличие счетчика) не проявляется, но при прожиге в чип (Xilinx XCR3064) - то что происходит (отслеживал скопом).

Может мне кто откроет глаза... cranky.gif
Прикрепленные файлы
Прикрепленный файл  Driver.vhd ( 7.08 килобайт ) Кол-во скачиваний: 89
Прикрепленный файл  Driver.vhd ( 7.05 килобайт ) Кол-во скачиваний: 28
Прикрепленный файл  nuc_driver_tb2.vhd ( 2.77 килобайт ) Кол-во скачиваний: 61
 
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 11 2008, 15:23
Сообщение #37


Знающий
****

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



Цитата(Саша Z @ Sep 8 2008, 15:29) *
В догонку - буду баlaгодарен за помощь:
дал два сорса, единственное отличие в том что во втором появился счетчик длительносит состояния forward автомата drive_state в целью идерживания состяния даже после окончания действия управляющих входов задающих данное состояние (input_state = "100").
Проблема в том что после добавления этого счетчика, автомат видимо стал работать не совсем как надо ибо то что вижу что сразу после окончания состояния revese есть прыжок в other, как и должно быть, но затем, без прихода соотв. упарвляющего входа - идет прыжок в forward и состояние удерживается счетчиком. После окончания счетчика - прыгает в other (как задано) затем уже согласно управляющему входу - прыгает в forward.
Т.е. в кратце, после добавления счетчика fwrd_counter появился паразитный прыжок из reverse в forward и в other, т.е. прыжок в forward без нуажного на то управляющего входа.

В первом сорсе нет данного счетчика и все работает ОК. Не мойму, как сей счетчик влияет на такое поведение автомата ?

Дал так-же test-bench. Самое интересное, в functional simulation такое странное поведение (при наличие счетчика) не проявляется, но при прожиге в чип (Xilinx XCR3064) - то что происходит (отслеживал скопом).

Может мне кто откроет глаза... cranky.gif



Все, всем спасибо, решено.
Управлающие входа были проблематичны в железе - выдавали glitches вскоре после послезного сигнала. Подрубился ко входам logic analyzerом - тогда все стало понятно. Эти glitches и сводили с ума state machine в моем коде. Добавил в state machine еще одно состояние с маленьким счетчиком блокирующее glitchеs, переписал test bench с точным моделированием тайминга контролных входов включая glitchи, просимулировал - все ОК.
Прожег в Xilinx - все встало на свои места, работает согласно симуляции. yeah.gif

Всем спасибо за помощь и поддержание духа... a14.gif
Go to the top of the page
 
+Quote Post
alexander55
сообщение Sep 12 2008, 05:31
Сообщение #38


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Саша Z @ Sep 4 2008, 15:32) *
Не пойму почему...то-ли такая реализация сильно привязана к технологии конкретного чипа/бренда (возможно в Xilinxовой CPLD работает, а в Latticeовской (под которую и симулировал) - не будет ?)
Странно....

Старайтесь использовать родные примитивы и стараться все сводить к ним. Иначе будут проблемы. Такие проблемы обычно возникают при использовании и R и S. Ну и стараться делать синхронную схему и в дальнейшем операции разносить по тактам для остутствия гонок. При наличии ассинхронности полезно сигналы простробировать внутренней частотой для дальнейшей беспроблеммности.
Тут правильно сказали, что надо симулировать и реализацию. Поглядите, что там насинтезировалось. Будете удивлены наверняка.

Цитата(Саша Z @ Sep 6 2008, 15:25) *
Ага, отлично, спасибо.
Значит можно сделать вывод что post-route симуляция видимо действительно отражает реальную технологию конкретного бренда/семейства, т.е. действительно такое решение не работало-бы наверно в CPLD Lattice, но работает в Xilinxе, т.е. CPLD от данных производителей отлихаются технологией (возможно у одного по power-up flip-flopы устанавливаются в '0', у другого - не гарантировано (либо наоборот - устанавливаются в '1'). Ьотя пока это домыслы. Почитаю datasheet на них - посмотрим. Закину так-же сей вопрос на support Латиса...

Ну Вы уже все и сами поняли.
Добавлю, что лучший симулятор ModelSim, а все остальное ...

Цитата(Саша Z @ Sep 11 2008, 19:23) *
Все, всем спасибо, решено.

Опоздал, извините. Грузинская тема интереснее.
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 12 2008, 05:47
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Саша Z @ Sep 11 2008, 19:23) *
Все, всем спасибо, решено.
Эти glitches и сводили с ума state machine в моем коде. Добавил в state machine еще одно состояние с маленьким счетчиком блокирующее glitchеs, переписал test bench с точным моделированием тайминга контролных входов включая glitchи, просимулировал - все ОК.


Не могут у автомата гличи быть. Потому что все состояния фиксируются в триггере по фронту клока.
Или это совсем не машина состояний, а значит и счетчик гличей вам тоже не поможет.
Просто реже сбои будут. Не более того.
Используйте классический подход к машине состояний, что соответствует в конечном счете case на все состояния, значения которого фиксируются в регистрах. Ну откуда тут гличи.
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Sep 12 2008, 06:18
Сообщение #40


Знающий
****

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



Цитата(alexander55 @ Sep 12 2008, 08:31) *
Старайтесь использовать родные примитивы и стараться все сводить к ним. Иначе будут проблемы. Такие проблемы обычно возникают при использовании и R и S. Ну и стараться делать синхронную схему и в дальнейшем операции разносить по тактам для остутствия гонок. При наличии ассинхронности полезно сигналы простробировать внутренней частотой для дальнейшей беспроблеммности.
Тут правильно сказали, что надо симулировать и реализацию. Поглядите, что там насинтезировалось. Будете удивлены наверняка.
Ну Вы уже все и сами поняли.
Добавлю, что лучший симулятор ModelSim, а все остальное ...
Опоздал, извините. Грузинская тема интереснее.


smile.gif

Спасибо anyway...


Цитата(sazh @ Sep 12 2008, 08:47) *
Не могут у автомата гличи быть. Потому что все состояния фиксируются в триггере по фронту клока.
Или это совсем не машина состояний, а значит и счетчик гличей вам тоже не поможет.
Просто реже сбои будут. Не более того.
Используйте классический подход к машине состояний, что соответствует в конечном счете case на все состояния, значения которого фиксируются в регистрах. Ну откуда тут гличи.


Да нет, автомат у меня классический, полностью синхронный.
Просто по управляющим входам проходит glitch как раз совпадающий с одним из сигналов управления автоматом и с таймингом подходящим, в результате чего автомат переходил в другое состояние не вовремя чем сбивалась работа конечного устройства.
Glitch там не должен быть по specу и инфе полученной от конторы к чьему устройству я подлкюхаюсь

Ну ничего, теперь все ОК, glitch заблокирован автоматом (в данном случае не имеется ввиду glitch в смысле тайминга короче клока, что просто как короткий (короче обычного полезного сигнала но достаточно длинный для автомата - несколчко десятков клоков) управляющий сигнал там где его не должно быть. Во временном интервале конкретного устройства - это как glitch но не по отношению к клоку.
Go to the top of the page
 
+Quote Post

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

 


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


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