Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Symulacja układu zaimplementowanego w strukture

24 Cze 2007 18:56 4809 33
  • Poziom 18  
    Witam

    Mam zrobiony pewien projekt na Virtex II. Generalnie jest już skończony, symulacja funkcjonalna ok. Chciałbym jeszcze zasymulować jego działanie jak się zachowa po zaimplementowaniu w strukture (gdyż będę korzystał z częstotliwości około 100 MHz). Nie wiem w jaki sposób to zrobić, czy ewentualnie jakiego programu/opcji w ISE użyć. Będę wdzięczny za pomoc.

    Pozdrawiam
  • Poziom 15  
    Witam!
    Czy chodzi ci może o "post place and route symulation" ? Masz taką opcję w ISE. Do symulacji możesz użyć symulatora ModelSim . Jeszcze trzeba napisać testbench ewentualnie posłużyć się test bench wave form (środowisko graficzne), ale to pewnie już wiesz.
    Pozdrawiam
  • Poziom 17  
    Prymulka napisał:
    Witam

    Mam zrobiony pewien projekt na Virtex II. Generalnie jest już skończony, symulacja funkcjonalna ok.


    Nie chcialbym Cie zasmucic ale przy czestotliwosci 100MHz to zabawa dopiero sie zaczela.
    Jesli faktycznie caly kod ma chodzic przy tej czestotliwosci to symulacja timingowa niewiele Ci pomoze.
    Podeszlas od, jak to sie brzydko mowi, d... strony. Szansa ze zadziala Ci caly kod przy tej czestotliwosci od strzala jest taka jak 6 w lotto.
    no chyba ze jest to counter ;-)

    Moja rada to rozbierz wszystko na czynniki pierwsze i wkladaj modul po module i sprawdzaj czy dziala.

    Chyba ze masz to wszystko pieknie napisane ;-) z zachowaniem wszystkich regul high-speed rtl.
  • Poziom 13  
    Witam.
    Też zacząłem bawić się z układami FPGA i zastanawiam się jak inaczej (oprócz wstępnej symulacji kodu poprzez napisanie dobrego Testbench-a) testować zaprojektowany soft lub caly sprzęt :) :)..

    griva jakbyś ty to zrobił ? Przecież można wykonać symulację po implementacji z uwzględnieniem czasów propagacji (chociaż jest to troszkę przerost formy nad treścią bo to w strasznie dlugo trwa i w sumie niewiele z tego wynika). Jak się w ogóle testuje takie urządzenia w inny niż zasugerowany wcześniej?

    Pozdrawiam
  • Poziom 18  
    No ja mam teraz inny problem. Zająłem ponad 20% struktury XC2V1000 i ISE odmawia mi już posłuszeństwa przy syntezie (Mam Athlon 900 i 128MB RAM). Tak więc dopóki nie kupie lepszego kompa mogę pomarzyć o tym projekcie.
  • Poziom 17  
    a używasz ISE WebPack czy pełne ISE Foundation, bo WebPack ma ograniczenia do kilku tysięcy bramek, więc pewnie je przekroczyłeś w swoim projekcie
  • Poziom 17  
    ciastek4 napisał:

    Jak się w ogóle testuje takie urządzenia w inny niż zasugerowany wcześniej?

    Pozdrawiam


    Symulacje funkcjonalna musisz zrobic zeby wiedziec czy faktycznie zakodowales to co chciales (nigdy nie zakladaj ze zakodowales napewno dobrze i bedzie dzialac od strzala - a jak zadzialalo tzn. ze cos jest zle ;-)).
    No chyba ze robisz mala zmiane typu and na or.

    Cala ta symulacje po syntezie i timingowa mozna sobie podarowac, to wszystko bazuje na softwarowych modelach ktore sa skomplikowane z definicji takze zawsze maja jakiegos bug-a a raczej cala szarancze.
    Poza tym symulowanie timingowej netlisty robia tylko ortodoksi, raz ze czesto jest zle generowana dwa ze symulacja trwa wieki.
    Przyklad: urzadzenie synchronizuje sie do GPS-a min 2 sec. - wyobraz sobie ile bedzie trwala symulacja timingowa, 2 sec czasu symulatora!!

    Dlatego lepiej jest debugowac to od srodka - Chipscope! build trwa ile trwa, a wynik widzisz po 2 sec i masz wszystko przetestowane w srodowisku docelowym + dowiadujesz sie o problemach o ktorch netlista timingowa nie ma prawa wiedziec.
  • Poziom 18  
    Cenna uwaga kolego :) Kilka tysięcy bramek to już przekroczyłem dawno dawno temu, a używam ISE WebPack. A tak btw to Foundation można gdzieś pobrać za free?
  • Poziom 17  
    to może to było kilkanaście/dziesiąt tysięcy ale w każdym bądź razie na pewno jest taka blokada :P
    Prymulka napisał:
    A tak btw to Foundation można gdzieś pobrać za free?
    legalnie nie :P
  • Poziom 13  
    griva napisał:


    Symulacje funkcjonalna musisz zrobic zeby wiedziec czy faktycznie zakodowales to co chciales (nigdy nie zakladaj ze zakodowales napewno dobrze i bedzie dzialac od strzala - a jak zadzialalo tzn. ze cos jest zle ;-)).


    święta racja :). O tym bardzo dobrze wiem i zawsze gdy coś mi ruszy od strzału to szukam błędów i zawsze udaje mi się je znaleźć.
    A propo wypowiedzi:
    griva napisał:

    Cala ta symulacje po syntezie i timingowa mozna sobie podarowac, to wszystko bazuje na softwarowych modelach ktore sa skomplikowane z definicji takze zawsze maja jakiegos bug-a a raczej cala szarancze.
    Poza tym symulowanie timingowej netlisty robia tylko ortodoksi, raz ze czesto jest zle generowana dwa ze symulacja trwa wieki.

    Zgodze się z tym w 100%. Mój pierwszy projekt taki większy w VHDL-u związany był z cyfrową filtracją sygnałów audio (prosty FIR zaimplementowany ). Symulacja 2s trwała ok 50 min + polączenie z MATLABEM +30 min ( ale mam w miare dobry komputer 1GB ram-u robi swoje)... już wolałem wgrać i tak barbarzyńsko sprawdzić na "ucho" czy działa tak jak powienien ;P
    griva napisał:

    Dlatego lepiej jest debugowac to od srodka - Chipscope! build trwa ile trwa, a wynik widzisz po 2 sec i masz wszystko przetestowane w srodowisku docelowym + dowiadujesz sie o problemach o ktorch netlista timingowa nie ma prawa wiedziec.


    Nie rozumiem tego za bardzo:( ja korzystam z pakietu ACTIVE-HDL (firmy ALDEC). W jakim oprogramowaniu pracujecie ? I na czym polega dokladnie ta symulacja ? Gdzie mógłbym znaleźć informacje na ten temat ?
    Z góry dziękuję za pomoc.
  • Poziom 17  
    ciastek4 napisał:


    Nie rozumiem tego za bardzo:( ja korzystam z pakietu ACTIVE-HDL (firmy ALDEC). W jakim oprogramowaniu pracujecie ? I na czym polega dokladnie ta symulacja ? Gdzie mógłbym znaleźć informacje na ten temat ?
    Z góry dziękuję za pomoc.



    bo to juz nie jest symulacja, to cos jakbys mial logic analyzer w fpga.
    Takze robisz capture prawdziwych sygnalow ktore sam wybierasz, takze moglbys zlapac probki po twoim filtrze, obejrzec na waveformie i/lub zapisac do pliku a potem w matlabia porownac z soft modelem.

    Poczytaj sobie na stronach Xilinxa o ich toolu Chipscope, Altera ma tez swoj odpowiednik - generalnie proste narzedzie ale ulatwia maxymalnie "zycie"

    Active ma jakis support tego nie wiem na czym to polega ale ma.
  • Poziom 10  
    Piszę pracę dyplomową związaną z układami programowalnymi. Udało mi sie już stworzyć projekt i chciałbym dołączyć do pracy kilka testów przeprowadzonych za pomocą aplikacji chipscope. Problem jest jednak w tym, ze po stworzeniu ICONa i konfiguracji ILA, Chipscope nie widzi żadnych rejestrów ani połączeń w układzie :/ Co może być przyczyną?
  • Poziom 10  
    A gdzie je mogę znaleźć? Chipscope używam od niedawna i nie mam jeszcze o nim zbyt wielkiego pojęcia :/
  • Poziom 17  
    Wojtasss84 napisał:
    A gdzie je mogę znaleźć? Chipscope używam od niedawna i nie mam jeszcze o nim zbyt wielkiego pojęcia :/


    faktycznie jak nie wiesz co to jest instancja i nie wiesz o tym ze sam powinienes ja stworzyc w swoim kodzie to proponuje przeczytac dokumentacje do chipscopa i cos wiecej o hdlu
  • Poziom 11  
    Griva,

    griva napisał:

    Cala ta symulacje po syntezie i timingowa mozna sobie podarowac, to wszystko bazuje na softwarowych modelach ktore sa skomplikowane z definicji takze zawsze maja jakiegos bug-a a raczej cala szarancze.
    Poza tym symulowanie timingowej netlisty robia tylko ortodoksi, raz ze czesto jest zle generowana dwa ze symulacja trwa wieki.


    Bardzo boje sie Twojej wypowiedzi. W chwili obecnej robie symulacja funkcjonalna, po syntezie i timingowa. I mam nadzieje ze jezeli symulacja timingowa chodzi na 100 MHz to w rzeczywistosci na fizycznym ukladzie to podobna wartosc osiagne. Z mojego malego doswiadczenia wynika ze moze nie na 100 MHz ale na 90 MHz powinno isc. A jesli tak nie jest, to problem prawdopodobnie wystepuje na polaczeniu FPGA otoczajace srodowisko.


    Przez najblizsze pol roku nie bede mial dostepu do plyty, w ktora moga wlozyc moja logike. A zewnetrzenego modulu (srodowiska pracy logiki), ktory bedzie zrodlem sygnalow wejsciowych nie bede mial pewnie jeszcze przez rok.

    Zgadzam sie z Toba w pelni ze znalezienie bledu w np implementacji karty sieciowej ktora po 10 minutach pracy zachowuje sie nie prawidlowo jest nie wykonalne (symulacja trwala by pewni kilka miesiecy). Ale mam nadzieje, ze jest glowne zastosowanie ChipScopePro.

    Pozdrawiam
    Mariusz
  • Poziom 17  
    mariusz102102 napisał:
    Przez najblizsze pol roku nie bede mial dostepu do plyty, w ktora moga wlozyc moja logike. A zewnetrzenego modulu (srodowiska pracy logiki), ktory bedzie zrodlem sygnalow wejsciowych nie bede mial pewnie jeszcze przez rok.



    nie mozesz zbudowac sobie jakiegos zastepczego srodowiska, prototypu?

    Moj pierwszy powazny projekt wygladal tak, zakodowalem przesymulowalem, dostalem plyte, nic nie dzialalo, rozebralem projekt na czynniki pierwsze, uruchamialem modul za modulem w kosci - a projekt byl mega prosty i max czestotoliwosc to 25MHz takze nie bylo zadnych timingowych spraw.

    Nie łudz sie, zawsze czlowiek cos ominie, wogole to ze jestes koderem i testerem to z definicji jest zle i powoduje marnej jakosci testy.
  • Poziom 28  
    mariusz102102 napisał:

    Bardzo boje sie Twojej wypowiedzi. W chwili obecnej robie symulacja funkcjonalna, po syntezie i timingowa. I mam nadzieje ze jezeli symulacja timingowa chodzi na 100 MHz to w rzeczywistosci na fizycznym ukladzie to podobna wartosc osiagne. Z mojego malego doswiadczenia wynika ze moze nie na 100 MHz ale na 90 MHz powinno isc. A jesli tak nie jest, to problem prawdopodobnie wystepuje na polaczeniu FPGA otoczajace srodowisko.


    z mojego sporego doswiadczenia wynika, ze jak symulacja chodzi na 100MHz,
    to uklad bedzie pracowal i ze 110MHz; timing analizer jest raczej pesymistyczny;
    pracuje z alterami, moze z xilinx i ise jest inaczej;
    problem jest nie w zle generowanej netliscie czy 'szaranczy bledow w softwarowych
    modelach', a w tym, ze nie jestes w stanie przewidziec wszystkich mozliwych kombinacji
    wejsc do ukladu i timingu tych wejsc;
    bardzo czesto korzystam z wbudowanego w quartusa symulatora do sprawdzenia
    zaleznosci czasowych sygnalow miedzy soba i zegarem i zgodnosc z rzeczywistoscia
    jest bardzo dobra, ale symuluje kilkaset ns, nie sekundy;
    do sprawdzenia poprawnosci algorytmu sluza symulatory RTL;

    analizatory ChipScope xilinxa i SignalTap altery to niezwykle pomocne
    narzedzia do odpluskwiania, ale maja swoje ograniczenia;
    liczba sygnalow ktore mozna monitorowac jest ograniczona i sam proces
    testowania laczy sie z wielokrotnym przekompilowaniem projektu,
    logika zapisujaca stan wybranych nodow zmienia projekt, a wiec
    i rozmieszczenie logiki w fpga, a wiec i timing ukladu;
    wybrane do monitorowania sygnaly sa probkowane jakims zegarem
    systemowym, wiec wykrycie problemow z timingiem za pomoca
    ChipScope czy SignalTap wymaga sporego doswiadczenia;
    przy okazji - czesto do taktowania SignalTap uzywam podwojonej
    na pll czestosci zegara glownego, dzieki czemu mam dwukrotnie
    wieksza rozdzielczosc, co czasem pomaga w znalezieniu zodla
    problemu;

    J.A
  • Poziom 17  
    J.A napisał:
    jest bardzo dobra, ale symuluje kilkaset ns, nie sekundy;
    do sprawdzenia poprawnosci algorytmu sluza symulatory RTL;


    hmm czyli symulujesz np. 50 taktow zegara 100MHz - minus parenascie lock PLLki - to co ten uklad zdazy zrobic?
  • Poziom 28  
    Cytat:

    hmm czyli symulujesz np. 50 taktow zegara 100MHz - minus parenascie lock PLLki - to co ten uklad zdazy zrobic?


    no to zalezy od tego, co ma zrobic ... :)
    ok, chyba rozumiem podtekst pytania wiec napisze, do czego
    ja uzywam symulatora;

    - uzywasz pll w ukladzie do podwojenia czestotliwosci,
    interesuje cie, jaki bedzie phase-shift wyjcia z pll-ki
    w stosunku do zegara systemowego;
    i czy czasem nie zalezy ten parametr od tego, czy
    place&route tool wybral pll_1 czy pll_5;

    - wiesz, ze zegar wchodzacy do ukladu nie taktuje FF bezposrednio,
    ale idzie na specjalny bufor, czasami jest wazne ile
    tenze bufor wnosi opoznienia;

    - masz w ukladzie kilkanascie/kilkadziesiat rejestrow
    konfiguracyjnych, warto czestokroc sprawdzic, czy dekoder
    adresu wskazujacy rejestr majacy byc zapisany/odczytany
    zmiesci sie w jednym takcie zegara, czy moze nie ma szans
    i trzeba zrobic jakis pipe-line;

    - z ukladu wychodza dane do innych urzadzen, razem ze wskaznikiem
    do kogo sa adresowane, warto sprawdzic, czy dane i wskaznik
    nie maja zbyt duzego przesuniecia w czasie;
    i jak sa polozone w stosunku do zegara;

    - dobrze jest sprawdzic przy jakim min. setup i hold time uklady
    wejsciowe twojego projektu zapisza poprawnie dane z zewnatrz;

    - musisz przeslac dane miedzy modulem pracujacym z zegarem A
    a modulem pracujacym z zegarem B;
    dobrze do tego sie nadaje fifo, o ile dopuszczalne jest
    trwajace kilka cykli tzw. latency;
    wiesz w jakiej fazie zegara dane wyjda z fifo ?
    ja bym sprawdzil symulatorem;

    tego typu testy zazwyczaj nie ma sensu robic po kompilacji calego
    projektu, raczej wystarczy skompilowac konkretny modul;
    jesli jest to klopotliwe, mozna sobie w takiej sytuacji pomoc
    dodajac do top level extra pin "test" ladujacy do odpowiednich
    rejestrow konieczne wartosci, by uklad zaczal od razu wykonywac
    testowana funkcje bez koniecznosci np. symulowania ladowania
    konfiguracji po i2c;

    to tyle na dzisiaj :)

    J.A
  • Poziom 10  
    Witam

    Czyli jedynym prawidlowym sposobem, na sprawdzenie dlaczego moje wlasne IP core oddaje mi nie takie rezultaty jak oczekuje, (podczas symulacji wszystko jest ok w modelsim) jest debbagowanie za pomoca Chipscope, rozumiem ze powinienem debbagowac sam modul bez calej otoczki czyli innych IP, bram i procesora ??

    Aby wymusic wejscia debbagowanego ukladu powinienem uzyc VIO z Chipscope jak dobrze zrozumialem??
  • Poziom 28  
    l_smolinski napisał:
    Czyli jedynym prawidlowym sposobem
    na sprawdzenie dlaczego moje wlasne IP/.../

    w modelsim symulujesz rtl, czy netliste p&r [po syntezie
    i rozmieszczeniu ligiki w konkretnych komorkach] ?

    roznica w wynikach symulacji rtl i rzeczywistym zachowaniu
    fpga najczesciej wynika z 2 powodow [pod warunkiem, ze ten
    rtl jest napisany poprawnie z punktu widzenia syntezy]
    - w testbench wzajemny timing sygnalow wejsciowych i zegarow
    jest inny niz w rzeczywistosci;
    - timing w 'srodku' fpga, zbyt duze bloki kombinacyjne w stosunku
    do mozliwosci uzytego fpga i wymaganej czestotliwosci zegara;
    to drugie mozesz sprawdzic symulacja, jesli plikiem wejsciowym
    do symulatora bedzie netlista [z opoznieniami];
    to pierwsze teoretycznie tez, jesli zmierzysz wzajemny timing
    wejsc i napiszesz testbench tak, by odpowiadaj obrazkom
    z oscyloskopu ...
    l_smolinski napisał:
    rozumiem ze powinienem debbagowac sam modul bez calej otoczki/.../

    nie, nie ma powodow tak robic, choc uproszczenie kodu oczywiscie
    uprosci debugowanie;

    nie wiem co to 'VIO'


    witam wszystkich po wakacjach :);

    J.A
  • Poziom 10  
    Cytat:

    w modelsim symulujesz rtl, czy netliste p&r [po syntezie
    i rozmieszczeniu ligiki w konkretnych komorkach] ?


    Sory za moje lamerstwo, ale troche nie zrozumialem...

    Pliki do symulacji dostarcza mi srodowisko EDK, ja tylko klikam "Wygeneruj pliki do symulacji". Cos tam sie podrodze kompiluje, ale to chyba nie jest synteza tylko wypelnienie bram programem i cos tam jeszcze. (z pamieci pisze teraz i nie pamietam)

    Prosilbym o jakis link do tutorialu symulacja po syntezie :)
    Cytat:

    nie wiem co to 'VIO'


    Rodzaj core jaki genruje ChipScope. Opisany w ten sposob.

    VIO - "The virtual input/output core is a customizable core that can both monitor and drive internal FPGA signals in real time. Unlike the ILA and IBA cores, the VIO core does not require on-chip RAM."
  • Poziom 28  
    l_smolinski napisał:
    Sory za/.../

    kazdy kiedys zaczynal;
    chodzi o to, ze jak w swoim kodzie rtl napiszesz np.:
    a <= b + c;
    i bedziesz chcial to przesymulowac w modelsim, to ten program
    stworzy jakis sobie wlasciwy plik bedacy ekstrakcja funkcji zawartej
    w rtl i na podstawie tego pliku bedzie 'wyliczal' wartosc a
    w kolejnych chwilach czasu zaleznie od b i c;
    na tym etapie symulator nie ma zadnej informacji o docelowej kostce fpga;
    symulowana jest 'czysta koncepcja';

    aby zblizyc sie bardziej do rzeczywistosci kompilatory takie jak
    ise moga wyprodukowac tzw. netliste, czyli plik opisujacy,
    jak przykladowe 'a <= b + c' jest zrealizowane na dostepnych bramkach
    dla konkretnego fpga, lacznie z informacja o [typowych] opoznieniach
    sygnalow na polaczeniach miedzy bramkami i czasem reakcji samych
    bramek [jak i przerzutnikow];
    symulacje takiej netlisty nazywamy symulacja post place and route;

    jak to zrobic w twoim srodowisku - nie powiem, bo go nie znam,
    albo w manualu ise szukaj czegos podobnego do:
    'generation of post place and route netlist', 'p&r simulation' ...
    ew. odpowie ci tutaj ktos, kto jest bardziej z ise za pan brat;

    napisał:
    VIO - "The virtual/.../

    o ile dobrze rozumiem twoj pierwszy post, symulacja pokazuje
    poprawne zachowanie, a rzeczywistosc sie od niego rozni;
    jesli tak, to nie powinienes raczej sam wymuszac stanow wejsc,
    co oferuje VIO;
    powinienes raczej dolaczyc do projektu ILA & Co i testowac
    w tych samych warunkach, w jakich pojawilo sie nieprawidlowe
    dzialanie;

    J.A
  • Poziom 10  
    Witam, na razie mam inne sprawy na głowie i zajmę się rozwiązaniem tego problemu trochę później. No i nie mam jak sprawdzić moich wyników, przez wakacje nie mam dostępu do płyty, z którą pracuję (może sie to zmieni hehe).

    Zastanawiam się czy mój problem mógł być spowodowany przez poniższą sytuację:

    Procesor taktował powiedzmy 200 Mhz magistrala łącząca procesor i mój moduł 200 Mhz, a max. częstotliwość mojego układu to powiedzmy 170 Mhz. A ja podałem ten sam zegar do procka i do modułu.

    Jak zrobić/wygenerować/ustawić (nie wiem jak to nazwać) kilka sygnałów taktujących i przypisać je do konkretnych modułów?? (w edk od biedy w ise)
    W pliku ucf??

    p.s pewnie rozwiązanie gdzieś w necie jest, ale jak ktoś wie niech napisze.
  • Poziom 18  
    Kurcze fajny temat, a sie troche spóźniłem.

    Generalnie nie zgodzę sie z Griva, ze post-route simulation jest do bani, choć przy dużych projektach trwa potwornie długo i niewiele wnosi, bo wiadomość że coś nie działa w dużym projekcie to nie nowina. :D

    Ta mi sie wydaje i J.A, ze swojego doświadczenia chyba potwierdzi, że testowanie kodu można rodzielić na testowanie funkcjonalności (sprawdzanie że zakodowaliśmy to co chcieliśmy) i statyczną analizę timmingów(bez testowania funkcjonalności).

    Według mnie, puszczenie symulacji post-route na krótki odcinek czasu daje jakąś informacje o timmingach w projekcie. Choć jak zwraca uwagę Griva, z względu na którki czas symulacji "coverage" będzie raczej marny.

    Z drugiej strony, odpowiednio postawione constainty timmingowe powinny załatwić kwestie timmingów(ewentualnie zglosić błąd), ale zawsze symulacja post-route(z krótkim odcinkiem czasu) to zawsze inne podejscie do timmingów i dodatkowe sprawdzenie.

    Panaceum oczywiście nie ma, ale ChipscopePro/SignalTap z dodatkiem przezornosci, czyli myślenia o debuggowaniu juz na etapie projektowania daje rade. A jak sie do tego wlasny testbench w software doda, to już VIO. :D

    mariusz102102, jak masz problemy z dostępem do sprzętu i interfejsem do niego, to może nawiąż współpracę z inną firmą. ;-)
    Szczególnie jeśli zamiast V4fx100 mógłbyś użyć V4lx100.

    l_smolinski jakoś musisz sie komunikować z projektem na chipie, jesli nie masz żadnego interfejsu na PCI/Ethernet/RS232 itp. to VIO+ChipscopePro to chyba najlepsze rozwiazanie:

    l_smolinski napisał:
    Zastanawiam się czy mój problem mógł być spowodowany przez poniższą sytuację:

    Procesor taktował powiedzmy 200 Mhz magistrala łącząca procesor i mój moduł 200 Mhz, a max. częstotliwość mojego układu to powiedzmy 170 Mhz. A ja podałem ten sam zegar do procka i do modułu.

    Zdecydowanie tak, częstotliwość pracy układu ogranicza najdłuższa ścieżka(w sensie czasu) od przerzutnika do przerzutnika. Jeśli implementacja podaje max. cz. 170MHz to znaczy że jest w układzie ścieżka która wiele szybciej np. 200MHz nie nadąży.

    l_smolinski napisał:

    Jak zrobić/wygenerować/ustawić (nie wiem jak to nazwać) kilka sygnałów taktujących i przypisać je do konkretnych modułów?? (w edk od biedy w ise)
    W pliku ucf??

    p.s pewnie rozwiązanie gdzieś w necie jest, ale jak ktoś wie niech napisze.

    Chodzi Ci zapewne o rozdzielenie domen zegarowych w projekcie i taktowanie obydwu układów z różnych źródeł sygnału zegarowego.

    Biorąc pod uwagę że nie wiesz jak to nazwać sugerowałbym używanie jednego źródła sygnału zegarowego i dopasowanie maksymalnej czestotliwości w ukłądzie do najwolniejszego modułu.
  • Poziom 28  
    [g.d.] napisał:
    Kurcze fajny temat

    fajny, ale chyba juz sie wyczerpal :);
    Cytat:
    /.../post-route simulation jest do bani,/.../bo wiadomość że coś nie działa
    w dużym projekcie to nie nowina

    mozna by nawet powiedziec, ze to "oczywista oczywistosc";
    ale jak juz wiemy, ze cos nie dziala i mniej wiecej w ktorym miejscu,
    to symulator moze pokazac dlaczego;
    zwykle - przy duzych projektach - trzeba nieco przerobic kod tak,
    by logika od razu wykonywala funkcje czy akcje, ktora chcemy przetestowac,
    na przyklad wpisac na stale wartosci konfiguracyjne do rejestrow sterujacych,
    ktore w oryginalnym projekcie sa ladowane seryjnie;
    Cytat:
    /.../testowanie kodu można rodzielić na testowanie funkcjonalności/.../
    i statyczną analizę timingów

    tak to sie robi, u mnie przynajmniej; plus testy kodu na platformie prototypowej
    z fpga, bo u mnie docelowym ukladem jest asic...;
    symulacja czasowa to kiepski pomysl na sprawdzenie, czy uklad bedzie dzialal,
    to raczej narzedzie to znalezienia zrodla bledu, jak juz sie ten blad zlokalizuje;
    poza tym ja chetnie korzystam z poczciwego symulatora w quartusie do sprawdzenia
    zachowania sie jakiegos pomyslu na rozwiazanie problemu, zwlaszcza jesli w takim
    rozwiazaniu wystepuja rozne zegary, pll, fifo, czy jakies nietypowe uzycie
    zasobow fpga;
    no i jeszcze zwykle sprawdzam nim rozwiazanie, zanim je podam jako
    przyklad na elektrodzie :);
    Cytat:
    l_smolinski napisał:
    Jak zrobić/wygenerować/ustawić/.../kilka sygnałów taktujących

    g.d.:
    sugerowałbym używanie jednego źródła sygnału zegarowego[

    tez bym, przynajmniej na poczatek, postepowal zgodnie z sugestia g.d.;

    J.A
  • Poziom 10  
    Dzieki za wyjaśnienie, tak tez zrobie - taki sam zegar z największą dopuszczalna częstotliwościa do wszystkiego: "byle po bandzie" hehe.

    Nie mam plytki przez wakacje wiec sobie wszystko symuluje...

    Mam jeszcze maly problemik ze symulacja post place & route:

    Mianowicie czesc kodu mam wygenerowane i pisze wielkimi literami "Do not edit this lines". Jest tam miedzy innymi taka linijka (C_DWIDTH = 64):

    Code:
    input      [0 : C_DWIDTH-1]               Bus2IP_Data;


    potem taka:

    Code:
     reg        [0 : C_DWIDTH-1]               slv_reg0;


    natomiast kod wygenerowany do symlacji post place & route zawiera miedzy innymi takie cos :

    Code:
    input [0 : 63] Bus2IP_Data;


    Code:
    wire [63 : 0] slv_reg0;


    No i pojawia sie problem z wyswietlaniem:

    wszystko dziala poprawnie tyle ze sam musze sobie wyniki iterpretowac dla slv_reg - msb jest nabardziej po prawej a powinien byc po lewej.

    W modelsim nie bardzo mozna zmienic sposob interpretacji rejestru tzn. czytaj od prawej do lewej a nie od lewej do prawej. (O ile wiem)

    Co mogę z tym zrobić??

    Dodano po 4 [minuty]:

    Acha i czy w sprzecie takie cos bedzie mi sprawiac jakies klopoty ??
  • Poziom 28  
    l_smolinski napisał:
    jest napisane wielkimi literami "Do not edit this file

    spokojnie mozesz zamienic 'C_DWIDTH-1' na 63, czy [0:63] na [63:0],
    w przypadku tej drugiej zmiany musisz popatrzec, z czym i jak to jest
    polaczone, zeby nie doprowadzic do 'skrzyzowania' linii;

    mimo prosby altery o nie edytowanie wygenerowanych modulow,
    mozesz to bezpiecznie robic - skopiowawszy oryginal uprzednio :)

    J.A
  • Poziom 17  
    zeby nie powtarzac tego za kazdym razem, napisz sobie swoj modul (wrapper) w ktorym przypiszesz tak jak chcesz porty z oryginalnego kodu altery