| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Симулация на проект за CPLD http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2029 |
Страница 1 от 3 |
| Автор: | Zdrav [ Съб Мар 18, 2006 1:38 am ] |
| Заглавие: | Симулация на проект за CPLD |
Правите ли подобно нещо? Досега съм ползвал симулатора само за да се уверя, че отделни блокове работят така както очаквам. За симулацията на целия проект винаги съм смятал, че усилията и времето ще бъдат почти равни на тези отделени за създаването на проекта. Придържал съм се към принципа да не правя сложни описания на VHDL, а да ползвам така да го наречем "структурен" подход. Чертая проекта като схема така както бих я направил с TTL-ки. Останалото оставям на компилатора и оптимизатора. И ... тестване върху прототип. До скоро този подход не ме бе подвеждал. Издъни се един проект, който правих преди около 3 години и от който има произведени около 200-300 устройства пръснати по широкия свят. Издънката се прояви само при две от устройствата, но успяхме да я провокираме и при нас в работилницата. Оказа се недомислица при проектирането на структурата в едно CPLD. Ако бях проиграл всички варианти на симулатора това нямаше да се случи. Та темата която отварям е: Симулирате ли проектите си за CPLD, FPGA? Споделете някакъв опит. Какъв подход и инструменти използвате? Пишете си тестови сорсове на VHDL(Verilog), проигравате вариантите върху прототипи, ползвате някакви улесняващи редактори за съставяне на "test bench waveform", ползвате готови вече проверени сорсове ... ??? |
|
| Автор: | Balkana [ Съб Мар 18, 2006 1:22 pm ] |
| Заглавие: | |
Значи, на цял проект не съм правил. Симулация в ModelSim съм правил. Сорса беше на Verilog, testbench-a също. Според мен е трудно и почти няма смисъл да се прави пълна симулация на целия проект, особено ако е сложен. Като казваш CPLD, изглежда не е много обемисто и сложно. Според мен най-оптималното е да се раздели проекта на относително самостоятелни функционални блокове, които да се изтестват, по възможност, напълно, с метод blackbox. В този случай, идеалният вариант е да може да се извъртят всички възможно комбинации на входовете и да се проверят за валидност изходите във всичките случаи на комбинации от входни сигнали. После, като се съберат фунционалните блокове- направо експериментална проверка на цялата система. Мои познати, които пишат на VHDL, си пишат тестбенчовете на Verilog, защото е по-удобно. |
|
| Автор: | BrainStorm [ Съб Мар 18, 2006 1:36 pm ] |
| Заглавие: | |
И аз процедирам по същия начин ..... пишеш testbench'a линкваш и тестваш (на Verilog).... досега само по модули съм го правил .... за цели проекти наистина е почти невъзможно (или по скоро прекалено трудоемко че да си заслужава времето ...). |
|
| Автор: | bateAz [ Съб Мар 18, 2006 2:01 pm ] |
| Заглавие: | |
Аз не правя симулации. Обикновено ако е добре замислено, тръгва поне от втория път. Правя реални тестове, по-лесно е. Понякога си извеждам на един-два тестови пина по-интересните вътрешни състояния и зяпам на скопа какво става. Методът е да се строи и тества на етапи, където е възможно. |
|
| Автор: | Zdrav [ Съб Мар 18, 2006 7:26 pm ] |
| Заглавие: | |
Ясно значи и при вас е така. Като поработих с ModelSim-а се оказа че не е толкова трудно да се правят и по-сложни симулации. Та реших че някой може да има повече опит. Явно трябва да се вложат повече усилия и време ... А някакви отзиви за симулатора в новия WebPack? Доколкото ми е известно вече не е ModelSim, а някаква разработка на Xilinx. Тези дни ще го качвам при мен. |
|
| Автор: | MYXATA [ Чет Юни 22, 2006 1:29 pm ] |
| Заглавие: | ако питаш за уебпак8... |
там има малко шит ама го фиксват с упдейти. а моделсим има пак xilinxedition. |
|
| Автор: | MYXATA [ Чет Юни 22, 2006 1:33 pm ] |
| Заглавие: | а за CPLD |
при ниски скорости симулациите се припокриват с дизайна. за повисоки почва т.н. състезание на сигналите.....и си е..ло мамата. така че най-добре правиш квот правиш( проектираш,симулираш,прочие) после от важни места вадиш контролни точки на свободните крака на CPLD-то и дебъгваш |
|
| Автор: | asp [ Чет Юни 22, 2006 10:36 pm ] |
| Заглавие: | |
Аз от няколо дена разучавам тея хави и не мога да схвана някои работи. Значи в WEB PACK 8 си има възможности за симулация. Аз сложих и някакъв MODEL SIM SE 6 na MENTOR той за кво ми е? |
|
| Автор: | HCL [ Чет Юни 22, 2006 11:58 pm ] |
| Заглавие: | |
За сьщото, ако не се льжа предните версии на WebPack нямат собствен симулатор и използват менторския. |
|
| Автор: | FiTTiLA [ Пет Юни 23, 2006 10:14 am ] | |||||||||
| Заглавие: | Re: Симулация на проект за CPLD | |||||||||
Аз изпозвам първо ModelSim, веднага лъсват някои работи в дизайна, но и аз преди използвах метода изливам, и гледам с осцилоскопа, обече не е печалившо. Симулирам през всичките нива от поведеческото до последното, търся "червени жици", получават се при състезание на сигнали. Едно съм разбрал ако работи на ModelSim-а на последното ниво на симулация ще работи и на живо, иначе не е ясно какво става. Затова според мене е по добре да се симулира първо. |
||||||||||
| Автор: | asp [ Пет Юни 23, 2006 1:13 pm ] | ||||||||||||||||||
| Заглавие: | Re: Симулация на проект за CPLD | ||||||||||||||||||
какви са тези нива на симулация и червени жици можеш ли да поясниш за незрящите |
|||||||||||||||||||
| Автор: | nickich [ Пет Юни 23, 2006 1:25 pm ] | |||||||||||||||||||||||||||
| Заглавие: | Re: Симулация на проект за CPLD | |||||||||||||||||||||||||||
...и откъде може 4овек да се сдобие с едно копие |
||||||||||||||||||||||||||||
| Автор: | Zdrav [ Пет Юни 23, 2006 2:23 pm ] |
| Заглавие: | |
@fitila въпросът ми първоначално беше по скоро дали правите симулация на целия проект като цяло и как. В конкретният случай ставаше въпрос за едно CPLD което се използва като мост между 8 битова ISA шина и няколко периферни устройства. Всичко това беше проверено при други проекти и нямаше никакви проблеми. Във въпросният случай обаче вътре в CPLD-то беше решено да има още и 16 битов таймер вързан към шината. Та проблемът идваше от там че четенето на таймера става асинхронно спрямо такта който цъка таймера. Софтуерът който чете от таймера го ползва като "free running timer" и засича само интервали без да се интересува от абсолютната стойност. При четене първо се засича моментната стойност в един 16 битов регистър и след това се чете последователно LSB-MSB. Да обаче се оказа, че поради асинхронните събития, понякога във вътрешния регистър се прехвърля грешна стойност, когато прехвърлянето съвпадне с момента на инкрементване на таймера. Отделните битове на таймера не се променят едновременно, а с някакво малко закъснение един спрямо друг и когато сигналът за запис на думата от таймера дойде точно по времето, когато един през друг се променят отделните битове, някой от битовете ще бъде прехвърлен във регистъра със старата си стойност редом до новите стойности на другите битове. И когато това е някой по-старши бит ... Това е конкретният случай. Може би за по-опитните колеги това е тривиална грешка на аматьор. И точно такъв бях аз тогава Причините да се допусне такава грешка са не една и две и са свързани и със организацията на работа и с опита на разработчика. Но си мисля че ако имаше една достатъчно дълга фаза в която се симулира работата на целия проект и човек има възможност да помисли за всички възможни варианти, това нямаше да се случи. След този случай реших сериозно да вложа повече време в изучаването на начините за тестване в симулатора. Вътрешни сигнали не съм извеждал на крачета защото винаги крачетата са ми били кът. Така че нищо не може да замени напълно, чистия разсъдък и внимателното обмисляне на подробностите. |
|
| Автор: | miro_atc [ Пет Юни 23, 2006 3:16 pm ] |
| Заглавие: | |
никак даже не е "тривиална грешка"... Въпреки че клок домейните трябва да се учат в първи клас, подобни грешки съм виждал при доста "големи" специалисти За тоя проблем, обаче не е нужна симулация - просто напоследък почти всички среди си го дават като warning още при компилиране. Относно симулациите... на времето бяха доста неточни и се правяха трудно. Сега modelsima бачка доста добре, ама не е чак толкова необходим, щото подобни тривиални грешки, както и състезания на сигнали, проблеми със сетъп и холд времена се виждат още при компилиране. Едно време за тия проблеми симулацията помагаше понеже извеждането на контролни сигнали както казва мухата променя рутването и от там всички времена... Напоследък до симулация стигам, само ако има по-сериозна логическа грешка и по-сложен проект и не ми се мисли много. Просто като видя проблем на практика, проигравам на симулатора същата ситуация. Бтв като се работи с VHDL няма нужда да се учи нищо за симулатори, просто си описваш проблемната ситуация... |
|
| Автор: | FiTTiLA [ Пет Юни 23, 2006 4:32 pm ] | |||||||||
| Заглавие: | ||||||||||
Първо не съм голям специалист, това незнам кой може да го каже, но съм похабил бая време с FPGAта. Да симулирам целия проект, правя testbench - малко чукано се прави ако е сложен (не малко де). Тук в България е доста трудно да се намерят специализирани курсове за програмируема логика. Аз съм почнал от ТУ-София в ECAD лабораторията имаше подготвителен курс за кандидастване в една фирма. Та там научих горе-долу основите, после ми се наложи да правя един проект ( и не само един), на едно ADC се взимат стойностите и се пишат в RAM памет, от другата страна има едно MCU с DMA, което чете RAMа през SPI интерфейс, та правя го това нещо, пишем бришем, стана една state машина за SPI ( направих го - задаваш команда, адрес и колко байта искаш и после само четеш данните), друга за ADCто и посредата написах синхроннен dual port ram controller, който има заложен преоритет за ADC машината, целия дизайн бачка на 50Mhz за VirtexE100. Бах мааму, на поведеческо ниво всичко наред, като пуснах на post-route сумулация пак наред, направих после post-place-and-route simulation леле майко ела да видиш "червени жици" = такива на който състоянието, не се знае какво е, заради състезанията. Почвам аз да боря и се оказа че като са ни учили нещо не са ни научили как се правят state машини, та като четах яко две седмици, какво е туй FSM = Finite State Machine и имали почва у нас, пренаписах стате машините и работата тръгна даже я подкарах на 100Mhz. Има състезания те са виждат обаче в момента на стробиране нещата са установени. В ModelSim има модели на поведение, с времевите закъснения и всичко което е характерно за логиката, която използвате. Т.е. би трябвало нещата да са много близко до истината. Някой говорише за ftp, ако има такова мога да uploadна нещо, но с foudation 6 имаше зор и трябваше да кракна един .dll за да стане. Е нали сме шибани хакери, ама това е живота като искаш modelsim и xilinx. Ние имаме законно fondation 3 ама няма подръжка на новите неща, така че се наложи да прибегнеме до другия метод ... |
||||||||||
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|