Comenzi TCL în Vivado: Diferență între versiuni

De la YO3ITI
Sari la navigare Sari la căutare
 
(Nu s-au afișat 11 versiuni intermediare efectuate de același utilizator)
Linia 4: Linia 4:


Documentația este organizată în trei manuale principale, care se completează reciproc:
Documentația este organizată în trei manuale principale, care se completează reciproc:
# [https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/Introduction UG835 — Vivado Design Suite Tcl Command Reference Guide] — referința completă a comenzilor Tcl.
# [https://docs.amd.com/r/en-US/ug894-vivado-tcl-scripting/Tcl-Scripting-in-Vivado UG894 — Vivado Design Suite User Guide: Using Tcl Scripting] — ghid pentru utilizarea Tcl și automatizarea fluxurilor de proiectare.
# [https://docs.amd.com/r/en-US/ug912-vivado-properties/Vivado-Design-Suite-First-Class-Objects UG912 — Vivado Design Suite Properties Reference Guide] — referința proprietăților obiectelor din Vivado.


==Proprietățile FPGA din Arty Z7==
# [https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/Introduction UG835 — Vivado Design Suite Tcl Command Reference Guide]
Pentru Arty Z7, part name este:
# [https://docs.amd.com/r/en-US/ug894-vivado-tcl-scripting/Tcl-Scripting-in-Vivado UG894 — Vivado Design Suite User Guide: Using Tcl Scripting]
# [https://docs.amd.com/r/en-US/ug912-vivado-properties/Vivado-Design-Suite-First-Class-Objects UG912 — Vivado Design Suite Properties Reference Guide]
 
===UG835 — Vivado Design Suite Tcl Command Reference Guide===
Referința completă a comenzilor Tcl. Acesta este principalul manual de referință pentru comenzile Tcl disponibile în Vivado. Documentația prezintă sintaxa comenzilor, parametrii acceptați, descrierea funcționalității și exemple de utilizare.
 
Sunt documentate comenzi pentru:
* Crearea, deschiderea și configurarea proiectelor.
* Selectarea dispozitivelor FPGA și a plăcilor de dezvoltare.
* Gestionarea fișierelor sursă HDL și a constrângerilor XDC.
* Sinteză, implementare și generarea fișierelor bitstream.
* Gestionarea IP-urilor și a diagramelor Block Design.
* Analiza temporizării (timing analysis) și a utilizării resurselor.
* Interacțiunea cu dispozitivele fizice prin Hardware Manager.
 
De exemplu, pentru a obține informații despre FPGA-ul XC7Z020 de pe placa Digilent Arty Z7-20:
 
<syntaxhighlight lang="tcl">
<syntaxhighlight lang="tcl">
# Identificarea variantelor disponibile ale dispozitivului
get_parts xc7z020*
# Afișarea tuturor proprietăților variantei selectate
report_property [get_parts xc7z020clg400-1]
report_property [get_parts xc7z020clg400-1]
# Afișarea proprietății DEVICE
get_property DEVICE [get_parts xc7z020clg400-1]
</syntaxhighlight>
Este important de observat că report_property necesită un obiect Vivado, nu un simplu șir de caractere. Comanda <code>get_parts</code> obține obiectul corespunzător dispozitivului, care este ulterior transmis comenzii <code>report_property</code>.
===UG894 — Vivado Design Suite User Guide: Using Tcl Scripting===
Ghid pentru utilizarea Tcl și automatizarea fluxurilor de proiectare. Acest manual explică utilizarea limbajului Tcl în mediul Vivado și modul în care comenzile pot fi combinate în scripturi pentru automatizarea proiectării. Subiectele importante includ lucrul cu obiectele Vivado, interogarea și filtrarea colecțiilor, utilizarea variabilelor, procedurilor și buclelor Tcl, precum și executarea comenzilor în mod interactiv sau în batch mode.
De exemplu, putem interoga proiectul curent:
<syntaxhighlight lang="tcl">
# Obținerea obiectului corespunzător proiectului
set proiect [current_project]
# Identificarea dispozitivului selectat
set dispozitiv [get_property PART $proiect]
puts "Dispozitiv FPGA: $dispozitiv"
</syntaxhighlight>
===UG912 — Vivado Design Suite Properties Reference Guide===
Referința proprietăților obiectelor din Vivado. Acest manual descrie proprietățile asociate obiectelor Vivado și modul în care acestea pot fi citite sau modificate folosind comenzile Tcl. Vivado folosește un model bazat pe obiecte. Un proiect conține obiecte precum dispozitive FPGA, celule logice, porturi, conexiuni, ceasuri și instanțe IP.
Aceste obiecte au proprietăți care pot fi interogate folosind:
<syntaxhighlight lang="tcl">
# Afișarea proprietăților obiectului
report_property $obiect
# Enumerarea denumirilor proprietăților
list_property $obiect
# Citirea valorii unei proprietăți
get_property NUME_PROPRIETATE $obiect
# Modificarea unei proprietăți (dacă este editabilă)
set_property NUME_PROPRIETATE valoare $obiect
</syntaxhighlight>
De exemplu, pentru identificarea frecvenței unui ceas definit în proiect:
<syntaxhighlight lang="tcl">
# Enumerarea ceasurilor existente
get_clocks
# Afișarea proprietăților ceasului specificat
report_property [get_clocks clk_100MHz]
# Citirea perioadei ceasului, exprimată în ns
get_property PERIOD [get_clocks clk_100MHz]
</syntaxhighlight>
===Obținerea documentației direct din consola Tcl===
Vivado include un sistem de asistență care permite consultarea comenzilor fără deschiderea manualelor. Pentru afișarea informațiilor despre o comandă:
<syntaxhighlight lang="tcl">
help get_parts
help report_property
help get_property
</syntaxhighlight>
Pentru afișarea sintaxei și a argumentelor acceptate:
<syntaxhighlight lang="tcl">
get_parts -help
report_property -help
</syntaxhighlight>
</syntaxhighlight>
Cu proprietățile:
 
<syntaxhighlight lang="debug">
Pentru afișarea comenzilor de ajutor disponibile:
Property                  Type    Read-only  Value
 
ARCHITECTURE              string  true      zynq
<syntaxhighlight lang="tcl">
ARCHITECTURE_FULL_NAME    string  true      Zynq-7000
help
AVAILABLE_CONFIG_MODES    string*  true      {JTAG/Boundary Scan}
AVAILABLE_IOBS            int      true      125
BLOCK_RAMS                int      true      140
CLASS                      string  true      part
COLS                      int      true      187
COMPATIBLE_PARTS          string*  true      xc7z010clg400
C_FAMILY                  string  true      zynq
DEVICE                    string  true      xc7z020
DSP                        int      true      220
FAMILY                    string  true      zynq
FE                        int      true      0
FLIPFLOPS                  int      true      106400
GB_TRANSCEIVERS            int      true      0
IDCODE                    string  true      0x03727093
IO_PIN_COUNT              int      true      400
IO_STANDARDS              string  true      LVTTL LVCMOS33 LVCMOS25 LVCMOS18 LVCMOS15 LVCMOS12 HSUL_12 HSTL_I HSTL_II HSTL_I_18 HSTL_II_18 SSTL18_I SSTL18_II SSTL15 SSTL15_R SSTL135 SSTL135_R DIFF_HSTL_I DIFF_HSTL_II DIFF_HSTL_I_18 DIFF_HSTL_II_18 DIFF_SSTL18_I DIFF_SSTL18_II DIFF_SSTL15 DIFF_SSTL15_R DIFF_SSTL135 DIFF_SSTL135_R DIFF_HSUL_12 PCI33_3 MOBILE_DDR DIFF_MOBILE_DDR BLVDS_25 LVDS_25 RSDS_25 TMDS_33 MINI_LVDS_25 PPDS_25
LUT_ELEMENTS              int      true      53200
MAX_OPERATING_TEMPERATURE  int      true      0
MAX_OPERATING_VOLTAGE      double  true      1.050
MCBS                      int      true      0
MIN_OPERATING_TEMPERATURE  int      true      0
MIN_OPERATING_VOLTAGE      double  true      0.950
MMCM                      int      true      4
NAME                      string  true      xc7z020clg400-1
PACKAGE                    string  true      clg400
PACKAGE_PINOUT_VERSION    string  true      FINAL 2012-06-26
PACKAGE_PIN_DELAY_VERSION  string  true      VERS. 2.0 2012-06-26
PCI_BUSES                  int      true      0
REF_OPERATING_TEMPERATURE  int      true      0
REF_OPERATING_VOLTAGE      double  true      0.950
ROWS                      int      true      157
SLICES                    int      true      13300
SLRS                      int      true      1
SPEED                      string  true      -1
SPEED_LABEL                string  true      PRODUCTION
SPEED_LEVEL_ID            string  true      1.12
SPEED_LEVEL_ID_DATE        string  true      2019-11-22
SSN_REPORT                bool    true      1
SUPPORTS_NEXTGEN_VERSAL    bool    true      0
TEMAC_NETWORK_CONTROLLERS  int      true      0
TEMPERATURE_GRADE_LETTER  string  true   
</syntaxhighlight>
</syntaxhighlight>


Linia 67: Linia 111:
report_property [get_parts [get_property PART [current_project]]]
report_property [get_parts [get_property PART [current_project]]]
</syntaxhighlight>
</syntaxhighlight>
==Comenzi Tcl utile pentru proiectarea FPGA==
Tabelul următor prezintă câteva comenzi frecvent utilizate.
{| class="wikitable"
! Comandă
! Funcționalitate
|-
| <code>get_parts</code>
| Enumerarea dispozitivelor FPGA
|-
| <code>get_board_parts</code>
| Enumerarea definițiilor plăcilor
|-
| <code>current_project</code>
| Obținerea proiectului curent
|-
| <code>get_property</code>
| Citirea unei proprietăți
|-
| <code>set_property</code>
| Modificarea unei proprietăți
|-
| <code>report_property</code>
| Afișarea proprietăților unui obiect
|-
| <code>get_cells</code>
| Identificarea celulelor din proiect
|-
| <code>get_ports</code>
| Identificarea porturilor
|-
| <code>get_nets</code>
| Identificarea conexiunilor
|-
| <code>get_clocks</code>
| Identificarea semnalelor de ceas
|-
| <code>get_bd_cells</code>
| Identificarea componentelor din Block Design
|-
| <code>get_ips</code>
| Identificarea instanțelor IP
|-
| <code>launch_runs</code>
| Lansarea sintezei sau implementării
|-
| <code>report_utilization</code>
| Raportarea utilizării resurselor
|-
| <code>report_timing_summary</code>
| Raportarea temporizării
|-
| <code>write_bitstream</code>
| Generarea unui bitstream din designul implementat
|-
| <code>write_project_tcl</code>
| Exportarea configurației proiectului ca script Tcl
|}
Disponibilitatea unor comenzi depinde de contextul activ: proiect deschis, Block Design, design sintetizat sau implementat.
==Generarea unui script Tcl dintr-un proiect existent==
O funcționalitate importantă a Vivado este posibilitatea exportării configurației proiectului într-un script Tcl.
Comanda este:
<syntaxhighlight lang="tcl">
write_project_tcl -force proiect_arty.tcl
</syntaxhighlight>
Scriptul rezultat poate fi utilizat pentru recrearea proiectului, cu condiția ca fișierele sursă, constrângerile și celelalte dependențe necesare să fie disponibile.
Această abordare oferă câteva avantaje importante:
* Reproducerea configurației unui proiect FPGA.
* Automatizarea creării proiectelor.
* Integrarea cu sisteme de control al versiunilor, precum Git.
* Compararea modificărilor dintre configurațiile proiectelor.
* Reducerea dependenței de interfața grafică Vivado.
Pentru un proiect care combină logica FPGA, interfața AXI, procesorul ARM și comunicația Ethernet pe Arty Z7-20, automatizarea prin Tcl poate deveni deosebit de utilă.
==Ce documentație trebuie consultată?==
{| class="wikitable"
! Obiectiv
! Manual recomandat
|-
| Identificarea sintaxei unei comenzi
| [https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/Introduction UG835]
|-
| Învățarea programării Tcl în Vivado
| [https://docs.amd.com/r/en-US/ug894-vivado-tcl-scripting/Tcl-Scripting-in-Vivado UG894]
|-
| Înțelegerea obiectelor și proprietăților
| [https://docs.amd.com/r/en-US/ug912-vivado-properties/Vivado-Design-Suite-First-Class-Objects UG912]
|-
| Automatizarea sintezei și implementării
| [https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/Introduction UG835] + [https://docs.amd.com/r/en-US/ug894-vivado-tcl-scripting/Tcl-Scripting-in-Vivado UG894]
|-
| Interogarea resurselor FPGA
| [https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/Introduction UG835] + [https://docs.amd.com/r/en-US/ug912-vivado-properties/Vivado-Design-Suite-First-Class-Objects UG912]
|-
| Automatizarea proiectelor Zynq și AXI
| [https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/Introduction UG835] + [https://docs.amd.com/r/en-US/ug894-vivado-tcl-scripting/Tcl-Scripting-in-Vivado UG894]
|}
Versiunile online consultate sunt Vivado 2026.1, publicate de AMD în 2026. Pentru versiuni mai vechi ale Vivado, este recomandată selectarea versiunii corespunzătoare din arhiva documentației AMD.
==Concluzie==
Pentru dezvoltarea proiectelor FPGA în Vivado, cele trei manuale sunt complementare:
UG835 reprezintă dicționarul comenzilor Tcl, UG894 explică modul în care acestea se combină pentru automatizarea fluxurilor de proiectare, iar UG912 documentează proprietățile obiectelor asupra cărora acționează comenzile.
Pentru studierea sistematică a interfeței Tcl, ordinea recomandată este UG894, apoi UG835, urmat de UG912.


=Link-uri externe=
=Link-uri externe=
* [https://docs.amd.com/r/2025.2-English/ug1144-petalinux-tools-reference-guide/Building-a-System-Image PetaLinux Tools Documentation: Reference Guide (UG1144)]
* [https://docs.amd.com/r/2025.2-English/ug1144-petalinux-tools-reference-guide/Building-a-System-Image PetaLinux Tools Documentation: Reference Guide (UG1144)]
[[Category:Tcl]]
[[Category:FPGA]]
[[Category:Vivado]]

Versiunea curentă din 4 noiembrie 2026 23:32

Documentație comenzi TCL în Vivado

AMD (anterior Xilinx) pune la dispoziție o documentație oficială foarte detaliată pentru comenzile Tcl utilizate în Vivado Design Suite. Aceasta acoperă atât comenzile individuale, cât și programarea scripturilor pentru automatizarea proiectelor FPGA.

Documentația este organizată în trei manuale principale, care se completează reciproc:

  1. UG835 — Vivado Design Suite Tcl Command Reference Guide
  2. UG894 — Vivado Design Suite User Guide: Using Tcl Scripting
  3. UG912 — Vivado Design Suite Properties Reference Guide

UG835 — Vivado Design Suite Tcl Command Reference Guide

Referința completă a comenzilor Tcl. Acesta este principalul manual de referință pentru comenzile Tcl disponibile în Vivado. Documentația prezintă sintaxa comenzilor, parametrii acceptați, descrierea funcționalității și exemple de utilizare.

Sunt documentate comenzi pentru:

  • Crearea, deschiderea și configurarea proiectelor.
  • Selectarea dispozitivelor FPGA și a plăcilor de dezvoltare.
  • Gestionarea fișierelor sursă HDL și a constrângerilor XDC.
  • Sinteză, implementare și generarea fișierelor bitstream.
  • Gestionarea IP-urilor și a diagramelor Block Design.
  • Analiza temporizării (timing analysis) și a utilizării resurselor.
  • Interacțiunea cu dispozitivele fizice prin Hardware Manager.

De exemplu, pentru a obține informații despre FPGA-ul XC7Z020 de pe placa Digilent Arty Z7-20:

# Identificarea variantelor disponibile ale dispozitivului
get_parts xc7z020*

# Afișarea tuturor proprietăților variantei selectate
report_property [get_parts xc7z020clg400-1]

# Afișarea proprietății DEVICE
get_property DEVICE [get_parts xc7z020clg400-1]

Este important de observat că report_property necesită un obiect Vivado, nu un simplu șir de caractere. Comanda get_parts obține obiectul corespunzător dispozitivului, care este ulterior transmis comenzii report_property.

UG894 — Vivado Design Suite User Guide: Using Tcl Scripting

Ghid pentru utilizarea Tcl și automatizarea fluxurilor de proiectare. Acest manual explică utilizarea limbajului Tcl în mediul Vivado și modul în care comenzile pot fi combinate în scripturi pentru automatizarea proiectării. Subiectele importante includ lucrul cu obiectele Vivado, interogarea și filtrarea colecțiilor, utilizarea variabilelor, procedurilor și buclelor Tcl, precum și executarea comenzilor în mod interactiv sau în batch mode.

De exemplu, putem interoga proiectul curent:

# Obținerea obiectului corespunzător proiectului
set proiect [current_project]

# Identificarea dispozitivului selectat
set dispozitiv [get_property PART $proiect]

puts "Dispozitiv FPGA: $dispozitiv"

UG912 — Vivado Design Suite Properties Reference Guide

Referința proprietăților obiectelor din Vivado. Acest manual descrie proprietățile asociate obiectelor Vivado și modul în care acestea pot fi citite sau modificate folosind comenzile Tcl. Vivado folosește un model bazat pe obiecte. Un proiect conține obiecte precum dispozitive FPGA, celule logice, porturi, conexiuni, ceasuri și instanțe IP.

Aceste obiecte au proprietăți care pot fi interogate folosind:

# Afișarea proprietăților obiectului
report_property $obiect

# Enumerarea denumirilor proprietăților
list_property $obiect

# Citirea valorii unei proprietăți
get_property NUME_PROPRIETATE $obiect

# Modificarea unei proprietăți (dacă este editabilă)
set_property NUME_PROPRIETATE valoare $obiect

De exemplu, pentru identificarea frecvenței unui ceas definit în proiect:

# Enumerarea ceasurilor existente
get_clocks

# Afișarea proprietăților ceasului specificat
report_property [get_clocks clk_100MHz]

# Citirea perioadei ceasului, exprimată în ns
get_property PERIOD [get_clocks clk_100MHz]

Obținerea documentației direct din consola Tcl

Vivado include un sistem de asistență care permite consultarea comenzilor fără deschiderea manualelor. Pentru afișarea informațiilor despre o comandă:

help get_parts
help report_property
help get_property

Pentru afișarea sintaxei și a argumentelor acceptate:

get_parts -help
report_property -help

Pentru afișarea comenzilor de ajutor disponibile:

help

Alte comenzi TCL utile (Vivado):

Informații despre componenta folosită în proiectul curent, din Vivado:

report_property [get_parts [get_property PART [current_project]]]

Comenzi Tcl utile pentru proiectarea FPGA

Tabelul următor prezintă câteva comenzi frecvent utilizate.

Comandă Funcționalitate
get_parts Enumerarea dispozitivelor FPGA
get_board_parts Enumerarea definițiilor plăcilor
current_project Obținerea proiectului curent
get_property Citirea unei proprietăți
set_property Modificarea unei proprietăți
report_property Afișarea proprietăților unui obiect
get_cells Identificarea celulelor din proiect
get_ports Identificarea porturilor
get_nets Identificarea conexiunilor
get_clocks Identificarea semnalelor de ceas
get_bd_cells Identificarea componentelor din Block Design
get_ips Identificarea instanțelor IP
launch_runs Lansarea sintezei sau implementării
report_utilization Raportarea utilizării resurselor
report_timing_summary Raportarea temporizării
write_bitstream Generarea unui bitstream din designul implementat
write_project_tcl Exportarea configurației proiectului ca script Tcl

Disponibilitatea unor comenzi depinde de contextul activ: proiect deschis, Block Design, design sintetizat sau implementat.

Generarea unui script Tcl dintr-un proiect existent

O funcționalitate importantă a Vivado este posibilitatea exportării configurației proiectului într-un script Tcl.

Comanda este:

write_project_tcl -force proiect_arty.tcl

Scriptul rezultat poate fi utilizat pentru recrearea proiectului, cu condiția ca fișierele sursă, constrângerile și celelalte dependențe necesare să fie disponibile.

Această abordare oferă câteva avantaje importante:

  • Reproducerea configurației unui proiect FPGA.
  • Automatizarea creării proiectelor.
  • Integrarea cu sisteme de control al versiunilor, precum Git.
  • Compararea modificărilor dintre configurațiile proiectelor.
  • Reducerea dependenței de interfața grafică Vivado.

Pentru un proiect care combină logica FPGA, interfața AXI, procesorul ARM și comunicația Ethernet pe Arty Z7-20, automatizarea prin Tcl poate deveni deosebit de utilă.

Ce documentație trebuie consultată?

Obiectiv Manual recomandat
Identificarea sintaxei unei comenzi UG835
Învățarea programării Tcl în Vivado UG894
Înțelegerea obiectelor și proprietăților UG912
Automatizarea sintezei și implementării UG835 + UG894
Interogarea resurselor FPGA UG835 + UG912
Automatizarea proiectelor Zynq și AXI UG835 + UG894

Versiunile online consultate sunt Vivado 2026.1, publicate de AMD în 2026. Pentru versiuni mai vechi ale Vivado, este recomandată selectarea versiunii corespunzătoare din arhiva documentației AMD.

Concluzie

Pentru dezvoltarea proiectelor FPGA în Vivado, cele trei manuale sunt complementare:

UG835 reprezintă dicționarul comenzilor Tcl, UG894 explică modul în care acestea se combină pentru automatizarea fluxurilor de proiectare, iar UG912 documentează proprietățile obiectelor asupra cărora acționează comenzile.

Pentru studierea sistematică a interfeței Tcl, ordinea recomandată este UG894, apoi UG835, urmat de UG912.

Link-uri externe