Hi,
ich benutze für Privat das Vivado v2018.3 (64-bit) (Webversion) auf
Ubuntu.
Beim Synthetisieren von einem Counter schlafe ich glatt ein so ewig
dauert es. AUffällig lang hält es sich bei dem Schritt "Running
write_bitstream" auf. Gibt es möglichkeiten diesen Vorgang etwas zu
beschleunigen?
übrigens, das synthetisieren dauert bei mir 4 minuten und das obwohl
meine CPU's sich langweilen.
Bei Vivado hilft es oft nur die Single-Thread Performance zu erhöhen,
sprich CPU mit viel GHz kaufen.
4 Minuten ist ja noch nicht viel... ich warte selbst mit einem Core i7
mit 3.5 GHz manchmal 30 Minuten für einen Durchlauf. Hängt natürlich vom
FPGA und dessen Komplexität ab. Nicht alles lässt sich parallelisieren.
Auf jeden Fall solltest du dir mal "set_param general.maxThreads"
angucken
Vivado schrieb:> synthetisieren dauert bei mir 4 minuten
vier Minuten? Skandalös.
Ich hatte vorhin eine Synthese, die lief 190 Minuten. Und hat dann das
Timing (knapp) verfehlt. Im nächsten Anlauf klappt's bestimmt ;)
Ja mir ist klar das die Zeiten explodieren werden. Ich habe mir aus spaß
mal nen Addierer mit 1024 bit und 7 Operanten gebaut. Quartus II hatte
daran 4 Tage gerechnet :D
Aber 4 Minuten nur um einen 16 bit Zähler zu bauen ..
Das write bitstream dauert für einen gegebenen FPGA Typ immer gleich
lange, egal wie leer oder voll der ist.
4 Minuten, pah. Lächerlich, das ist ja quasi nur Write Bitstream. :D
Christian R. schrieb:> 4 Minuten, pah. Lächerlich, das ist ja quasi nur Write Bitstream. :D
4 Minuten sind ja auch nur die Synthese. Vll dauert ihm auch der Rest u
lange, das steht da mt keinem Wort. :-/
Vivado schrieb:> übrigens, das synthetisieren dauert bei mir 4 minuten> und das obwohl meine CPU's sich langweilen.
Wenn im FPGA noch genug Platz ist, dann geht die Synthese meiner
Erfahrung nach recht schnell (ein paar Minuten ist "recht schnell"). In
dem Augenblick, wo der FPGA langsam voll wird, explodieren die Zeiten -
auch dann, wenn das Timing äußerst unkritisch ist.
Will man das Design dann noch beschleunigen, hilft nur viel Geduld.
Zumindest in der Webpack-Version sind nur sehr wenige Prozeßschritte
parallelisert. Wenn man stattdessen mehrere Synthesen gleichzeitig
laufen lassen könnte, hätte man wenigstens was davon...
Tobias B. schrieb:> Christian R. schrieb:> 4 Minuten, pah. Lächerlich, das ist ja quasi nur Write Bitstream. :D>> 4 Minuten sind ja auch nur die Synthese. Vll dauert ihm auch der Rest u> lange, das steht da mt keinem Wort. :-/
Achso, so wie er es geschrieben hatte, klang es so als würde er den
gesamten Prozess bis zum Bitstream als Synthese bezeichnen. Write
bitstream ist anscheinend für ihn ein Teil davon:
Vivado schrieb:> Beim Synthetisieren von einem Counter schlafe ich glatt ein so ewig> dauert es. AUffällig lang hält es sich bei dem Schritt "Running> write_bitstream" auf
Christian R. schrieb:> Achso, so wie er es geschrieben hatte, klang es so als würde er den> gesamten Prozess bis zum Bitstream als Synthese bezeichnen. Write> bitstream ist anscheinend für ihn ein Teil davon:
Ja, ist irgendwie nicht eindeutig. Es fehlen auch ein paar Infos, z.B.
ob Batch oder GUI Mode verwendet wurde oder wie lange die einzelnen
Teilprozesse dauern.
Das Projekt mal anderen zur Verfuegung zu stellen koennte auch helfen.
Dann kann jeder der Interesse hat ein Bitfile generieren und berichten
ob es unerwartet lange dauerte.
Ich arbeite gerade an einem Design das 90% der LUTs eines Artix7-35
verbraucht und dabei mäßige Timing-Constraints benötigt. Vivado benötigt
für die komplette Synthese/Implementierung/Bitfileerzeugung ca. 20min im
Script-Mode, also ohne GUI. Zeitweise werden alle Cores verwendet,
meistens aber nur einer, eine gute Singlecore-Performance ist bei Vivado
also schon wichtig. Ich habe zwar keine exakten Vergleiche, aber gefühlt
läuft Vivado im Script-Mode deutlich flotter als mit der GUI.
hi,
ich hatte es auch, dass er bei "write_bitstream" eine gefühlte Ewigkeit
einfach "nichts" tat, keine CPU, keine Festplatte (bzw. SSD), kein
Netzwerktraffik. Irgendwie sah es nach einem Timeout aus und
tatsächlich, er versucht irgendeine "link-lokal" Adresse (169.254....)
anzusprechen, die es bei nicht gibt. Ich habe diese Adresse einfach
einer Netzwerkkarte zusätzlich gegeben und der Schritt "write_bitstream"
lief dann erheblich schneller, auch wenn der ganze Vorgang von Synthese
bis Bitstream einfach ätzend langsam ist.
Zum Vergleich, ich hatte mal ein gaaanz kleines VHDL Modul mit Lattice
Diamond für einen MachXO2 und für einen Artix7-S6 übersetzten lassen:
Lattice < 15sec, Xilinx > 4min
grüße
daniel__m schrieb:> MachXO2 und für einen Artix7-S6 übersetzten lassen: Lattice < 15sec,> Xilinx > 4min
Äpfel und Birnen. MachXO2 ist ein CPLD mit einer überschaubaren Anzahl
Makrozellen. Sowas macht Xilinx ISE bei fast leer auch in wengen
Sekunden.
Selbst der Artix ist da wesentlich komplexer und das Erzeugen des
Bitstreams dauert dann halt wesentlich länger.
Aber insgesamt ist die Xilinx Software schon vergleichsweise langsam.
Das ist wahr. Wobei es sich mit Vivaro schon gebessert hat, vor allem
wenn man die parallele CPU Nutzung auf 8 stellt.
Christian R. schrieb:> Aber insgesamt ist die Xilinx Software schon vergleichsweise langsam.> Das ist wahr. Wobei es sich mit Vivaro schon gebessert hat, vor allem> wenn man die parallele CPU Nutzung auf 8 stellt.
Was aber nur für einige Prozeßschritte gilt und mit der WebPACK-Edition
noch weniger. Leider.
Christian R. schrieb:> Äpfel und Birnen. MachXO2 ist ein CPLD mit einer überschaubaren Anzahl> Makrozellen. Sowas macht Xilinx ISE bei fast leer auch in wengen> Sekunden.
Der MachXO2 ist schon eher ein FPGA (verwendet wurde der 4000er). Von
den Resourcen dem A7S6 nicht unähnlich, jedenfalls rechtfertigt das
nicht weit über Faktor 16 in der Laufzeit.
Das einzige, was ich Xilinx zugute schreibe ist, dass deren SW (Vivado,
nicht die alte, aber schnellere ISE) auch mit wahnsinnig großen
FPGAs/SOCs umgehen können muss. Das wird sicherlich einen trade-off
haben, so dass kleinst-FPGAs schlecht da stehen.
Xilinx Versuch mit OOC (zumindest bei der Synthese) ist m.M.n. auch erst
bei größeren Cores interessant, da das Starten der SW (was für jeden
OOC-Run gemacht wird) vergleichsweise lange dauert (trotz i7700 + NVMe +
Linux). Und bei mir immer wieder für "Spass" sorgt, so dass ich es eher
selten nutze.