Ab Version 4.0 der Quartus® II Software können Sie Skripts so konfigurieren, dass sie während der Kompilierung automatisch an verschiedenen Stellen ausgeführt werden. Mit dieser Funktion können Sie Skripts automatisch ausführen, die benutzerdefinierte Berichte durchführen, bestimmte Zuweisungen vornehmen und viele andere Aufgaben ausführen.
Es gibt drei globale Zuweisungen, die die automatische Ausführung von Skripts steuern. Sie sind hier aufgeführt, zusammen mit der Ursache für die Ausführung eines Skripts.
• PRE_FLOW_SCRIPT_FILE - before a flow starts
• POST_MODULE_SCRIPT_FILE - after a module finishes
• POST_FLOW_SCRIPT_FILE - after a flow finishes
Die POST_FLOW_SCRIPT_FILE- und POST_MODULE_SCRIPT_FILE zuweisungen werden ab Version 4.0 unterstützt, und die PRE_FLOW_SCRIPT_FILE Zuweisung wird ab Version 4.1 unterstützt.
Ein Modul ist eine ausführbare Datei Quartus® II, die einen Schritt in einem Fluss ausführt. Zwei Module sind beispielsweise Analyse und Synthese (quartus_map) und Timing-Analyse (quartus_tan).
Ein Flow ist eine Reihe von Modulen, die die Quartus® II Software mit vordefinierten Optionen ausführt. Beispielsweise ist das Kompilieren eines Designs ein Fluss, der in der Regel aus den folgenden Schritten (vom angegebenen Modul) besteht:
- Analyse und Synthese (quartus_map)
- Quartus_fit
- Assembler (quartus_asm)
- Timing-Analyzer (quartus_tan)
Andere Abläufe werden in der Hilfe für den Befehl execute_flow Tcl beschrieben. Außerdem entsprechen die meisten Befehle in Start (Verarbeitungsmenü) im Quartus® II GUI dem Fluss.
Die Zuweisung
Um eine Zuweisung zur automatischen Ausführung eines Skripts zu erstellen, erstellen Sie eine Zuweisung mit dem folgenden Formular:
set_global_assignment -name <assignment name> <executable>:<script name>
Der Name der Zuweisung ist einer der folgenden:
• PRE_FLOW_SCRIPT_FILE
• POST_MODULE_SCRIPT_FILE
• POST_FLOW_SCRIPT_FILE
Die ausführbare Datei ist der Name einer Quartus® II Befehlszeilen-Ausführbaren Datei, die einen TCL enthält.
• quartus_cdb
• quartus_sh
• quartus_sim
• quartus_stp
• quartus_tan
Der Skriptname ist der Name Ihres Tcl-Skripts.
Skriptausführung
Die Quartus® II Software führt die Skripts wie hier dargestellt aus:
<executable> -t <script name> <flow or module name> <project name> <revision name>
Das erste in der quartus(args) Variable übergebene Argument ist der Name des ausgeführten Flusses oder Moduls, je nach verwendeter Zuweisung. Das zweite Argument ist der Name des Projekts, und das dritte Argument ist der Name der Revision.
Wenn Sie die POST_MODULE_SCRIPT_FILE zuweisung verwenden, wird das angegebene Skript automatisch nach jeder ausführbaren Datei in einem Fluss ausgeführt. Sie können einen String-Vergleich mit dem Modulnamen (dem ersten an das Skript übergebenen Argument) verwenden, um die Skriptverarbeitung auf bestimmte Module zu isolieren.
Ausführungsbeispiel
Dieses Beispiel veranschaulicht, wie die automatische Skriptausführung in einem vollständigen Ablauf funktioniert, vorausgesetzt, Sie haben ein Projekt namens top mit einer aktuellen Version namens rev_1 und Sie haben die folgenden Zuweisungen in der Quartus® II Settings File (QSF) für Ihr Projekt:
set_global_assignment -name PRE_FLOW_SCRIPT_FILE quartus_sh:first.tcl
set_global_assignment -name POST_MODULE_SCRIPT_FILE quartus_sh:next.tcl
set_global_assignment -name POST_FLOW_SCRIPT_FILE quartus_sh:last.tcl
Wenn Sie Ihr Projekt kompilieren, führt die PRE_FLOW_SCRIPT_FILE-Zuweisung dazu, dass der folgende Befehl ausgeführt wird, bevor die Kompilierung beginnt:
quartus_sh -t first.tcl compile top rev_1
Als Nächstes beginnt die Quartus® II Software mit der Kompilierung mit Analyse und Synthese, die von der quartus_map ausführbaren Datei durchgeführt wird. Nach Abschluss der Analyse und Synthese führt die POST_MODULE_SCRIPT_FILE-Zuweisung dazu, dass der folgende Befehl ausgeführt wird:
quartus_sh -t next.tcl quartus_map top rev_1
Dann wird die Quartus® II Software mit der Kompilierung mit dem quartus_fit weitergeführt. Nach Abschluss des Befehls führt die POST_MODULE_SCRIPT_FILE-Zuweisung dazu, dass der folgende Befehl ausgeführt wird:
quartus_sh -t next.tcl quartus_fit top rev_1
Die entsprechenden Befehle werden nach den anderen Phasen der Kompilierung ausgeführt. Nachdem die Kompilierung beendet ist, führt die POST_FLOW_SCRIPT_FILE Zuweisung dazu, dass der folgende Befehl ausgeführt wird:
quartus_sh -t last.tcl compile top rev_1
Steuerung der Verarbeitung
Die POST_MODULE_SCRIPT_FILE-Zuweisung führt dazu, dass nach jedem Modul ein Skript ausgeführt wird. Da es sich um das gleiche Skript handelt, das nach jedem Modul ausgeführt wird, müssen Sie möglicherweise einige Bedingte Anweisungen einschließen, die die Verarbeitung in Ihrem Skript auf bestimmte Module beschränken.
Wenn Sie beispielsweise ein Skript haben, das Sie nur nach Durchführung der Timing-Analyse ausführen möchten, sollten Sie einen Bedingungstest wie den im folgenden Beispiel einschließen. Sie überprüft den Fluss oder den Modulnamen, der als erstes Argument an das Skript weitergegeben wird, und führt Code aus, wenn das Modul quartus_tan wird.
set module [lindex $quartus(args) 0]
if [string match "quartus_tan" $module] {
# Include commands here that are run
# after timing analysis
post_message "Running after timing analysis"
}
Anzeigen von Nachrichten
Aufgrund der Art und Weise, wie die Quartus II Software die Skripts automatisch ausführt, müssen Sie den befehl post_message verwenden, um Nachrichten anzuzeigen, anstatt den Puts-Befehl. Diese Anforderung gilt nur für Skripts, die von den drei oben auf dieser Seite aufgeführten Zuweisungen ausgeführt werden.