Skocz do zawartości

Czas syntezy projektów


Elvis

Pomocna odpowiedź

Pewnie wyjdzie na to, że jestem bardzo niecierpliwy - i będzie w tym dużo racji. Ja wolę myśleć, że "czas to pieniądz", więc marnowanie go jest mocno irytujące.

Jako hobby próbowałem swoich sił w układach programowalnych, niestety początki są trudne - co owocuje ogromną liczbą błędów, składniowych, logicznych itd. Byłoby miło gdyby pętla: zmiany w kodzie - synteza - test zajmowała nieco mniej czasu. W przypadku prostych projektów, którymi się obecnie pasjonuję pierwsza i ostatnia część jest krótka, ale synteza zajmuje strasznie dużo czasu.

I stąd moje pytanie - jaką wybrać płytkę i środowisko, żeby w miarę komfortowo pobawić się układami programowalnymi? Chodzi mi o coś jak Arduino - opracować prosty kod, wgrać i zobaczyć, czy wreszcie dioda miga jak powinna.

Pewnie nie będzie to nic odkrywczego, ale nawet tak prosty przykład potrafi syntetyzować się całkiem długo - np. na układy Zynq to kilka minut dla prostej diody.

Może ktoś z czytelników forum ma więcej doświadczenia i mógłby podpowiedzieć co zrobić, żeby mniej czasu i pieniędzy marnować czekając aż synteza się skończy (często błędem...)?

Link do komentarza
Share on other sites

Witam,

pracuje na Nexys4 (Digilent) w srodowisku vivado, jest to moja piewsza plytka, nie mam duzego doswiadczenia ale z tego co widzialam moja synteza nie zajmuje duzo czasu. Instalacja vivado tez nie byla katastrofalnie dluga.

pozdrawiam

Link do komentarza
Share on other sites

Gość es2

Może ktoś z czytelników forum ma więcej doświadczenia i mógłby podpowiedzieć co zrobić, żeby mniej czasu i pieniędzy marnować czekając aż synteza się skończy (często błędem...)?

Quartus Altery, jak tylko do pobawienia, to bardzo szybki będzie archaiczny MAX+PLUS II. ISE WebPACK dla Xilinxa też był dość szybki ale nie używam tego od ponad 10 lat więc nowe wersje nie musza być szybkie.

W kamami.pl mają zestawy startowe dla CPLD i PFGA.

Link do komentarza
Share on other sites

Witam,

pracuje na Nexys4 (Digilent) w srodowisku vivado, jest to moja piewsza plytka, nie mam duzego doswiadczenia ale z tego co widzialam moja synteza nie zajmuje duzo czasu. Instalacja vivado tez nie byla katastrofalnie dluga.

pozdrawiam

Cześć,

a jakiego masz kompa (CPU,RAM, dyski) i jaki OS ?

Bo u mnie w pracy (i7 Core+16 GB RAM DDR3 dysk magnetyczny) synteza trwa długo. W domu to samo (AMD PhenomII 4 rdzenie taktowane 4GHz+ 8GB RAM DDR3 dysk SSD). Oba kompy WIN10 64-bit.

Porównując to do Xilinx "ISE Webpack" czas syntezy jest w Vivado dużo dłuższy dla takich samych projektów (takie są moje doświadczenia), więc raczej przychylam się do oceny Elvisa.

Nie próbowałem Vivado pod Linuksem, ale w najbliższym czasie zamierzam wykonać taką próbę.

Pozdrawiam.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Testowałem różne konfiguracje i przyznam, że wyniki mnie trochę zaskoczyły.

Najlepiej spisuje się i7-8700K, ale co ciekawe drugie miejsce w moich testach zajmuje niskonapięciowy i7-7500U...

Próbowałem też Xeon-a, kilku starszych procesorów oraz nowiutkiego i7-8750H - ale bez szału.

Używam Linuxa, ale sprawdzałem też Win10 - największa różnica to antywirus, który spowalnia cały komputer lepiej niż wirusy, którym ponoć zapobiega.

Teraz używam i7-8700K, 32GB RAM DDR4, SSD m.2.

Właśnie zamiast pracować bawię się FPGA i mierzę czasy syntezy dla kilku płytek. Napiszę o tym za chwilę.

A powód całego wątku był prosty - znudził mi się już trochę ElbertV2, chciałem pobawić się czymś nieco większym i z możliwością wgrania procesora. O picoblaze na elbercie pisaliśmy wcześniej - świetna zabawa, super narzędzie do nauki, ale pisanie kodu w dziwnym asemblerze tego procesorka jakoś mnie nie przekonało.

Pomyślałem, że spróbuję użyć Zynq-a. Chciałem na początek zostawić w spokoju CPU i użyć tylko FPGA. Ale czas syntezy przykładu z migającą diodą mnie zaskoczył... Zmierzę jeszcze raz i zaraz napiszę.

Stąd pomyślałem że zapytam na forum o doświadczenia z czasem syntezy / wyborem platformy.

[ Dodano: 25-04-2018, 10:50 ]

Update:

Mam już wyniki małego testu. Jako przykładu używam kodu z pierwszej części kursu FPGA - "mryganie_led". Zmiany to jedna dioda zamiast 8, żeby było sprawiedliwie, w końcu nie każda płytka ma 8 diodek.

Na ElberyV2 do syntezy używam starego dobrego Xilinx ISE Webpack, wersja 14.7.

Synteza zajmuje ok. 17 sekund. Programowanie płytki drugie tyle.

Jak wspominałem zamarzył mi się procesor - stąd wybór Zynq-a, a dokładniej płytki Zybo firmy Digilent.

Kod ten sam, zmiana tylko w definicjach pinów. No i oczywiście Vivado zamiast ISE, wersja 2018.1.

Wynik - synteza zajmuje 3 min. 45 sekund.... Chociaż programowanie płytki jest szybkie.

Najgorsze, że jako początkujący popełniam mnóstwo błędów - ale dowiaduję się o nich po 3 min 40 sek i wszystko od nowa...

Mój wniosek jest taki, że Zynq chyba nie nadaje się do podstaw nauki FPGA, ale pytanie - co w takim razie się nadaje?

[ Dodano: 25-04-2018, 11:08 ]

Update 2:

Płytka Nexus4 pojawiła się wcześniej - więc moje wyniki dla niej to 2 min (dokładniej 1 min 59s).

Co ciekawe kopiując definicje pinów ze strony Digilent-a, zapomniałem zmienić nazwy linii zegara. Dowiedziałem się o tym po 1 min 40s... To właśnie jest dla mnie najgorsze, że głupie błędy są zgłaszane dopiero po kilku minutach.

Link do komentarza
Share on other sites

Skoro masz już apetyt na procesory i to te większe, to pewnie moja propozycja Cię mnie zadowoli*, ale w swoim czasie dużo robiłem na układach Lattice (www.latticesemi.com). Seria MachXO2 i MachXO3 to bardzo fajne, małe (w porównaniu do "dorosłych" Alter i Xilinxów) FPGA zrobione na bazie pamięci FLASH więc wstające od razu po włączeniu, także w wersjach naprawdę niskomocowych. Nie mają wbudowanych bloków arytmometrów/DSP więc wielkich obliczeń na tym zrobić się nie da, ale jako wsparcie procesora w niewielkim projekcie sprawdzają się wyśmienicie. U mnie były sterowanym przez SPI systemem wielu długich, programowanych liczników robiących timing dla wielokanałowego samplera laboratoryjnego z jakimiś wydziwionymi triggerami i segmentacją zapisów. Przy okazji buforowały dane w wewnętrznych FIFO, sterowały pamięcią SDRAM i przepychały złapane próbki przez szybkie (480MHz) USB. Lattice'owy system był (już wtedy) szybki i jakoś mi pasował. Cały projekt kompilował się w minutę ze wszystkim na starutkim kompie z Windą XP. Pisałem oczywiście w Verilogu 🙂

* - mają tam wsparcie dla dwóch wersji procesorów: 8- i 32-bitowca ale chyba tylko ten pierwszy mieści się w Mach-ach. Do tego drugiego potrzebne większe ich FPGA, ale tych nie znam. W IDE można dowolnie konfigurować zasoby tak samego procesora jak i jego otoczenie, liczbę i rodzaj peryferiów, ich adresy, przerwania itp, no ale to standard.

Z modułów sprzętowych MACHy mają wbudowany zegar RC programowany w szerokich granicach, PLL rozkręcający zegar(y) do setek MHz, I2C i SPI, jakieś timery itp. Te ostatnie moduły mają standardowy interfejs pasujący do procesora soft-core, ale oczywiście nic nie stoi na przeszkodzie by je wykorzystać "na piechotę".

Układy są stosunkowo tanie a producent robi do nich proste płytki. Ja swoją (układ XO2-7000 czyli 7k komórek logicznych) kupiłem (dawno temu) na pewno poniżej 100zł.

https://www.tme.eu/pl/katalog/uklady-programowalne-lattice_113419/#id_category=113419&s_field=artykul&s_order=ASC&visible_params=2%2C10%2C35%2C98%2C144%2C367%2C406%2C789%2C2364%2C2390%2C2390&used_params=2390%3A111699%3B

Link do komentarza
Share on other sites

Układów Lattice nie znam, ale chętnie doczytam, dziękuję za informacje.

Na razie skończyłem "badanie" tego co Kamami ma w ofecie i wyniki są jak dla mnie niespecjalnie ciekawe:

ElbertV2 - 17s

Nexus4 DDR - 135s

Arty - 219s

Basys3 - 222s

Zybo - 225s

Czas dać szansę Alterze, zobaczę ile czasu będzie się syntezował tak banalny przykład.

Inna sprawa, że nie rozumiem dlaczego Nexus4 syntetyzuje się sporo szybciej niż np. Basys3. Może ktoś, coś z tego rozumie?

Link do komentarza
Share on other sites

Ja już mogę powiedzieć, że chyba Xilinx ma u mnie teraz duży minus. Pierwsze wyniki dla max10 - płytka maximator (Kamami):

synteza 20s, kolejne (po zmianach) 16-17s

Zobaczę jak wyglądają czasy większych układów i sprawdzę, czy to co się wygenerowało faktycznie działa. Ale wydaje mi się, że już wiem co będzie moją kolejną płytką po ElbertV2 🙂

[ Dodano: 25-04-2018, 14:15 ]

Ostatni update:

Do syntezy projektu dla układów Altery użyłem środowiska Quartus, wersja 17.1.0.

Sam kod bez zmian, trochę się namęczyłem z ustawieniami pinów, ale wyniki są następujące:

MAX10 (maximator): 14s

DE0-nano (Cyclone IV): 14s

DE1-SoC (Cyclone V + CortexA9): 36s

Moim zdaniem Xilinx powinien bardziej przykładać się do oprogramowania. Może i sprzęt maja dobry, ale dla cierpliwych i zaawansowanych. Ja chyba zmienię przyzwyczajenia i dam szansę Alterze (chociaż Intela nie lubię).

  • Lubię! 1
Link do komentarza
Share on other sites

fajnie poczytac, mozna sie duo dowiedziec.

Nie bede sie wypowiadac jak sprawa wyglada u mnie...

pozdrawiam(:

Cześć,

a czemu nie chcesz się wypowiadać ? Zawsze dobrze się dowiedzieć jak to wygląda u innych.

Pozdrawiam.

[ Dodano: 25-04-2018, 18:34 ]

Do syntezy projektu dla układów Altery użyłem środowiska Quartus, wersja 17.1.0.

Sam kod bez zmian, trochę się namęczyłem z ustawieniami pinów, ale wyniki są następujące:

MAX10 (maximator): 14s

DE0-nano (Cyclone IV): 14s

DE1-SoC (Cyclone V + CortexA9): 36s

Moim zdaniem Xilinx powinien bardziej przykładać się do oprogramowania. Może i sprzęt maja dobry, ale dla cierpliwych i zaawansowanych. Ja chyba zmienię przyzwyczajenia i dam szansę Alterze (chociaż Intela nie lubię).

Cześć Elvis,

włożyłeś trochę pracy i czasu w te analizy, ale trzeba przyznać, że wyniki są interesujące 😉

Pozdrawiam

Link do komentarza
Share on other sites

Jeszcze jeden mały update. Po wykonanych testach zniechęciłem się do Xilinxa i postanowiłem spróbować szczęścia z układami Altery/Intela. Maximator jest chyba najlepszym wyborem, ale Nios to ciągle nie to samo co ARM Cortex-A9 w Zynq-u.

Okazuje się jednak, że fpga z wbudowanymi hard-procesorami są teraz dostępne i w układach Altery. Zamówiłem płytkę DE0-Nano-SoC: https://kamami.pl/zestawy-uruchomieniowe/558403-terasic-de0-nano-soc-kit-p0286-zestaw-startowy-z-ukladem-altera-cyclone-v-soc.html

Dzisiaj dotarła i mam już pierwsze wyniki testu "mryganie_led".

Czas syntezy 26s, więc między maximatorem, a dużą wersją DE1. W zestawie jest karta SD z linuksem na pokładzie, więc można bawić się migającą diodą i mieć pełny system pod ręką.

Jedyna wada to zasilacz (bo też był w zestawie) - ma wtyczkę w standardziej jakiegoś dzikiego kraju, a przejściówki nie dołączyli 🙁

Poza tym zestaw wydaje się świetny, pierwsze wrażenie 1000 razy lepsze niż MYIR z Zynq o których pisaliśmy wcześniej.

Link do komentarza
Share on other sites

JZamówiłem płytkę DE0-Nano-SoC: https://kamami.pl/zestawy-uruchomieniowe/558403-terasic-de0-nano-soc-kit-p0286-zestaw-startowy-z-ukladem-altera-cyclone-v-soc.html

Dzisiaj dotarła i mam już pierwsze wyniki testu "mryganie_led".

Czas syntezy 26s, więc między maximatorem, a dużą wersją DE1. W zestawie jest karta SD z linuksem na pokładzie, więc można bawić się migającą diodą i mieć pełny system pod ręką.

Cześć Elvis,

do syntezy używasz Quartusa Altery ? Czystego, czy z jakimiś dodatkami (i która wersja)?

Pozdrawiam

Link do komentarza
Share on other sites

Do syntezy używam darmowej wersji Quartusa - najnowsza wersja 17.1, bez dodatków. Jak na razie jestem bardzo zadowolony.

Na płytce Maximator odpaliłem procesor Nios II, kompilacja kodu w C działa spod Eclipse, debugger przez JTAG śmiga aż miło - normalnie przepaść w porównaniu z PicoBlaze, który wcześniej męczyliśmy. Teraz staram się doczytać jak coś więcej niż migające diody obsłużyć 🙂

Link do komentarza
Share on other sites

Do syntezy używam darmowej wersji Quartusa - najnowsza wersja 17.1, bez dodatków. Jak na razie jestem bardzo zadowolony.

Na płytce Maximator odpaliłem procesor Nios II, kompilacja kodu w C działa spod Eclipse, debugger przez JTAG śmiga aż miło - normalnie przepaść w porównaniu z PicoBlaze, który wcześniej męczyliśmy. Teraz staram się doczytać jak coś więcej niż migające diody obsłużyć 🙂

Cześć Elvis,

soft do syntezy FPGA Xilinxa pod względem algorytmów syntezy wcale nie musi być gorszy od softu Intela. To raczej błędna decyzja projektowa - Vivado i ISE działają na maszynie wirtualnej Javy. Nie chcę wywołać tutaj nowej wojny, ale Java była i jest wolna (im nowsza wersja Windows tym Java działa wolniej, to takie moje osobiste spostrzeżenie). Nie mówię, że Java jest złym językiem, sam pisałem w niej kilka dużych aplikacji, ale programy wykonujące się pod kontrolą JVM działają wolno. Wydaje mi się,że Quartus Intel'a jest napisany w C++ i kompiluje się do kodu wykonywalnego x86/x64. Jak widać po porównaniu czasów syntezy tego samego projektu dokonanej przez Elvis'a programy kompilowane do kodu wykonywalnego CPU mają tu nadal przewagę (niezależnie od opinii evangelistów .NET czy Javy). Oczywiście można się ze mną nie zgodzić. Może nawet ktoś dostarczy dowodów, że się mylę?

Pozdrawiam

Link do komentarza
Share on other sites

Wydaje mi się, że to ryzykowne zaczynać nową wojnę o wyższość jednego języka nad innym. Jeśli już to powinniśmy tutaj dyskutować nad wyższością Verilog-a nad VHDL lub odwrotnie.

Celem moich testów było tylko znalezienie konfiguracji, przy której będę mógł się w miarę komfortowo uczyć układów programowalnych - jak dla mnie następnym krokiem są więc układy Intela/Altery. Ale do Xilinxa pewnie wrócę, tyle że jak już nie będę robił podstawowych błędów i kilka minut kompilacji nie będzie problemem.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.