Forum: FPGA, VHDL & Co. XILINX ISE 13.4 dauert zu lange


von Gilles B. (gilles_b)


Lesenswert?

Hallo Leute,

bin am Konfigurieren eines Spartan-6 inklusive Transceiver, FIFOs und 
einigem an selbstgemachten. Habe nun beim post-route-kompilieren 
einzelner Funktionsblöcke schon die Nase voll, weil es einfach teilweise 
ewig dauert, selbst wenn ich nur eine kleine Sache an einem IP Core 
ändere.

Meine Specs:
HP Elite Book mit
Core i5-2520M @ 2,5 GHz
Windows XP 32 Bit SP3 (2,94 GB RAM nutzbar von 4 GB)
Und ne normale HDD mit (wahrscheinlich) 5400 rpm wie ich denke...

Jetzt die große Frage:
Was bringt am meisten Leistungsschub?
SSD oder Upgrade auf Windows 7?? Beides wäre unter Umständen möglich.

Ich glaube an der RAM Menge liegts bei meinen doch wieder recht kleinen 
Designs (die Console sagt auch was von kanpp 300 MB Usage) nicht und 
auch im Task-Manager zeigt nur selten ein Core von den vieren (HT) volle 
Auslastung...

Als ich das Design früher auf nem Netzlaufwerk hatte, ging es sogar 
deutlich langsamer als jetzt, was mich vermuten lässt, dass es an den 
Festplattenzugriffen liegt...

Also was bringt am meisten?
(1) SSD
(2) Windows 7
(3) Ein Teil des RAMs als virtuelles Laufwerk deklarieren... :/

oder (1) + (2)...

Danke vielmals!
Schönen Gruß

von O_o (Gast)


Lesenswert?

SSD + Linux :-)

von Christian R. (supachris)


Lesenswert?

Was ist denn lange? Ich hab hier ein Virtex 4 Design, Auslastung etwa 
20%, BlockRam 100% das dauert auf einer Z800 unter Windows 7 x64 etwa 
eine halbe Stunde komplett zu bauen.
Ein Spartan 6 LX150 Design mit viel Logik aber relativ wenig BlockRAM 
dauert noch länger. Da helfen auch keine 16GB RAM und auch keine 10.000 
u/min HDD. Da sind kaum HDD-Zugriffe dabei.
Solche komplexen Sachen dauern halt, deshalb simuliert man ja bis alles 
klappt und implementiert dann erst.

von Lattice User (Gast)


Lesenswert?

SSD macht zwar das Arbeiten insgesamt viel schneller, bringt aber für 
das rechenintensive P&R nichts, vorrausgesetzt du hast genügend RAM.

Da P&R CPU und Memoryintensiv und obendrein single threaded ist, hilft 
nur Taktfrequenz und grosser CPU Cache.
Bei dieser Art von Anwendung hat sich in letzter Zeit (seit CoreDuo) nur 
wenig an Leistungsverbesserung getan. (bezogen auf die Taktfrequenz)

Multicore hilft nur wenn das die Application auch unterstützt, Diamond 
von Lattice kann mehrere P&R Prozesse parallel ausführen und danach das 
beste Ergebnis auswählen. Was aber nur dann nütztlich ist wenn das 
Design eine hohe Taktfrequenz braucht und deswegen nicht jeder P&R Lauf 
erfolgreich ist.

von Georg A. (georga)


Lesenswert?

Was dauert denn so lang bzw. in welchem Verhältnis steht das? Die 
üblichen Trödler sind Synthese, Mapping und Routing...

Bei der Synthese kann man meistens nicht so viel machen. Selbst wenn man 
schon vor-synthetisierte Cores als .ngc einbindet, muss xst das ganze 
nochmal flach durchoptimieren, wenn es irgendwie Performance haben soll. 
Das dauert... Man könnte noch an den Optimierungen rumspielen (zB. 
Registerbalancing) aber spart nicht viel Realzeit, kostet dafür 
Timing...

Wirklich viel kann man bei map/par erreichen. Ein paar grobe und 
grosszügige Plazierungsconstraints für Module (ala INST "MODULE_x/*" = 
XY:xy", am besten in der Nähe der dazugehörigen Pins) reduziert den 
Suchraum schon stark. Es gibt manchmal auch so Routingblindgänger, wo 
ewig rumgemacht wird, bis das Timing erreicht wird. Wenn man am Seed 
rumspielt (-t <x>) flutscht es auf einmal durch. Je ähnlicher die 
Designs sind, um eher bleiben die Blindgänger bei einem bestimmten Seed.

von Vanilla (Gast)


Lesenswert?

Hallo O_o,

wenn das ein Trollversuch werden sollte, funktioniert er nicht.

Die Linux Versionen der ISE sind ein wenig schneller als das Windows 
Pedant.

Die SSD sollte man allerdings noch aus der Kette nehmen.

Idealerweise: 64Bit Linux + 32Bit ISE + 16GB+ Hauptspeicher + komplette 
ISE Toolchain und Projekt in RAMdisk ...

Gruß

Vanilla

von Christian R. (supachris)


Lesenswert?

Gibt es Vergleichzahlen, um wieviel schneller die ISE auf Linux läuft?
Und wieso eine 32-Bit Version auf einem 64 Bit System?

von Gustl B. (-gb-)


Lesenswert?

Ich verstehe auch nicht wieso das nicht schneller ist. Hier lastet das 
nur maximal einen Kern aus, macht also so 25% Last und braucht kaum RAM. 
Die 10 Minuten kann man zwar warten, aber es schränkt schon ein, vor 
allem wenn man nach dem Trial&Error Prinzip vorgeht und immer die 
Hardware LEDs zum debuggen nutzt.

Die rund 10 Minuten braucht es hier bei einem 60% vollem Spartan3 1200, 
bei kleineren Sachen geht das Ganze auch schon in weit unter einer 
Minute.

Aber ich wünsche mir eine Version die mal die ganze Hardware nutzt zum 
rechnen.

von franke (Gast)


Lesenswert?

die synthese tasks lassen sich nicht parallelisieren, d.h. dir bringen 
octa core und was auch immer nix... d.h. einen core und den so schnell 
wie möglich...

von Christian R. (supachris)


Lesenswert?

Gustl Buheitel schrieb:
> allem wenn man nach dem Trial&Error Prinzip vorgeht und immer die
> Hardware LEDs zum debuggen nutzt.

Dafür gibts die Simulation. Bei uns hier ist ein häufiges Implement 
wirklich nur noch in ganz verzwickten Fällen nötig. 10 Minuten geht doch 
noch. Mach mal ein Design für einen großen Virtex 6, dann kannst du erst 
mal richtig warten.

von D. I. (Gast)


Lesenswert?

franke schrieb:
> die synthese tasks lassen sich nicht parallelisieren, d.h. dir bringen
> octa core und was auch immer nix... d.h. einen core und den so schnell
> wie möglich...

Wobei algorithmisch nichts dagegenspricht, 8-Kerne den Suchbaum 
durchsuchen zu lassen, ...

von Lattice User (Gast)


Lesenswert?

D. I. schrieb:
> Wobei algorithmisch nichts dagegenspricht, 8-Kerne den Suchbaum
> durchsuchen zu lassen, ...

Wenns denn so einfach wäre. Ein kurze Webrecherche zu dem Thema hat mir 
gezeigt, dass es da noch keinen Durchbruch gibt. Die meisten Ansätze 
versuchen das Problem mit Partitionierung in kleinere Einheiten zu 
zerlegen und jede Partition einzel zu lösen.
Genetische Algorythmen für das TSP scheinen erfolgversprechend zu sein, 
aber auch da noch kein Durchbruch.

Das einzige was auch in teuren Tools gängig ist, mehrere P&R Prozesse 
mit unterschiedlichem Seed zu starten, und danach das beste Ergebniss zu 
verwenden. Das bringt aber für die Turnarround Zeit gar nichts.

Ausserdem, 10 Minuten ist noch gar nichts. Bei meinem aktuellen Projekt 
sind es 2 Stunden, und dann ist obendrein P&R nur in ca 10-20% der Fälle 
erfolgreich.


PS: TSP = Traveling Salesmam Problem.

von Vanilla (Gast)


Lesenswert?

Christian R. schrieb:
> Gibt es Vergleichzahlen, um wieviel schneller die ISE auf Linux läuft?
> Und wieso eine 32-Bit Version auf einem 64 Bit System?

Hallo Christian,

Belastbare Vergleichszahlen kann ich nicht presäntieren, die gemachten 
Tests sind nicht unbedingt represantiv bewegten sich aber im Bereich von 
einigen zehn Sekunden bis mehreren Minuten in einem mittelprächtigen 
Design (70% Resourcennutzung in einem V5-FX110 Design). (64Bit Linux 
Version)
Interessanter Weise hat alleine der Bitgen unter Windows rund eine halbe 
Minute längter gebraucht als unter Windows.

Zum Thema warum die 32Bit Version schneller rend als die 64Bit Version?

Da gibts mehrere Gründe:

1) Der 32bit Compiler mit dem die ISE compiliert ist erzeugt kleineren 
Code, der optimaler gecacht bleibt.
2) Mutmaßlich braucht die 32Bit ISE auch weniger Speicher für P&R da 
32Bit Daentypen und Speichertabelleneinträge nutzt und deshalb auch 
weniger Cachemisses als die 64Bit Version hat.

Für die Linuxversion insgesamt dürfte aber vor allem sprechen, das das 
Filehandling unter Linux insgesamt performater ist als unter Windows.

von Lattice User (Gast)


Lesenswert?

Vanilla schrieb:
> Tests sind nicht unbedingt represantiv bewegten sich aber im Bereich von
> einigen zehn Sekunden bis mehreren Minuten in einem mittelprächtigen
> Design (70% Resourcennutzung in einem V5-FX110 Design). (64Bit Linux
> Version)

Und welche Laufzeit braucht das Design? d.h. wieviel ist der 
Laufzeitunterschied in %?
Wie verteilt es sich auf die einzelen Prozesse? (Synthese, Mapping, 
Place&Route)

von Vanilla (Gast)


Lesenswert?

Lattice User schrieb:
> Vanilla schrieb:

> Und welche Laufzeit braucht das Design? d.h. wieviel ist der
> Laufzeitunterschied in %?
> Wie verteilt es sich auf die einzelen Prozesse? (Synthese, Mapping,
> Place&Route)

Die Zeiten lagen größenordnungsmäßig bei 50 Minuten in Synthese und 
Mapping, Place&Route brauchten je nachdem wie gut er durch kam, zwischen 
einer viertel Stunde und anderthalb Stunden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.