Vivado 2014.1 memungkinkan penggunaan skrip .tcl untuk membuat ulang proyek.
Untuk melakukan ini, dengan proyek Anda terbuka, buka File -> Write Project tcl.
Proyek Dasar
Saya biasanya menyimpan sumber dan skrip .tcl saya di lokasi di luar direktori proyek. Inti IP xilinx yang dihasilkan dalam proyek dapat disalin di tempat lain dengan mengklik kanan pada inti dan memilih "Salin IP". Dan menghapus yang asli. Ketika skrip tcl dibuat, ia membuat tautan relatif ke file-file ini. Ini biasanya seperti apa struktur direktori saya:
base_project/
srcs/
project.v
ip/
ip1/
ip1.xml
ip1.xci
genproject.tcl
Hanya file IP .xml dan .xci yang perlu dikomit. (Dan bahkan ini tidak perlu, secara teknis, lihat catatan di akhir).
Inilah yang menjadi komitmen untuk git, perhatikan kurangnya project.xpr atau direktori proyek.
Ketika saya menjalankan genproject.tcl
, itu menciptakan direktori lain untuk proyek.
base_project/
srcs/
ip/
genproject.tcl
projectdir/
project.runs/
project.cache/
project.xpr
Folder baru ini benar-benar sekali pakai. Untuk membuat struktur ini, saya memodifikasi skrip tcl dengan cara berikut.
Saya mengubah 3 baris pertama sebagai berikut:
# Set the reference directory for source file relative paths (by default the value is script directory path)
set origin_dir [file dirname [info script]]
# Set the directory path for the original project from where this script was exported
set orig_proj_dir "[file normalize "$origin_dir/projectdir"]"
# Create project
create_project project $projectdir/project
Ini membuat direktori proyek baru dan proyek baru di dir itu.
Lalu saya memodifikasi jalur untuk menunjuk ke tempat yang benar. Anda mungkin perlu mengubah jalur ini di tempat lain di skrip.
# Set 'sources_1' fileset object
set obj [get_filesets sources_1]
set files [list \
"[file normalize "$origin_dir/srcs/project.v"]"\
"[file normalize "$origin_dir/ip/ip1/ip1.xci"]"\
]
add_files -norecurse -fileset $obj $files
Saya juga memodifikasi desain berjalan untuk core IP seperti yang terlihat di jawaban ini .
File .wcfg dapat dimasukkan dengan cara yang mirip dengan ip dan srcs.
Di sinilah pemrosesan berakhir untuk proyek yang lebih sederhana (hanya berisi sumber dan IP, tanpa diagram blok). Hal-hal berikut juga perlu dilakukan untuk menyimpan data diagram blok.
Proyek Diagram Blok
Untuk menyimpan diagram blok, dengan diagram blok terbuka, buka File -> Export -> Block Diagram ke Tcl, dan simpan di dir yang sama dengan file tcl lainnya.
Lalu saya membuat Generate_Wrapper.tcl
skrip yang membuat file pembungkus diagram blok sehingga Anda tidak perlu melakukannya secara manual. Folder project / project.srcs digunakan untuk menyimpan data bd, tetapi masih benar-benar sekali pakai, karena bd disimpan dalam skrip tcl. Simpan ini dengan dua lainnya.
set origin_dir [file dirname [info script]]
make_wrapper -files [get_files $origin_dir/project/project.srcs/sources_1/bd/design_1/design_1.bd] -top
add_files -norecurse -force $origin_dir/project/project.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v
update_compile_order -fileset sources_1
update_compile_order -fileset sim_1
Pada akhir saya, genproject.tcl
saya menambahkan baris berikut untuk menghasilkan diagram blok dan pembungkus:
source $origin_dir/Create_bd.tcl
source $origin_dir/Generate_Wrapper.tcl
regenerate_bd_layout
Untuk proyek tanpa sumber (diagram blok saja), komit git saya adalah sebagai berikut:
base_project/
Generate_Wrapper.tcl
Create_Bd.tcl
genproject.tcl
Untuk menghasilkan semuanya, jalankan genproject.tcl
.
Anda bahkan dapat menggabungkan semua ini menjadi satu jika Anda sangat efisien, saya belum bulat untuk itu.
Komponen Kustom: Proyek komponen
Catatan cepat lain tentang membuat komponen khusus. Jika Anda memiliki component.xml, tambahkan itu ke daftar sumber tcl Anda:
"[file normalize "$origin_dir/component.xml"]"\
Dan kemudian tambahkan juga bagian berikut:
set file "$origin_dir/component.xml"
set file [file normalize $file]
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property "file_type" "IP-XACT" $file_obj
Ini termasuk desain komponen ke dalam proyek untuk kustomisasi yang mudah.
Komponen Kustom: Merujuk komponen Anda
Anda dapat meningkatkan jalur repo komponen kustom Anda seperti ini:
# Set IP repository paths
set obj [get_filesets sources_1]
set_property "ip_repo_paths" "[file normalize "$origin_dir/path/to/repository"]" $obj
Di folder repo saya, ada beberapa folder yang berisi file .xml. Jadi, Anda tidak mereferensikan folder yang berisi .xml, tetapi orang tua dari folder itu. Misalnya:
repository/
component1/component1.xml
component2/component2.xml
Bagaimana kita menjalankan skrip tcl ini?
Buka Vivado, dan tanpa membuka proyek apa pun, pilih Alat -> Jalankan skrip TCL, dan navigasikan ke skrip Anda.
Catatan TCL ekstra
Setiap perintah yang Anda jalankan di Vivado ditampilkan di tcl console sebagai perintah tcl. Misalnya, ketika saya membuat IP Xilinx baru menggunakan GUI, ini muncul di konsol tcl:
create_ip -name floating_point -vendor xilinx.com -library ip -module_name floating_point_0
set_property -dict [list CONFIG.Operation_Type {Fixed_to_float} CONFIG.A_Precision_Type {Custom} CONFIG.C_A_Exponent_Width {38} CONFIG.C_A_Fraction_Width {0} CONFIG.Result_Precision_Type {Custom} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {16} CONFIG.Flow_Control {NonBlocking} CONFIG.Has_ARESETn {true}] [get_ips floating_point_0]
Ini berarti beberapa hal:
Anda bahkan tidak perlu menyimpan core ip xilinx - begitu mereka menginginkannya, salin perintah ke skrip tcl dan Anda tidak perlu melakukan ip / lagi.
tentukan direktori IP dengan argumen -dir setelah -module_name untuk meletakkannya di mana saja Anda inginkan (secara default ada di project.srcs).
Kebanyakan apa pun yang Anda lakukan di GUI dapat dilakukan di tcl, cara termudah untuk melihat bagaimana xilinx melakukan sesuatu adalah dengan melakukannya di GUI dan kemudian melihat apa yang ada di konsol TCL sesudahnya.
Pdf humongous ini merinci semua perintah vivado tcl.