Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Тестване на Верилог дизайн на FPGA
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=7780
Страница 1 от 2

Автор:  medeamona [ Сря Апр 28, 2010 9:35 am ]
Заглавие:  Тестване на Верилог дизайн на FPGA

Здравейте,
от около 3 дни се въртя около един Virtex 6 (ML605) Emulation Kit и съм изпаднала в душевна криза. Трябва да имплементирам един дизайн (верилог код) и да го тествам. Досега съм правила само верификация на симулационно ниво (DVE, Specman). Въпросът ми е какви са стъпките и процедурата. Май е намесен и ChipScope някак си в цялата история, но не мога да навържа верижката и логиката.
Благодаря предварително!

Автор:  head_up [ Сря Апр 28, 2010 7:35 pm ]
Заглавие: 

доколкото разбирам си ползваш ИСЕ-то на xilinx?
chipscope не ти трябва задължително, по-скоро ако имаш проблем - тогава ще го ползваш (да си призная - аз не съм го ползвал).

на какво ниво е сорса ти? добавени ли са специфичните ДСМ-и и буфери? ако не са :
за начало си оправяш всички буфери по дизайна - клоци-те по принцип, а на някой сигнали ако случайно се явяват на клок линия, пък не са такива (обикновенно при асинхронните интерфейси се получават, при работа по pos/negedge), то по принцип ИСЕ-то бута такива буфери, ама е добре ти изрично да опишеш къде какво трябва.
кофигурираш си ДСМ-те според желанията ти и си ги навързваш (в даташита прилично е описано как се прави).

след синтеза четеш репорта внимателно да видиш дали няма нещо изменено. може да си поиграеш със суичовете, ако нещо ти се стори нередно за имплементация на структура (муксове, шифтове, стейт машини и компания...)

ще трабва да си направиш ucf файл в който да опишеш кой сигнал къде се нахожда по краката на чипа и какво да представлява пина - тип, лог. нива и т.н. предполагам ги знаеш тези неща спорд това кой къде се вързва отвън чипа (внимавай със рейт-а който се сложиш, че има ядове с него). после го имплементваш - стъпка по-стъпка.
пак четеш внимателно репорта и си изясняваш кой ворнинг може да преглътнеш и кой не, ако има проблем - редизайн или донастройваш с конфигуриращи думи това което не те устройва (обикновенно и това ти се подсказва от репорта).

можеш да направиш плейс анд руут симулацията след това (трябва да си генерираш PAR simulation model-a), но по принцип ако има проблем то ИСЕ-то ще ти подскаже.
ако те устройва генерираш си бит файла и си почти готов.

от къде ще кофигурираш ФПГА-то? памет или директно през jtag-а?
ако е през jtag-a можеш директно да го налееш през ИМПАКТ-а, ако не - си правиш ПРОМ/АЦЕ файл според типа памет като там ще трябва да четеш какво казва визърта - няколко щрака и си готов. после наливаш по jtag-a в паметта, правиш си конфигурацията на спартана да е да се конфигурира по съответният мод и ресетваш :)

не съм ползвал спартан 6, не съм стигал това ниво, но тази схема на имплементация се спазваше до сега от ксайлинкс, съмнявам се сега да има нещо ново.

не на последно място пращаш поздрави на хората от ASIC Depot :wink:

Автор:  miro_atc [ Сря Апр 28, 2010 9:05 pm ]
Заглавие: 

@head_up, колежката изглежда като да е наясно как се компилира и как се прави симулация ;-)


иначе по темата, на сайта на xilinx има доста филмчета в които полазват всичко от игла до конец... и ако не ме лъже паметта в някои обясняваха и за тестванията.
Честно казано аз вече съм позабравил какво и къде съм зяпал а и нямам практически опит с xilinx, но това което ми е останало е следното:

Значи първо пишеш, симулираш на екран и в даден момент стигаш до реалния хардуер.... Зареждаш и пускаш. Сега зависи какъв е дизайна, ако примерно е нещо с видео компресии и на екрана се покаже вярната картина, това е най-добрия тест че нещата бачкат.

Но в общия случай, като пуснеш дори не знаеш дали работи или не работи и трябва да го провериш. Как?
Най-добрият вариант е, да вземеш един логически анализатор и да се закачиш и да гледаш всички сигнали. Ако получиш същата картинка като при симулацията, значи ОК.
Тоя подход е най-сигурният, обаче има следните проблеми:
1) Трябва да разполагаш с готин и скъп логически анализатор
2) Трябва да го свържеш със сигналите дето те интересуват. На кит-а тия сигнали може да са изведени на конектор, но ако не са.... примерно връзка между два BGA чипа дето минава по вътрешните слоеве на платката става трудничко..
3) Не може да се закачаш на вътрешни сигнали от fpga-то, само пинове...

Та тогава идва на помощ Chipscope предполагам ;-)
Първо не съм сигурен че през него ставаше, но xilinx даваха някаква възможност кой да е вътрешен сигнал да се изкара на определен пин (без при това да се променя дизайна). Тъй че си оставаш няколко удобни за наблюдения изхода и през тях изкарваш ония сигнали дето те интересуват за да ги видиш през лог. анализатор.
Второ, (то май това му е основното) чипскопа може да замести в някаква степен външния лог. анализатор. За целта имаше някакви модулчета (IP cores) които се добавят към дизайна и те играят ролята на лог. анализатор, демек те могат да семплират кой да е сигнал и резултата през JTAG-a го гледаш на компютъра си ;-)
Но тъй като през JTAG-а няма как да наблюдаваш всичко в реално време и реална скорост, то посредством настройките задаваш тригери, т.е. кога да почне да семплира, какво да се семплира и т.н Но с повечко късмет може и да успееш да го настроиш, така че да ти изкара точния сигнал в точния момент...

Автор:  head_up [ Сря Апр 28, 2010 9:44 pm ]
Заглавие: 

@miro_atc, колежката не е уточнила, че е на ясно какво да прави за да стигне от синтез->имплементация на верилогския код (но пък е на ясно как да го симулира, очевидно е работила верификация), а така поставен въпроса ми се видя, че иска да знае как се стига от верилогски код до жив, правилно работещ спартан :wink:

Автор:  miro_atc [ Сря Апр 28, 2010 9:59 pm ]
Заглавие: 

чети малко по-внимателно ;-)

и не е спартан, а виртекс...

Автор:  head_up [ Сря Апр 28, 2010 10:15 pm ]
Заглавие: 

съжалявам, моя грешка за виртекса, в главата ми се въртят спартани :oops: кой знае защо.... :?
айде колежката да си каже къде й е болката - че не е на ясно как да процедира със верилогският код или че не е знае как да ползва chipscope-а, пък после ще продължим ръфането за крачолите, ако се налага.

Автор:  medeamona [ Чет Апр 29, 2010 12:17 am ]
Заглавие: 

Колежката е потресена и в див ужас. (Ще предам поздрави на колегите ;) )
В момента наливам готови блокове (които за капак са със на Синопсис модели) в ИСЕ-то. Наливането в чипа ще е през JTAG. Дефакто на мен обърквацията ми идва от няколко места. Ако беше само ниво симулация - все ще напиша един смотан тестбенч да го изсимулира.
Но, да се върна на драмата - взимам аз значи готовия блок, пригаждам го да е XILINX съвместим (памети, модули и прочие) след което идва моментът с програмирането.
Ок, през Импакта създавам подходящите файлове (днес за н-ти път четох ръководства, задълбочават объркването ми) и някак си успявам да го пъхна вътре и да конфигурирам пинове, крака и прочие неща на Виртекса.
След което идва моментът как да го накарам да работи и да го проверя че прави нещата които искам, по начина по който искам.
Тук всъщност е проблема.
Трябва да създам хардуерен модул тестов, който да обхваща отвън блока и да му генерира неща?
(Не знам какво е ДСМ и за какви буфери иде реч)
Трябва по някакъв начин да захраня чудовището с пакети данни, да прочета пакетите на изхода и да ги сравня. По между другото да конфигурирам регистри и така. Самия процес на тестване или както сте казали - истински жив и дишащ Виртекс.
За логически анализатор - имали някакво нещо си дадено от Agilent и съвместимо с техен логически анализатор.

Както казах опитвам се да си изясня тази каша от вуртиално-хардуерни бози.
П.С. Съжелявам за образния си език ама вече почвам да "благославям" някои хора на 3 езика.

Автор:  head_up [ Чет Апр 29, 2010 12:56 am ]
Заглавие: 

разгледай главата за Global Clock Resources на Виртекса (ей, без малко пак да го прекръстя). там пише какво и как се ползва за клок линии (ама като не знам какво ти включва кода в оригинал не е много ясно кои от компонентите извън behavioral-a са налични при теб и какво да добавиш).

DCM = Digital Clock Managers, обърни им внимание, доста често са мнооого необходими, за да работи дизайна както с очаква (ако не е съобразено да бъдат сложени, но ти казваш че го портваш, така че ... ). освен че синтезират/делят/умножават клока правят и някой други чудеса - в User Guide-а ще да пише какво точно. Разбира се, има случай (май на рядко) когато не се ползват. но какъв е твоят - ти знаеш.

колкото до оживяването - по мое мнение най-добре си е да го сложиш тоя Виртекс на мястото му, т.е. свързан към останалите елементи и да му подаваш и вадиш данните - или ще работи коректно дълго време или не. обаче предполагам при теб това е невъзможно, защото имаш някакъв кит, но не и цялата система в която ще участва. а и това си е "българският начин" да го направиш, щото сме бедни и нямаме пари за апратура.

Предполагам цивилизованите хора ползват лог анализатора, както каза miro_atc, така че щом са ти дали нещо такова - виж как се работи с него. и той е прави, че ако имаш изводи, които са недосъпни живота ти ще стане малко по-труден, тогава ще да разчиташ на чипскопа - макар че пак казвам не съм го ползвал и не ми се вярва той да може да ти покаже какво има на съответният пад. (по-скоро преди входият/изходният буфер/вътре в ФПГА-то може да свърши работа). на какви честоти работиш всъщност? просто любопитство.

Колкото до "благославянето"на 3 езика - "благославяй" ги на родният им, да не се загуби нещо в превода.

Автор:  woody [ Чет Апр 29, 2010 1:07 pm ]
Заглавие: 

Ей, тоя Верилог ще ти гризне главата, пробвала ли си Оверлог? :D

medeamona написа:
След което идва моментът как да го накарам да работи и да го проверя че прави нещата които искам, по начина по който искам.
Тук всъщност е проблема.
Трябва да създам хардуерен модул тестов, който да обхваща отвън блока и да му генерира неща?

Аха, хардуерният еквивалент на тест-бенчовете - генератор на стимули, нещо което да ги събира, и анализ. :)

Понеже ти е много мъглив постинга, ще отговоря с мъгливи съвети. Огледай си кита и виж какви интерфейси имаш и дали някой не е достатъчно прост да го ползваш за лесно I/O към PC. Примерно USB/UART конвертор. Ако има нещо подходящо можеш да си направиш верификацията от PC както си намериш за добре и с колкото стимули искаш.

Принципно проверката не е с нищо по-различна от това ако вместо матрица имаше купчина TTL-ки или черна кутия с входове и изходи - все ти трябва методология според това какво прави тестваното устройство и мащабността на теста. В случая с матрица на кит имаш редица улеснения само, дори това да си вържеш собствени JTAG вериги и да си направиш I/O-то през JTAG. :)
И ако дизайнът позволява, дори да напъхаш целият тест (FSM + вектори и логика) също в матрицата и да изведеш само един LED който да казва PASS / FAIL. :)

Автор:  MYXATA [ Чет Апр 29, 2010 1:37 pm ]
Заглавие: 

medeamona написа:
Колежката е потресена и в див ужас. (Ще предам поздрави на колегите ;) )
.......................днес за н-ти път четох ръководства, задълбочават объркването ми)
и някак си успявам да го пъхна вътре и да конфигурирам пинове, крака и прочие неща на Виртекса.
....


-Скъпи защо "трудно" влиза???
-Ами скъпа сгънал съм го на две ! 8O


Аз бих ти препоръчал да почнеш от
1.един брояч и някаква елементарна логика синтез +фитване +имплементация... Ползвай външния клок раздели си го ако искаш, където е необходимо слагай клок буфери.
2.ако искаш симулирай с модел сима ако искаш не.
3.После си харесай пинове, конфигурирай ги , и налей дизайна, като си изведеш 2-3 пина като контролни точки.

4. направи по-сложен дизайн
и пак 1..3

като това тръгне успешно, поззанимай се и с ДЦМ-то. като вече се научиш успешно го управляваш
пробвай да налееш един от блоковете за които говориш в началото и му задай входни сигнали и гледай какво има на изхода(пиша общо, защото незнам конкретно нищо за твоя дизайн)
после налей целия дизайн

Трябва да почнеш от нещо просто
и пиши за успехи ;)

Автор:  head_up [ Чет Апр 29, 2010 1:51 pm ]
Заглавие: 

колежке, да не те налегна депресията, та се загуби някъде? сподели до къде го докара?

Автор:  medeamona [ Чет Апр 29, 2010 2:26 pm ]
Заглавие: 

@head_up В момента усилено поздравявам майките на онея сладури от Синопсис, дето са писали рам моделите. (Напасвам рамовете и фифата за да са Xilinx съвместими и съответно гадината да ги поддържа). /Честотата, на която ще се движи блокченцето - около 400МHz.

@woody Така, ще започна от там, че ми докараха готов кит (ML605) с всичките му красоти и съответно портове - UART, JTAG, PCI и т.н.
(Преди 2 седмици се занимавах усилено с Е и Спекман, ако на някой му говори нещо). Сори, не мога да шия (но знам какво е оверлог).
Мисля, че идеята май наистина е да вкарам ФСМ/логики/PRBS (за съжаление xilinx не поддържа sуstemverilog иначе досега да съм боцнала написаните БФМ-и)

@MYXATA - не знам дали началството ще ми отпусне време, но все пак благодаря за напътствието, ще пробвам с нещо елементарно (мигане на LED).

Автор:  woody [ Пет Апр 30, 2010 12:56 pm ]
Заглавие: 

medeamona написа:
Така, ще започна от там, че ми докараха готов кит (ML605) с всичките му красоти и съответно портове - UART, JTAG, PCI и т.н.

От тези три UART и JTAG са достатъчно лесни да ползваш за комуникация с PC. PCI го отписваш освен ако в графика нямаш излишни няколко години. :)

Цитат:
Мисля, че идеята май наистина е да вкарам ФСМ/логики/PRBS (за съжаление xilinx не поддържа sуstemverilog иначе досега да съм боцнала написаните БФМ-и)

Повтарям се отново - всичко зависи от конкретната задача, няма генерални решения. SV помага за тест-бенчове, но не и за RTL дето ще го синтезираш в матрицата.

Автор:  head_up [ Пон Май 03, 2010 1:26 pm ]
Заглавие: 

колежке, споделете до къде стигна историческата битка? Почва да ме гризе нездраво любопитство :)

Автор:  medeamona [ Пон Май 03, 2010 2:46 pm ]
Заглавие: 

колега, битката върви so so. Sometimes win, sometimes lun.
Или казано досега, оправихме се с пригаждането на дизайна към ФПГА (единия блок, молим се дизайнерите да не го променят пак, поне не много) и работим по хардуерния тестбенч и протоколите

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/