Menggunakan SVN dengan Xilinx Vivado?

13

Saya baru saja menyatakan menggunakan Vivado dalam proyek baru dan ingin meletakkan file proyek di bawah SVN.

Vivado tampaknya membuat semua file proyek dengan nama proyek (katakanlah proj1):

/<path to the project>/proj1/
                            proj1.xpr
                            proj1.srcs/
                                       constrs_1/
                                                new/
                                                    const1.xdc
                            proj1.runs/
                            proj1.data/
                            proj1.cache/

Pertanyaan saya adalah file apa yang perlu saya letakkan di bawah SVN selain XDC dan file XPR?

FarhadA
sumber
1
Mengapa Anda berpikir bahwa Anda tidak membutuhkan semuanya jika mereka?
Grady Player
6
Saya tidak mengerti apa yang Anda maksud di sini. Vivado menciptakan banyak file yang tidak perlu dikontrol sejak dibuat. File sumber saya ada di tempat lain, saya hanya perlu menyimpan file yang penting untuk Vivado.
FarhadA
Saya akan mengatakan bahwa karena satu-satunya input adalah kode sumber, itulah satu-satunya file yang diletakkan di bawah SVN. Tapi saya tidak pernah menggunakannya, hanya menebak
clabacchio
Apakah ada opsi bersih? Anda bisa Bersihkan lalu periksa semuanya.
Grady Player
2
Saya membuat skrip TCL untuk membuat ulang proyek Vivado. Dan letakkan yang di bawah kontrol versi. Ketika membangun proyek (dengan make), itu akan membuat file yang dibutuhkan Xilinx. Itu mencegah saya harus checkin direktori proyek lengkap dan file Xilinx.
vermaete

Jawaban:

6

Xilinx membuat video YouTube (desah) untuk menangani ini. Berikut ini tautan ke videonya

http://www.xilinx.com/training/vivado/vivado-version-control-overview.htm

Ini ringkasan video saya (8 menit)

Sebelum kamu memulai

Jika Anda benar-benar menyukai kontrol penuh, Xilinx menyarankan agar Anda melupakan GUI sepenuhnya dan melakukan segalanya di baris perintah, dan kemudian Anda tahu apa itu sumber dan apa yang tidak.

Jika tidak, Xilinx menyadari bahwa proyek Vivado tidak dirancang untuk kontrol versi. JANGAN PERIKSA DALAM SELURUH PROYEK. Tapi baca terus untuk petunjuk ...

Baseline

Tentu saja, apa pun yang Anda tulis di luar alat Vivado harus diperiksa.

Periksa file-file berikut

*.v, *.vh, *.vhdl, *.edif  - HDL and Netlist
*.xdc - Constraints
*.xci - IP Core
*.bd  - IP Integrator Block Diagram
*.xmp - Embedded Subsystem
*.sgp - System Generator Subsystem
*.bmm
*.cdc - Chipscope
*.elf
*.mem

Blok IP

Jika Anda menggunakan blok IP, hasilkan IP di folder unik, dan periksa semuanya.

Pos pemeriksaan

Jika Anda ingin dapat menjalankan kembali bagian dari aliran tanpa menjalankan semuanya, periksa di file pos pemeriksaan.

*.dcp - Design Checkpoints

Adendum saya

Jika alat Xilinx efisien, saya tidak akan merekomendasikan memeriksa file dcp, tetapi mereka membutuhkan waktu berjam-jam untuk menjalankannya, mungkin bermanfaat dengan mengorbankan sistem kontrol versi yang jelek.

Video tidak mengatakan jongkok tentang file proyek Vivado (* .xpr) jadi di sini adalah saran saya:

*.xpr
*.data/*/fileset.xml
*.data/*/runs.xml

Alternatif yang direkomendasikan Xilinx (yang sebenarnya adalah peretasan, tidak cocok untuk kontrol versi) adalah menjalankan File -> Write Project Tclperintah setiap kali Anda ingin komit, dan kemudian komit file TCL ke kontrol versi. Ketika Anda memperbarui folder lokal Anda, Anda perlu menjalankan kembali file TCL untuk membuat semua file proyek. Yuck.

Mark Lakata
sumber
Hebat, itu sangat membantu. Saya tidak lagi menggunakan SVN, tetapi GIT, tetapi ini membantu saya mendapatkan file yang tepat ke dalam repositori.
FarhadA
1
Saya menggunakan file tcl dan itu benar-benar berfungsi dengan sangat baik. Script tcl hanya perlu diperbarui ketika file ditambahkan ke proyek, dan biasanya saya menghasilkan tcl ketika semua file masuk. Mereka hampir tidak yucky atau hacky seperti yang Anda lakukan.
stanri
Solusi TCL akan ideal jika Vivado secara otomatis membuat file TCL setelah setiap perubahan proyek DAN itu membaca file TCL sebagai file "proyek" bukan file xpr. Dengan kata lain, jika Xilinx menyingkirkan file xpr dan menggantinya dengan file tcl.
Mark Lakata
Ada sedikit masalah dengan mengkomit file xpr: itu berubah setiap saat, bahkan ketika Anda hanya membuka Vivado ...
Piedone
3

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.tclskrip 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.tclsaya 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.

stanri
sumber
2

Ada video pelatihan Xilinx yang menjelaskan cara menggunakan sistem kontrol versi dengan Vivado. Pada dasarnya, daftar file tergantung pada fitur yang Anda gunakan.

Jika Anda menggunakan pendekatan skrip (seperti yang dilakukan vermaete), Anda dapat meminta Vivado menulis semua file perantara / sementara ke direktori terpisah ( lihat di sini ), sehingga Anda dapat dengan mudah memisahkannya.

Jika tidak, Anda bisa membersihkan folder build dengan Vivado, dan apa pun yang tersisa mungkin diletakkan di bawah kontrol versi.

hli
sumber
1
Terima kasih, saya akan memeriksanya, sungguh mencengangkan bahwa Xilinx dapat menghasilkan alat yang sangat mahal tetapi bahkan tidak repot-repot memberikan dukungan yang tepat untuk kontrol revisi dengannya.
FarhadA
1
Ada komentar yang menarik di forum Xilinx (dari 2009 IIRC): alat itu ditujukan untuk insinyur perangkat keras. Dan insinyur perangkat keras tidak tahu, dan tidak peduli dengan kontrol revisi. Tapi saya kira sikap itu telah berubah, dan semakin banyak insinyur SW menggunakan alat-alat ini. Jadi sekarang kontrol revisi lebih penting daripada di masa lalu.
hli
2
Ya, itu adalah penghinaan murni yang pernah mengucapkan kata-kata itu. Insinyur HW menggunakan berbagai jenis kontrol revisi, banyak alat mendukung itu, banyak insinyur melakukannya dengan menggunakan RC standar, dan yang lain menggunakan alat seperti Mentor HDL designer dengan built in RC. Sayangnya, vendor FPGA seperti Xilinx dan Altera tampaknya tidak peduli dengan masalah ini, dan di situlah masalah utamanya.
FarhadA