|
Проэкт не работает в чипе..., В симуляции все ОК, в чипе не работает, может проблема с заданием ног |
|
|
|
Sep 2 2008, 10:27
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Странная проблема возникла: есть довольно простенький проэкт под Xilinx XCR3064CS48 CPLD. Проэкт драйвит некоторый електромагнит в системе. Код на VHLD. Я вообще сижу на Латтисе, на данный момент временно требуется данный Xilinx (в дальнейшем он заменится на соотв. Латтисе, но пока это то что есть), посему дизайн симулирован в среде Lattice (Модельсимом для Латтиса), затем когда симуляция ОК - открываю ISE, синтезирую под XCR3064CS48 и т.д. Есть UCF файл в проэкте в ISE где определил ноги чипа под сигналы. Проблема в том что после прожига не работает в чипе. Прежняя версия того-же дизайна работала ОК, сейчас внес изменения в код (UCF не трогал) - на выходах ничего нет. Прожигаю старую версию - чип работает ОК (согласно старой версии ессно). Проверяю в ISE насчет констрейнов ног: содержимое UCF имеет описание всех ног, тогда как в окне где UCF разбивается на части (Timing COntraints таб) - два выхода из четырех вроде как не определены в плане ног. Присоединены screenshots того о чем говорю. Также присоединен source VHDL как reference - хотя симуляция показывает что код вроде работает ОК. Со средой ISE знаком плохо, да и нет намерения углубленно изучать ее ибо Латтисе удовлетворяте потребости, может что-то не определено для проэкта в ISE и посему не работает в чипе ? Заранее благодарен за помощь.
Эскизы прикрепленных изображений
Прикрепленные файлы
Driver.vhd ( 4.51 килобайт )
Кол-во скачиваний: 138
|
|
|
|
|
 |
Ответов
|
Sep 3 2008, 07:44
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(sazh @ Sep 2 2008, 15:37)  лачи в RTL какие то бессмысленные. Да, без пояснений оно не совсем понянто со стороны: в системе есть проблема в том что при power-up срабатывает ложная комманда на на включение одного из режимов (видимо в результате влияния включения питания на конфигурацию системы которая драйвит данный CPLD), посему нужно было сделать что-то что-бы заблокировало первый sequence комманд (ложный). Посему получились latches о который и кручал синтезатор. Цитата(rv3dll(lex) @ Sep 3 2008, 10:57)  я в основном все процессы делаю синхронными и в список чувствительности вписываю только клок ни разу проблем не было
у ксайлинкса действительно все регистры изначально ставятся в ноль если не указать типа := '1' вообще-то стандарт рекоммендует иказывать полный sense list в процессе. Не уверен на что повлияет не полное указание сигналов в списке, но я в принципе, как минимум в качестве начинающего, стараюсь приделживаться стандарта (когда не забываю...). Иногда забываю все релевантные сигналы внести в список, получаю warnings, но до сих пор все работало и так... Интересно на что влияет не полный список чуствительности...
|
|
|
|
|
Sep 3 2008, 11:37
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Maverick @ Sep 3 2008, 12:02)  Насколько я понимаю не полный список чуствительности влияет только на моделирование, а на синтез не влияет, Отнюдь, сравни Код
awlays @(posedge clk, posedge reset)
if (reset) Q <= 0;
else Q <= D; и Код
awlays @(posedge clk)
if (reset) Q <= 0;
else Q <= D; первый - D тригер с АСИНХРОННЫМ сбросом, второй - с СИНХРОННЫМ
|
|
|
|
|
Sep 3 2008, 11:54
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(XVR @ Sep 3 2008, 15:37)  Отнюдь, сравни Код
awlays @(posedge clk, posedge reset)
if (reset) Q <= 0;
else Q <= D; и Код
awlays @(posedge clk)
if (reset) Q <= 0;
else Q <= D; первый - D тригер с АСИНХРОННЫМ сбросом, второй - с СИНХРОННЫМ да, но если убрать posedge из первого списка: Код
awlays @(posedge clk, reset)
if (reset) Q <= 0;
else Q <= D; то тоже полуачем асинхорнный сброс, точно так-же как видимо и в Код
awlays @(posedge clk)
if (reset) Q <= 0;
else Q <= D; я ошибаюсь ? Цитата(sazh @ Sep 3 2008, 13:43)  Да. Только не в ресете. А по сформированному ресету в нужном Вам состоянии. А лачи наверно из за неполного описания состояний в case. Надо или полное или состояния по умолчанию. Значит без внешнего resetа все-таки не обойтись... , т.е. придется шить на борту...
|
|
|
|
|
Sep 4 2008, 10:56
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Саша Z @ Sep 3 2008, 15:54)  да, но если убрать posedge из первого списка: Код awlays @(posedge clk, reset) if (reset) Q <= 0; else Q <= D; то тоже полуачем асинхорнный сброс, Это не асинхронный сброс - это вообще невесть что, оно будет защелкивать D в Q по заднему фронту reset (в добавок к положительному фронту clk). Синтезатор должен обругаться Цитата точно так-же как видимо и в Код awlays @(posedge clk) if (reset) Q <= 0; else Q <= D; я ошибаюсь ? Ошибаешься, это СИНХРОННЫЙ сброс, само по себе выставление reset в 1 не сбросит Q в 0, а произойдет это только по переднему фронту clk (это собственно и определяется списком чуствительности) Цитата(Maverick @ Sep 3 2008, 16:50)  Я имел ввиду при описании на VHDL А что, VHDL каким то особенным способом интерпретирует списки чуствительности? Или синтезатор при синтезе с VHDL имеет право их проигнорировать, заодно нарушив семантику?
|
|
|
|
|
Sep 4 2008, 11:32
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(XVR @ Sep 4 2008, 13:56)  Это не асинхронный сброс - это вообще невесть что, оно будет защелкивать D в Q по заднему фронту
reset (в добавок к положительному фронту clk). Синтезатор должен обругаться Может быть, я не знаком с синтаксисом Verilogа Цитата(XVR @ Sep 4 2008, 13:56)  Ошибаешься, это СИНХРОННЫЙ сброс, само по себе выставление reset в 1 не сбросит Q в 0, а произойдет это только по переднему фронту clk (это собственно и определяется списком чуствительности) Да, опять-же синтакс Verilogа мне мало знаком (если вообще), посему наверно и недопонял. Цитата(sazh @ Sep 3 2008, 15:18)  Я же выкатил реализацию, как без внешнего ресета обойтись. Если нужна запись константы в регистр только по включению питания. Сплошь и рядом ее по включению питания (Альтера) использую. И на xilinx должно пройти. Пробуйте. Смотрите реализацию в RTL просмотрщике и количество задействованных ресурсов. Спасибо за подсказку, реализовал что-то подобное. Дало возможность (в смысле реализация такого resetа) и использовать счетчик на задержку начало работы контролей выходов . Симулируется хорошо в functional, синтезировал под Xilinx, загрузил в чип - работает как часы... Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают...  . Симуляция показывает reseta не происходит вообще. Не пойму почему...то-ли такая реализация сильно привязана к технологии конкретного чипа/бренда (возможно в Xilinxовой CPLD работает, а в Latticeовской (под которую и симулировал) - не будет ?) Странно....
|
|
|
|
|
Sep 4 2008, 17:26
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Саша Z @ Sep 4 2008, 15:32)  Но странная вещь происходит: пытаюсь симулировать в post-route functional и post-route timing - reset (и все что на него завязано) не работают...  . Симуляция показывает reseta не происходит вообще. Это бага в ISE Xilinx'а (точнее в генераторе post-route модели) Они зачем то сигнал glbl.PRLD (это загрузка начальных значений после reset'а) сделали локальной цепью в сгенерированной post-route модели (вместо того, что бы подключить ее к цепи PRLD модуля glbl) И сигнал этот никуда не подключен  Добавь в bench.v Код assign uut. \glbl.PRLD = glbl.PRLD; - заработает
|
|
|
|
|
Sep 4 2008, 20:48
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(XVR @ Sep 4 2008, 20:26)  Это бага в ISE Xilinx'а (точнее в генераторе post-route модели) Они зачем то сигнал glbl.PRLD (это загрузка начальных значений после reset'а) сделали локальной цепью в сгенерированной post-route модели (вместо того, что бы подключить ее к цепи PRLD модуля glbl) И сигнал этот никуда не подключен  Добавь в bench.v Код assign uut. \glbl.PRLD = glbl.PRLD; - заработает В том то и дело что вначале синтезирую и симулирую под Lattice (у меня симулятор OEM ModelSim/Active-HDL Lattice). Затем, открываю ISE Web, синтезирую под Xilinx и загружаю в чип (CPLD) Xilinxа... Т.е. говоря о симуляции (и functional и post-route) я имею ввиду симуляцию под Lattice. Значит получается так что функциональная симуляция под Lattice работает ОК а post-route functional & timing на Lattice не работает. При этом синтезируя для Xilinx XCR3064 - в чипе работает ОК. Такхто видимо оно не имеет отношения к багам среды Xilinxа.. Цитата(sazh @ Sep 4 2008, 18:15)  Если я правильно понял, в железе xilinx реализация типа моей работает, а post-route timing в моделсиме это не работает. так не должно быть. Если конечно отрабатываются указания синтезатору при моделировании. Нюанс такой реализации заключается в том, что схема базируется на установке всх регистров по включению питания в ноль. А далее нужно смотреть как синтезатор отнесся к той части схемы, на которой реализованы внутренний ресет по включению питания. Эта часть схемы функционирует только во время "инициализации" по включению питания и не обладает периодичностью, как если бы ресет был бы внешний. Синтезатор и может быть симулятор (если во времени это не ощущает) может минимизировать эту часть схемы, выбросив формирователь ресета и задать его константой 1, а значит и интервала не будет. У Квартуса например есть специальное указание синтезатору. Кстати, указание внутренним сигналам в разделе инициализации проекта не минимизирует такую схему. Это по ресурсам в мап технологическом видно (константа 1 или счетчик формирования интервала). И временное моделирование это показывает в Квартусе, пакет цельный, а в связке с моделсимом я такую конструкцию не пробовал. Если во временном моделировании этого интервала нет. А по ресурсам такая схема есть, и в железе работает, значит при моделировании в моделсиме в связке с xilinx что то не то. Наверное. Я ведь выкатил реализацию в том числе и в надежде, что кто то это на других системах опробует. Да, в железе Xilinxа оно вроде работает, но в post-route симуляции в Lattice - не работает (обнулевка), хотя functional симуляция в том-же Латтисе - да работает. Ныло-бы интересно узнатч работает ли оно в симуляции post-route functional and timing в Xilinxе...а так-же интересно было-бы увидеть будет ли работать в железе Lattice... Может RTL viewer Латиса даст ответ похему post-route симулятор в Латице не отрабатывает... Завтра гляну.... А может кто-бы кто сидит на Xilinx смог-бы просимулировать код у него и рассказать нам как оно там работает ? Я бы дал VHDL код и test-bench...
|
|
|
|
|
Sep 5 2008, 12:59
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(XVR @ Sep 5 2008, 08:47)  Ой.  Не понял тайного смысла делать post-route симуляцию на Lattice, если железка на Xilinx'е  Или Lattice уже выкупил у Xilinx'а CPLD ветку и начал делать синтез для них?   не, все гораздо прозаичней...я на работе работаю с 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....
|
|
|
|
Сообщений в этой теме
Саша Z Проэкт не работает в чипе... Sep 2 2008, 10:27 Саша Z Цитата(sazh @ Sep 2 2008, 14:37) Ради инт... Sep 2 2008, 11:59  sazh Цитата(Саша Z @ Sep 2 2008, 15:59) Да, до... Sep 2 2008, 12:47   Саша Z Цитата(sazh @ Sep 2 2008, 15:47) Почему н... Sep 2 2008, 13:59    sazh Цитата(Саша Z @ Sep 2 2008, 17:59) На бор... Sep 2 2008, 14:22     Саша Z Цитата(sazh @ Sep 2 2008, 18:22) Посмотри... Sep 2 2008, 20:00 rv3dll(lex) Цитата(sazh @ Sep 2 2008, 15:37) Ради инт... Sep 3 2008, 06:57  sazh Цитата(Саша Z @ Sep 3 2008, 11:44) Да, бе... Sep 3 2008, 07:58   Саша Z Цитата(sazh @ Sep 3 2008, 11:58) Со сторо... Sep 3 2008, 09:18    sazh Цитата(Саша Z @ Sep 3 2008, 13:18) Да, ес... Sep 3 2008, 09:43     sazh Цитата(Саша Z @ Sep 3 2008, 15:54) Значит... Sep 3 2008, 12:18       sazh Цитата(Саша Z @ Sep 4 2008, 15:32) загруз... Sep 4 2008, 15:15            Саша Z Цитата(XVR @ Sep 5 2008, 20:57) Давай, по... Sep 5 2008, 20:17             XVR Цитата(Саша Z @ Sep 6 2008, 00:17) Спасиб... Sep 6 2008, 09:58              Саша Z Цитата(XVR @ Sep 6 2008, 12:58) Проверил ... Sep 6 2008, 11:25               Саша Z Цитата(Саша Z @ Sep 6 2008, 14:25) Ага, о... Sep 8 2008, 12:29                Саша Z Цитата(Саша Z @ Sep 8 2008, 15:29) В дого... Sep 11 2008, 15:23                 sazh Цитата(Саша Z @ Sep 11 2008, 19:23) Все, ... Sep 12 2008, 05:47         sazh Цитата(Саша Z @ Sep 5 2008, 00:48) хотя f... Sep 5 2008, 06:14       alexander55 Цитата(Саша Z @ Sep 4 2008, 15:32) Не пой... Sep 12 2008, 05:31        Саша Z Цитата(alexander55 @ Sep 12 2008, 08:31) ... Sep 12 2008, 06:18      Maverick Цитата(XVR @ Sep 4 2008, 13:56) А что, VH... Sep 5 2008, 05:19    Maverick Цитата(XVR @ Sep 3 2008, 14:37) Отнюдь, с... Sep 3 2008, 12:50 BSV А временнОе моделирование автор делал? Еще интерес... Sep 3 2008, 08:27 Саша Z Цитата(BSV @ Sep 3 2008, 12:27) А временн... Sep 3 2008, 10:01  BSV Цитата(Саша Z @ Sep 3 2008, 14:01) нет си... Sep 3 2008, 12:00   Саша Z Цитата(BSV @ Sep 3 2008, 16:00) Нужен Мод... Sep 3 2008, 13:56    BSV Цитата(Саша Z @ Sep 3 2008, 17:56) У меня... Sep 3 2008, 15:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|