Hallo zusammen, ich habe eine Frage über Quartus2/TCL zum automatischen Generierung des Build-Infos. Nach einem Tag Recherchierung nach dem Thema, habe ich was interessantes gefunden. Und zwar heißt der Beitrag "Increment Version Number in File" http://www.altera.com/support/examples/tcl/tcl-increment-version.html Ich habe den TCL-Code in ein .tcl-file kopiert, und in .psf-File den Befehl: #set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:update_version_number_test.tcl" hinzugefügt, sowie angepasst. Weil ich zu wenig Ahnung vom TCL habe, kommt es immer wieder Error-Meldung. Kann jemand bisschen einleuchten, wie man macht? Mein Wunsch ist, mit TCL kann ich automatisch Build-Infos erzeugen lassen: Vor Kompilieren: 1) Programming-File (.rpd; .Jic; .sof) alle löschen 2) Timetamp, Quartus-Version, Project-Version(vorher als Konstant per Hand definiert) in ein .VHD-File aktualisieren 3) alte BuildNummer lesen, inkrementieren, zurückschreiben in .VHD-File Nach erfolgreicher Kompilieren: 1) Programing-File Name ändern. Weil Quartus die Namenform: ProjectName.sof erzeugt, möchte so umschreiben: $Datum$ProjectName$V$ProjectVersion$B$BuildNummer.sof Und dann ProjectName.sof löschen 2) .Jic; .rpd Programmingfile konvertieren Nach fehlerhaften Kompilieren: 1) BuildNummer lesen, dekrementieren, zurückschreiben in .VHD-File vielen Dank im Voraus! Lg Tomy
ps. Entschuldigung für meine mangelhafte Deutsch..
Und was genau ist jetzt Dein Problem?
Dr. Schnaggels schrieb: > Und was genau ist jetzt Dein Problem? Danke Dir erst mal für Deine Antwort!:) Meine Frage ist, für meinen Wunsch oben wie das .tcl-script so ungefähr aussieht... lg Tomy
Hallo, mein TCL script anbei (fast 1zu1 von Altera). Dabei wird die SVN Revision generiert + Timestamp. Kest
Kest schrieb: > Hallo, > > mein TCL script anbei (fast 1zu1 von Altera). Dabei wird die SVN > Revision generiert + Timestamp. > > Kest Danke für Dein Code, es hilft mir bisschen weiter:) Wie kann ich die Quartus-Version, Quartus-Build Nummer usw.. in das .TCL - File einbinden? Also, ich sehe in .qsf-File die wichtige Informationen wie: set_global_assignment -name FAMILY "Cyclone IV E" set_global_assignment -name DEVICE EP4CE55F23I7 set_global_assignment -name LAST_QUARTUS_VERSION 13.0 set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484 set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 7 und möchte gern diese in den Speicher (Config Flash EPCS) und Register-Bank speichern. Wie kann ich das in .TCL machen? Danke!
Wozu sollen diese Informationen gut sein? Du kannst sowieso keinen Bitstream in ein anderes Device laden. Es macht mehr Sinn eine Versions ID und ggf. einen Zeitstempel zu speichern. Was hilft dir die Quartus Version wenn du nicht weißt welche Source Files verwendet wurden? Um Informationen in ein VHD-File zu schreiben bietet Altera hier schon einige Beispiele auf denen du aufbauen kannst: Speziell hier ist eigentlich schon alles gemacht: http://www.altera.com/support/examples/tcl/tcl-version-number.html Hier steht wie man die Zeit über tcl bekommt: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html Meine Vorgehensweise war wie folgt: Ich erstelle mir mit tcl ein vhd file in dem ich mehrere CONSTANTs über tcl befülle. Diese werden dann einem out Port zugewiesen. Die so erhaltene Entity binde ich dann in meinem restlichen Design ein und bekomme somit die Build-Information. Dies kann ich dann nach Belieben auf Register legen und später auslesen.
Vielen Dank! :-) lg Tomy
Hallo, ich bin mal wieder.. Ich hab mir 2-TCL-Files gebastelt. Die erste wird mit "PRE_FLOW_SCRIPT_FILE" aufgerufen, und die zweite mit "POST_FLOW_SCRIPT_FILE" aufgerufen. In erster File wird paar Markos definiert, die ich gern in der zweiter tcl-file nutze. Zum Beispeil sind die Project-Nummer, Build-Nummer, Version set PROJECT_NO "90" set SW_VERSION_H "5" set SW_VERSION_L "7" In der zweiter Tcl-File mache ich so: global PROJECT_NO SW_VERSION_H SW_VERSION_L post_message -type info "PROJECT_NO = $PROJECT_NO" Aber meckert der Quartus, dass "PROJECT_NO" nicht gefunden!!! Wie kann ich das machen? Danke sehr und schönes WE:-) Lg Tomy
Erstelle eine Datei defines.tcl die du von beiden Scripts mittels source-Befehl aufrufst. Darin kannst du ganz normal deine Variablen setzen und anschließend in beiden Files nutzen.
Jürgen schrieb: > Erstelle eine Datei defines.tcl die du von beiden Scripts mittels > source-Befehl aufrufst. Darin kannst du ganz normal deine Variablen > setzen und anschließend in beiden Files nutzen. super, danke:) Ich hab die automatische Programming File (.jic; .pof) Generierung geschafft. Ich möchte zuerst die alle alte .jic; .pof -Files vor Kompilieren löschen. Wie kann ich das machen? Ich finde nur Befehl : file delete filename. Also, das heißt muss ich "filename" kennen... Vielen Dank! lg Tomy
Hallo, so habe ich gemacht, es funktioniert:-) foreach Progfile [glob -nocomplain *.sof *.jic *.pof *.rdp] {file delete -force $Progfile} schönes WE:-) lg Tomy
Hallo, ich bin mal wieder und eine Frage hätte ich noch gern. Zwar kann ich die Rechnerinformation mit tcl kriegen, z.b.: "Benutzername@rechnername". Ich hab gegooglt aber keinen Erfolg... Vielen Dank im voraus! lg Tomy
Jürgen schrieb: > Lies einfach die Systemvariable für den Benutzernamen. > > http://wiki.tcl.tk/15627 vielen Dank für deinen Tipp:) so sieht das aus: global env ;# Array System Variable set Myhostname [info hostname] set MyUserName $env(USERNAME) Hätte noch eine Frage, und zwar für CRC32-Prüfsum Erstellung von .Jic-File nach Kompilieren nutze ich die Software crc32.exe. Wie kann ich crc32.exe vom TCL aufrufen? Vielen Dank! lg Tomy
Hallo Tomy, eine ausführbare Datei wird mittels "exec" ausgeführt. exec [path]\crc32.exe
Mr.X schrieb: > Hallo Tomy, > > eine ausführbare Datei wird mittels "exec" ausgeführt. > > exec [path]\crc32.exe Danke!:) so habe ich gemacht, und es funktioniert set CRC32res [exec crc32.exe Project.jic] post_message -type info "\Version.tcl\] $CRC32res" es liefert in meinem Fall: 0xAFCAF291 (2,097,376) Wie kann ich dem crc32.exe sagen, das er nur 32-bit CRC liefern soll? also als Ergebnis möchte ich gern "AFCAF291" kriegen, nicht noch mit Größen und so. Noch eine Frage über Quartus2 "Smart-Recompile". Wie erkennt man dass bei jetziger Kompilierung handelt es sich um ein "Smart-Recompile", damit man nicht Build-Nummer in TCL hoch zählt. In meinem konkreten Fall habe ich zwei .tcl-files, einer VerPreFlow.tcl, der andere VerPostFlow.tcl heißt. Das VerPreFlow.tcl wird mit einem "PRE_FLOW_SCRIPT_FILE" aufgerufen, diese liest BuildNummer aus einem BuildNum.txt, und inkrementiert die. Dann wird die neue Buildnummer mit Zeitstamp in eine Version.VHD (als .bsf Symbol-file einmal erzeugt, die VHDL Input/Output Port sind aber nicht geändert), Registerbank aktualisiert, mit der Hoffnung dass der Quartus mit der neuen Buildnummer und Zeitstamp kompiliert. Wenn ich mir die BuildNum.txt und Version.vhd nach der erfolgreichen Kompilierung ansehe, finde ich die neue gewünschte inkrementierte BuildNummer. Aber wenn ich mit dem JTAG-Programmer die alte .Jic-file (alte BuildNummer) mit der neuer .Jic verifizieren lasse, sind die beide identisch!!! Es scheint, die eine Version.VHD nicht mitkompiliert wird!? Ich merke auch, dass die Kompilierung sehr schnell dauert, also wegen "Smart-Recompile" aktiv ist. Wie kann ich damit umgehen? Vielen Dank! lg Tomy
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.