Począwszy od wersji 4.0 oprogramowania Quartus® II, możesz skonfigurować skrypty do automatycznego działania w różnych punktach podczas kompilacji. Ta funkcja umożliwia automatyczne uruchamianie skryptów, które wykonują niestandardowe raportowanie, dokonują konkretnych przypisanych zadań i wykonują wiele innych zadań.
Istnieją trzy globalne przypisania, które kontrolują automatyczne wykonywanie skryptów. Są one wymienione tutaj, wraz z tym, kiedy powodują uruchomienie skryptu.
• PRE_FLOW_SCRIPT_FILE - before a flow starts
• POST_MODULE_SCRIPT_FILE - after a module finishes
• POST_FLOW_SCRIPT_FILE - after a flow finishes
Cesje POST_FLOW_SCRIPT_FILE i POST_MODULE_SCRIPT_FILE są obsługiwane od wersji 4.0, a przypisanie PRE_FLOW_SCRIPT_FILE jest obsługiwane począwszy od wersji 4.1.
Moduł to plik wykonywalny Quartus® II, który wykonuje jeden krok w przepływie. Na przykład dwa moduły to analiza i synteza (quartus_map) oraz analiza timingów (quartus_tan).
Przepływ to seria modułów, które oprogramowanie Quartus® II wykonuje przy pomocy wstępnie zdefiniowanych opcji. Na przykład kompilowanie projektu to przepływ, który zazwyczaj składa się z następujących kroków (wykonywanych przez wskazany moduł):
- Analiza i synteza (quartus_map)
- Instalator (quartus_fit)
- Montaż (quartus_asm)
- Analizator timingów (quartus_tan)
Inne przepływy są opisane w pomocy dla polecenia execute_flow Tcl. Ponadto większość poleceń w menu Start (przetwarzanie) w Quartus® II GUI odpowiada przepływom.
Przydzielanie zadań
Aby przypisać do automatycznego uruchamiania skryptu, dokonaj przypisania przy pomocy następującego formularza:
set_global_assignment -name <assignment name> <executable>:<script name>
Nazwa cesji jest jedną z następujących:
• PRE_FLOW_SCRIPT_FILE
• POST_MODULE_SCRIPT_FILE
• POST_FLOW_SCRIPT_FILE
Plik wykonywalny to nazwa pliku wykonywalnego wiersza poleceń Quartus® II zawierającego tłumacza Tcl.
• quartus_cdb
• quartus_sh
• quartus_sim
• quartus_stp
• quartus_tan
Nazwa skryptu to nazwa Twojego skryptu Tcl.
Wykonanie skryptu
Oprogramowanie Quartus® II wykonuje skrypty, jak pokazano tutaj:
<executable> -t <script name> <flow or module name> <project name> <revision name>
Pierwszym argumentem przekazanym w zmiennej quartus(args) jest nazwa wykonywanego przepływu lub modułu, w zależności od przypisania, którego używasz. Drugi argument to nazwa projektu, a trzeci argument to nazwa wersji.
Podczas korzystania z przypisania POST_MODULE_SCRIPT_FILE określony skrypt jest automatycznie uruchamiany po każdym pliku wykonywalnym w przepływie. Można zastosować porównanie ciągów z nazwą modułu (pierwszy argument przekazany do skryptu) w celu wyodrębnienia przetwarzania skryptów do niektórych modułów.
Przykład wykonania
W tym przykładzie pokazuje, jak automatyczne wykonywanie skryptu działa w pełnym przepływie, przy założeniu, że masz projekt o nazwie top z bieżącą wersją o nazwie rev_1, a następujące przypisania znajduje się w pliku ustawień II (QSF) w programie Quartus® II Settings File:
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
Podczas kompilowania projektu przypisanie PRE_FLOW_SCRIPT_FILE powoduje wykonanie następującego polecenia przed rozpoczęciem kompilacji:
quartus_sh -t first.tcl compile top rev_1
Następnie oprogramowanie Quartus® II rozpoczyna kompilację od analizy i syntezy, wykonywanej przez plik wykonywalny quartus_map. Po zakończeniu analizy i syntezy przypisanie POST_MODULE_SCRIPT_FILE powoduje wykonanie następującego polecenia:
quartus_sh -t next.tcl quartus_map top rev_1
Następnie oprogramowanie Quartus® II kontynuować kompilację z instalatorem, wykonywane przez plik wykonywalny quartus_fit. Po zakończeniu instalatora przypisanie POST_MODULE_SCRIPT_FILE powoduje wykonanie następującego polecenia:
quartus_sh -t next.tcl quartus_fit top rev_1
Odpowiednie polecenia są wykonywane po pozostałych etapach kompilacji. Na koniec, po zakończeniu kompilacji, przypisanie POST_FLOW_SCRIPT_FILE powoduje wykonanie następującego polecenia:
quartus_sh -t last.tcl compile top rev_1
Kontrolowanie przetwarzania
Przypisanie POST_MODULE_SCRIPT_FILE powoduje wykonanie skryptu za każdym modułem. Ponieważ jest to ten sam skrypt wykonany po każdym module, może być konieczne uwzględnienie niektórych instrukcji warunkowych, które ograniczają przetwarzanie w twoim skryptie do niektórych modułów.
Na przykład jeśli posiadasz skrypt, który chcesz uruchomić dopiero po przeprowadzeniu analizy timingów, powinieneś dołączyć test warunkowy, taki jak ten w poniższym przykładzie. Sprawdza nazwę przepływu lub modułu przekazywany jako pierwszy argument do skryptu i wykonuje kod, gdy moduł jest quartus_tan.
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"
}
Wyświetlanie wiadomości
Ze względu na sposób, w jaki oprogramowanie Quartus II automatycznie uruchamia skrypty, musisz użyć polecenia post_message do wyświetlania wiadomości, zamiast polecenia put. Wymóg ten ma zastosowanie tylko do skryptów, które są uruchamiane przez trzy przypisane zadania wymienione w górnej części tej strony.