Wer verwendet TCL um Projekte aufzusetzen und kann erklären wie man das macht? Ich habe von Digilent einige Demo-Projekte geladen und diese liegen als Sourcen mit TCL vor, das in der Lage sein soll ein XPR zu erzeugen. Leider gelingt das nicht. Ich bin im Vivado in das Unterverzeichnis navigiert, in dem das make_project.tcl liegt und habe es ausführen wollen. V hat es beim Tippen offenbar gefunden und ergänzt. Dabei kam die Fehlermeldung, dass kein Name vorliegt. Also habe ich "make_project meinprojektname" eingegeben und V erzeugt ein Projekt. Allerdings ist es leer. Das TCl hingegeben hat eine Menge an Commandos, linkt offenbar die Sourcen - u.a. das *.bd ud die IPs. Sieht insgesamt plausibel aus. Laut dem Digilent-Sript wird das Projekt neben diesem Verzeichnis erzeugt. ist aber nicht. 1) wie führe ich das richtig aus? 2) von wo macht man das ?
Hast du einen Link zu dem Beispielprojekt? New-User schrieb: > Wer verwendet TCL um Projekte aufzusetzen und kann erklären wie man das > macht? Das werden die meisten hier machen, zumindest alle die ihren Build Prozess automatisiert haben.
:
Bearbeitet durch User
Es geht um einige zum Basys Board. also z.B. das hier: https://github.com/Digilent/Basys-3-Keyboard/releases/download/v2016.4-1/Basys-3-Keyboard-2016.4-1.zip Gelinkt werden die ZIP files von GIT. Angeblich kann man die TCL von Vivado direkt aus starten. Das TCL sieht z.B. so aus:
1 | # Run this script to create the Vivado project files NEXT TO THIS script |
2 | # If ::create_path global variable is set, the project is created under that path instead of the working dir |
3 | |
4 | # Project specific settings. These must be updated for each project. |
5 | set proj_name "Keyboard" |
6 | |
7 | if {[info exists ::create_path]} { |
8 | set dest_dir $::create_path |
9 | } else { |
10 | set dest_dir [file normalize [file dirname [info script]]] |
11 | } |
12 | puts "INFO: Creating new project in $dest_dir" |
13 | cd $dest_dir |
14 | |
15 | |
16 | set part "xc7a35tcpg236-1" |
17 | set brd_part "digilentinc.com:basys3:part0:1.1" |
18 | |
19 | # Set the reference directory for source file relative paths (by default the value is script directory path) |
20 | set origin_dir ".." |
21 | |
22 | # Set the directory path for the original project from where this script was exported |
23 | set orig_proj_dir "[file normalize "$origin_dir/proj"]" |
24 | |
25 | set src_dir $origin_dir/src |
26 | set repo_dir $origin_dir/repo |
27 | |
28 | # # Set the board repo |
29 | # # Uncomment if distributing board files with project in the "repo/board_files" folder. |
30 | # # This is currently untested. It intends to also keep any existing board repo paths, since this is a global Vivado setting (not project specific. |
31 | # # Ideally, if the project is closed, and then a new project is created (without closing Vivado), this should still be able to see a board repo specified in init.tcl. |
32 | #set_param board.repoPaths "[file normalize "$repo_dir/board_files"]" |
33 | |
34 | # Create project |
35 | create_project $proj_name $dest_dir |
Aufruf mit make_project.tcl (projektname). Wie gesagt, legt er ein Projekt an, startet es in Vivado - es ist aber leer. Das Script läuft ins Leere ...
Also hier funktioniert das wunderbar. Zuerst musst du das Board ausm XHUB installieren (Tools -> XHUB). Dann wechselst du in den Ordner in dem create_project.tcl liegt und startest das Script in der Kommandozeile via:
1 | vivado -mode batch -notrace -source create_project.tcl |
Sollte die Meldung kommen, dass das Board nicht gefunden werden kann, dann einfach in das Script noch folgende Zeile ganz am Anfang einfuegen:
1 | set_param board.repoPaths {$HOME/.Xilinx/Vivado/2020.1/xhub/board_store/xilinx_board_store/} |
$HOME mit deinem Homeverzeichnis ersetzen. Alternativ kannst du die heruntergeladenen Board Files auch ins Vivado Installationsvereichnis kopieren. Siehe auch: https://reference.digilentinc.com/reference/software/vivado/board-files Bitstream Generation laeuft dann auch problemlos durch. Falls Vivado meckert, dass das Projekt schon existiert, kannst du noch die create_project Zeile im Tcl Script abaendern zu:
1 | # Create project |
2 | create_project -force $proj_name $dest_dir |
Was für dein Problem die einfachste Antwort ist: In der Vivado TCL Shell in den Ordner mit dem Skript navigieren und dann:
1 | source ./make_project.tcl |
Das sollte alles generieren. Sonst wie Tobias schreibt auch direkt (bei mir ohne notrace) mit dem Vivado Aufruf sourcen:
1 | vivado -mode batch -source make_project.tcl |
Ich habe mir immer ein Bashscript gebaut das verschiedene Board Versionen auswählen kann, die lokale Vivado Version überprüft und entweder alle externen sourcen importiert oder relativ anzieht sowie möglicherweise direkt eine Implementation in der Shell antriggert. Sehr schön auch für remote builds wenn es keine andere Infrastruktur gibt.
Um in die Vivado-Shell zu gelangen, muss ich erst ein Projekt aufmachen. Ist das relevant, wo das liegt oder wie das heisst? Cle schrieb: > Sonst wie Tobias schreibt auch direkt (bei mir ohne notrace) mit dem > Vivado Aufruf sourcen: vivado -mode batch -source make_project.tcl Von wo aus rufe ich das auf? Windows - CMD?
New-User schrieb: > Um in die Vivado-Shell zu gelangen, muss ich erst ein Projekt > aufmachen. > Ist das relevant, wo das liegt oder wie das heisst? Nein, du musst kein Project aufmachen. Einfach unten das TCL Command Fenster "aufklappen". > > Cle schrieb: >> Sonst wie Tobias schreibt auch direkt (bei mir ohne notrace) mit dem >> Vivado Aufruf sourcen: vivado -mode batch -source make_project.tcl > > Von wo aus rufe ich das auf? Windows - CMD? Ah, Windows ist vrmtl anders. Ich rede von Linux. Aber du kannst vermutlich in einer Verknuepfung in Windows direkt auch die Argumente mit uebergeben oder das in der Shell machen, bin ich allerdings nicht sicher.
New-User schrieb: > Um in die Vivado-Shell zu gelangen, muss ich erst ein Projekt aufmachen. > Ist das relevant, wo das liegt oder wie das heisst? Nein, das ist nicht erforderlich. >> Vivado Aufruf sourcen: vivado -mode batch -source make_project.tcl > > Von wo aus rufe ich das auf? Windows - CMD? Ja, natürlich auf der Kommandozeile. Welche Fehlermeldungen hast Du denn überhaupt bei Deinen bisherigen vergeblichen Versuchen erhalten? Nein, damit meine ich nicht "geht nicht" oder "nichts passiert", sondern hinreichend vollständige Ausgaben von Vivado bzw. die erzeugten Logfiles. Hast Du überprüft, ob das offenbar für Vivado 2016.4 bestimmte Skript überhaupt zu Deiner installierten Vivado-Version kompatibel ist? Spätestens bei der Instanzierung von mitgelieferter IP-Blöcken kommt es da doch oft zu Fehlern.
Cle schrieb: > Ah, Windows ist vrmtl anders. Ich rede von Linux. Aber du kannst > vermutlich in einer Verknuepfung in Windows direkt auch die Argumente > mit uebergeben oder das in der Shell machen, bin ich allerdings nicht > sicher. Der Aufruf von Vivado verhält sich bei Windows und Linux exakt gleich.
Andreas S. schrieb: > New-User schrieb: >> Um in die Vivado-Shell zu gelangen, muss ich erst ein Projekt aufmachen. >> Ist das relevant, wo das liegt oder wie das heisst? > > Nein, das ist nicht erforderlich. Und wie komme ich ohne etwas aufzumachen, an die TCL-Zeile? Wahrscheinlich ein batchrauf an Vivado "ohne GUI"? >>> Vivado Aufruf sourcen: vivado -mode batch -source make_project.tcl >> Von wo aus rufe ich das auf? Windows - CMD? > Ja, natürlich auf der Kommandozeile. Funktioniert nicht. Er kenne "vivado" nicht. Da ist sicher kein PATH gesetzt. Werde mal suchen. > Welche Fehlermeldungen hast Du denn überhaupt bei Deinen bisherigen > vergeblichen Versuchen erhalten? Wie ich schrieb: Es kommt nichts. Das Projekt, das Vivado nach Ausführung des Scripts ausführt, hat keine Sourcen. Es gibt keine Hierarchien. Dabei dachte ich, dass es mit einem Script besser gehen müsse, als durch Weitergabe des Projekts. Ich habe aber inzsichen Projekte im GIT gefunden, die jemand angelegt hat und die sogar teilweise auf 2020 aktualisiert wurden. Da gibt es aber nun andere Probleme obwohl ich genau die Version zum Öffnen nutze. Ich habe aber den Autor mal kontaktiert.
New-User schrieb: > Und wie komme ich ohne etwas aufzumachen, an die TCL-Zeile? > Wahrscheinlich ein batchrauf an Vivado "ohne GUI"? Wenn ich unter Windows (genauso unter Linux) das GUI von Vivado 2020.1 starte, erscheint das im Anhang befindliche Fenster. Dort wird einem auf dem goldenen Tablett die TCL-Konsole präsentiert. Und sobald man ein TCL-Skript startet - egal ob in der Konsole oder mittels Tools->Run Tcl Script - erscheint dort zumindest irgendeine Ausgabe. >> Ja, natürlich auf der Kommandozeile. > Funktioniert nicht. Er kenne "vivado" nicht. Da ist sicher kein PATH > gesetzt. Werde mal suchen. Boah, es ist echt unglaublich! Offenbar hast Du nicht ansatzweise die Xilinx-Dokumentation zur Installation von Vivado gelesen. Denn dann wüsstest Du, dass natürlich immer die zur aktuell zu verwendenden Vivado-Version passende settings.bat bzw. settings64.bat ausgeführt werden muss. Und da es möglich (und oft auch nötig) ist, mehrere Vivado-Versionen zu installieren, dürfen die entsprechenden Einstellungen natürlich auch nicht hart in den Pfad aufgenommen werden. Aber offenbar weißt Du es ja besser... > Wie ich schrieb: Es kommt nichts. Das Projekt, das Vivado nach > Ausführung des Scripts ausführt, hat keine Sourcen. Irgendwelche Meldungen muss es gegeben haben. Ich habe selten etwas geschwätzigeres als die Tcl-Konsole gesehen.
:
Bearbeitet durch User
Andreas S. schrieb: > Denn dann > wüsstest Du, dass natürlich immer die zur aktuell zu verwendenden > Vivado-Version passende settings.bat bzw. settings64.bat ausgeführt > werden muss. Das Bat-Path-Zeug kenne ich freilich, habe es aber schon ewig nicht mehr verwendet. Zuletzt unter ISE, weil das alles DOS-ähnlich lief. Ich habe aktuell mehrere Vivado-Versionen auf dem Desktop liegen und klicke die gewünschte an. Das hat eigentlich auch gut funktioniert. Z.B. musste ich vor einiger Zeit einige Projekte aktualisieren und habe dann mit den alten Versionen den Code komplettiert (eine neue Funktion) und das Bit für die FAB gebaut. Dann wurde unter der neuen Version alles importiert, um es für die neuen Geräte in ein neues Design zu überführen. Autoimport und Core-Aktualisierung lief problemlos durch. Wo wäre denn da ein Fallstrick? Kann es sein, dass die nicht gesetzte PATH Variable dafür verantwortlich ist, dass bei mir kein TCL-Fenster kommt?
P.S. wenn ich ein maintainance mache, dann öffne ich beide Vivados gleichzeitig und bearbeite die alte und die neue Version des Projektes gleichzeitig. Habe ich gerade mal ausprobiert: Man kann parallel arbeiten, einmal eine Source ändern, beide kriegen es mit und dann parallel bauen: Einmal mit der alten und einmal der neuen Vivado-Version. (Wir lassen die alten Projekte auf dem alten Stand, solange es nur VHDL-Änderungen gibt, weil sonst die Cores gfs nicht mehr laufen, bzw deren patches. Hochgepuscht wird nur, wenn es einen Grund dafür gibt. Ich mache eigentlich alles über die Projektfiles. Theoretisch sollte es zwar möglich sein, dass man nur ein Projekt TCL archiviert um es dann jederzeit auf ein neues Vivado anwenden und das Projekt erzeugen lassen zu können, aber viele Beispiele belegen ja, dass das bei Xilinx nicht geht. Es reicht schon, wenn irgendwo in einem Core was gewändert wurde: Dann wird der zwar aktualsiert- läuft aber mit dem Rest nicht mehr, weil die defaulst sich ändern oder sogar Signale dazu kommen.
New-User schrieb: > Wir lassen die alten Projekte auf dem alten Stand, > solange es nur VHDL-Änderungen gibt, weil sonst die Cores gfs nicht mehr > laufen, bzw deren patches. Hochgepuscht wird nur, wenn es einen Grund > dafür gibt. Heisst "wir" in dem Kontext, dass es sich hier um ein professionelles Umfeld fern vom Hobbybasteln handelt?
Tobias B. schrieb: > Heisst "wir" in dem Kontext, dass es sich hier um ein professionelles > Umfeld fern vom Hobbybasteln handelt? Ja, allerdings ist das Basys-Thema ein privates von mir.
New-User schrieb: > Kann es sein, dass die nicht gesetzte PATH Variable dafür verantwortlich > ist, dass bei mir kein TCL-Fenster kommt? Mach mal unter Windows Vivado "normal" auf, also mit Doppelclick. Dann solltest Du (zumindest bei 2020.1) genau das Fenster sehen wie es Andreas gepostet hat. Wenn da keine TCL-Shell (das untere Fenster) zu sehen ist, dann drücke Ctrl-Shift-T oder im Menu auswählen. Siehe Bild ;) /regards
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.