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.
# 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.
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:
$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:
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.
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