Copierea unui proiect vivado prin Tcl

De la YO3ITI
Sari la navigare Sari la căutare

Copierea unui proiect Vivado pentru un experiment nou

Acest tutorial prezintă crearea unei copii cu un nume diferit a unui proiect Vivado funcțional, păstrând originalul ca punct de referință. În exemplu, proiectul unui oscilator NCO pe Arty Z7 este copiat pentru dezvoltarea unui sistem de procesare I/Q cu date primite prin Ethernet. Am vrut să păstrez versiunea existentă a proiectului NCO fără a-i mai aduce modificări suplimentare, astfel că o copie sub un nume nou a fost soluția cea mai evidentă.

Configurația utilizată

  • Sistem de operare: Windows 11.
  • Mediu de dezvoltare: Vivado 2025.2.
  • Placă: Digilent Arty Z7-20.
  • Circuit: xc7z020clg400-1.
  • Proiect original: arty_z7_nco.
  • Proiect nou: arty_z7_iq.

Lista de surse din această sesiune a confirmat că toate cele 163 de căi afișate pentru fișierele HDL, de constrângeri și de diagramă bloc se aflau în directorul noului proiect. Proiectul copiat nu a fost încă recompilat sau testat pe placă.

De ce copiem proiectul?

Proiectul existent conține deja sistemul de procesare Zynq configurat, infrastructura AXI, modulul GPIO pentru octetul de acord al frecvenței, oscilatorul NCO, logica de generare a undei sinusoidale prin LUT și analizorul logic integrat ILA. Copierea evită reconstruirea acestor blocuri și a conexiunilor dintre ele.

Vivado oferă comanda save_project_as pentru salvarea unui proiect cu un nume nou, într-o locație nouă. Verificarea căilor surselor este importantă deoarece un proiect poate utiliza și fișiere aflate în afara propriului director.

Pregătirea proiectului original

  1. Deschide proiectul funcțional arty_z7_nco.
  2. Salvează toate fișierele HDL modificate și diagrama bloc.
  3. Așteaptă finalizarea eventualelor operații de sinteză sau implementare.
  4. Deschide Tcl Console în Vivado.

Comenzile de mai jos se execută în Vivado, nu în Windows PowerShell.

Crearea copiei

În acest exemplu, directorul de destinație se află la același nivel cu directorul proiectului original. Adaptează căile dacă proiectele tale sunt stocate în altă parte.

# Alegem numele noului proiect și un director de destinație separat.
set new_name arty_z7_iq
set new_dir {C:/Users/mianc/Documents/03-Programare/Vivado/arty_z7_iq}

# Oprim operația dacă destinația există deja, pentru a evita suprascrierea.
if {[file exists $new_dir]} {
    error "Directorul de destinatie exista deja: $new_dir"
}

# Copiem proiectul deschis, folosind noul nume.
save_project_as $new_name $new_dir

# Confirmăm numele și directorul proiectului activ.
puts "Proiect activ: [current_project]"
puts "Directorul proiectului: [get_property DIRECTORY [current_project]]"

Rezultatul așteptat pentru identificarea proiectului:

Proiect activ: arty_z7_iq
Directorul proiectului: C:/Users/mianc/Documents/03-Programare/Vivado/arty_z7_iq

Dacă destinația există deja, oprește-te și verifică ce conține. Alege un alt director neutilizat pentru a păstra experimentele anterioare. Dacă execuți comenzile individual în consolă, nu continua după apariția unei erori.

Verificarea căilor fișierelor sursă

Înainte de a modifica proiectul copiat, afișează fișierele pe care acesta le utilizează:

# Afișăm fișierele HDL, de constrângeri și de diagramă bloc din proiect.
foreach f [get_files -all] {
    if {[string tolower [file extension $f]] in {.v .sv .vhd .vhdl .xdc .bd}} {
        puts $f
    }
}

În acest experiment, principalele surse copiate au fost:

arty_z7_iq/arty_z7_iq.srcs/sources_1/new/nco_phase.v
arty_z7_iq/arty_z7_iq.srcs/sources_1/new/nco_sine_lut.v
arty_z7_iq/arty_z7_iq.srcs/sources_1/bd/nco_design/nco_design.bd
arty_z7_iq/arty_z7_iq.srcs/sim_1/new/tb_nco_phase.v

Fișierele HDL generate, constrângerile blocurilor IP și modulul HDL de nivel superior generat și gestionat de Vivado, numit wrapper, aveau, de asemenea, căi în interiorul directorului arty_z7_iq.

Dacă o cale indică proiectul original sau un alt director partajat, verific-o înainte de a edita fișierul. Schimbarea numelui proiectului nu garantează copierea tuturor dependențelor externe. Dacă proiectul utilizează fișiere de date pentru tabele, depozite IP proprii sau căi absolute în codul HDL, verifică-le separat. Lista filtrată după extensii de mai sus nu acoperă toate aceste situații.

Denumiri care pot rămâne neschimbate

Noul proiect se numește arty_z7_iq, însă diagrama bloc existentă poate păstra numele nco_design. Modulele HDL, precum nco_phase și nco_sine_lut, își pot păstra și ele numele.

Nu este necesară redenumirea fiecărui obiect intern pentru a corespunde numelui proiectului.

Mesaje observate în timpul copierii

Vivado a afișat avertismente conform cărora interfața de ceas clk, identificată automat, nu avea o interfață de magistrală asociată și nici parametrul FREQ_HZ. Aceste mesaje nu au împiedicat copierea. Ele privesc metadatele interfeței și trebuie analizate la validarea proiectului în curs de dezvoltare; nu demonstrează existența unei încălcări a constrângerilor de temporizare.

Continuarea dezvoltării

  1. Confirmă că proiectul activ este arty_z7_iq înainte de a face modificări.
  2. Deschide fișierul nco_design.bd din copie și verifică legăturile existente.
  3. Adaugă și simulează treptat noile blocuri de procesare I/Q.
  4. Validează diagrama bloc, refă sinteza și implementarea, apoi verifică temporizarea după modificări.
  5. Exportă un fișier XSA nou când configurația hardware este pregătită pentru integrarea cu Linux.

Proiectul original arty_z7_nco rămâne referința funcțională. Păstrează noul fișier XSA și fișierele de pornire rezultate în locații clar separate de cele originale.

PetaLinux este un proiect separat

Această procedură copiază doar proiectul hardware Vivado. Proiectul PetaLinux de pe Ubuntu, configurația sa de rețea, aplicațiile C și conținutul cardului SD se gestionează separat.

Înainte de a importa configurația hardware modificată, creează un proiect PetaLinux separat sau o copie adecvată a configurației și a rețetelor proprii. O copie simplă a directorului de compilare Yocto nu este neapărat portabilă, deoarece fișierele generate pot conține căi absolute. Păstrează imaginea funcțională și fișierele sale de pornire ca referință.

Referință