Xilinx hat vor ein paar Tagen die Version 10.1 ihrer Entwicklungsumgebung ISE herausgebracht, zu der ich mir auch gleich die gratis-Version, das
ISE WebPACK angesehen habe. Ganz konkret hat mich der Verilog+VHDL Simulator "ISIM" interessiert, den ich seit der Version 9.2 von benutze. Bei der alten Version gab es noch einige Kinderkrankheiten. Zum Beispiel bin ich ueber einige noch nicht implementierte Sprachfeatures gestolpert, habe es mehrmals geschafft die Simulation zum Segfaulten zu bringen und in einem Fall habe ich sogar
unsinnige Simulationsergebnisse erhalten. Dennoch war ich mit der 9.2er Version von "ISIM" im allgemeinen recht zufrieden, habe mir aber von der neuen Version einige Verbesserungen erhofft. Der erste Eindruck von der neuen Version laesst aber schlimmes befuerchten:
Ich wollte ISIM gleich mit einem meiner aktuellen Projekte testen. In diesem Test-Projekt kommen einige Block Ram Primitives (BRAM18SDP und BRAM36) vor, welche mit den INIT_* und INITP_* Parametern mit Daten vorinitialisiert werden. Waehrend die alte ISIM Version fuer beide Primitives jeweils nur einen Augenblick zur Uebersetzung gebraucht hat, braucht die neue ISIM Version fuer jede
Instanz eines der Primitives etwa 5 Minuten. Daheinter steht offenbar eine gut gemeinte Performance-Optimierung, die zur Folge hat, dass ein Verilog Modul fuer jede Kombination von Parametern neu uebersetzt werden muss. Diese Uebersetzung funktioniert ueberigens so, dass der HDL-Code in C-Code umgewandelt wird, welcher dann mit einem von Xilinx mitgeliefertem GCC in Objektcode compiliert wird. Ein Vorgehensweise, die ich grundsaetzlich fuer schlau halte. Nur geht da irgend etwas schief und die C-Files fuer meine Block Ram Primitives werden etwas ueber 4MB gross. Das zu compilieren braucht eben seine Zeit - und auf ein mal dauert die Simulation deutlich laenger als Synthese, Mapping, Place&Route und In-Circuit-Test gemeinsam. Massive Fail.
"Verschlimmbessert" sagt man in der Regel zu so etwas. Ich hab auf meiner Workstation jetzt wieder ISE 9.2 im Einsatz..