Xilinx Vivado ile SVN mi kullanıyorsunuz?


13

Vivado'yu yeni bir projede kullandığımı belirttim ve proje dosyalarını SVN altına koymak istiyorum.

Vivado, proje adı altında tüm proje dosyalarını oluşturuyor gibi görünüyor (örneğin proj1):

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

Benim sorum XDC ve XPR dosyası dışında SVN altına koymam gereken dosyalar nelerdir?


1
Neden onlara ihtiyacın olmadığını düşünüyorsun?
Grady Oyuncu

6
Burada ne demek istediğini anlamıyorum. Vivado, oluşturuldukları için kontrol edilmesi gerekmeyen çok sayıda dosya oluşturur. Kaynak dosyalarım başka bir yerde, sadece Vivado için önemli olan dosyaları kaydetmem gerekiyor.
FarhadA

Tek girdi kaynak kod olduğundan, SVN altına koymak için tek dosya olduğunu söyleyebilirim. Ama ben hiç kullanmadım, sadece tahmin
clabacchio

Temiz bir seçenek var mı? Temizleyebilir ve sonra her şeyi kontrol edebilirsiniz.
Grady Oyuncu

2
Vivado projesini yeniden oluşturmak için bir TCL betiği oluşturuyorum. Ve bunu sürüm kontrolü altına alın. Projeyi oluştururken (make ile), Xilinx'in ihtiyaç duyduğu dosyaları oluşturur. Bu, Xilinx'in tüm proje dizinini ve dosyalarını kontrol etmemi engelliyor.
Mart'ta vermaete

Yanıtlar:


6

Xilinx bununla başa çıkmak için bir YouTube videosu (iç çeker) oluşturur. video için link burada

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

İşte videomun özeti (8 dakika)

Başlamadan önce

Tam kontrolü gerçekten seviyorsanız, Xilinx GUI'yi tamamen terk etmenizi ve komut satırında her şeyi yapmanızı önerir ve sonra neyin kaynak ve neyin olmadığını bilirsiniz.

Aksi takdirde Xilinx, Vivado projelerinin sürüm kontrolü için tasarlanmadığını fark eder. TÜM PROJEYİ KONTROL ETMEYİN. Ama ipuçları için okumaya devam edin ...

Temel

Tabii ki, Vivado aracının dışında yazdığınız her şey kontrol edilmelidir.

Aşağıdaki dosyaları kontrol edin

*.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

IP blokları

IP blokları kullanıyorsanız, IP'yi benzersiz bir klasörde oluşturun ve her şeyi kontrol edin.

Kontrol noktaları

Akışın bölümlerini her şeyi çalıştırmadan yeniden çalıştırabilmek istiyorsanız, kontrol noktası dosyalarını kontrol edin.

*.dcp - Design Checkpoints

Zeyilname

Xilinx araçları verimli olsaydı, dcp dosyalarını kontrol etmeyi tavsiye etmem, ancak çalıştırılması çok uzun sürüyor, çirkin bir sürüm kontrol sistemi pahasına değerli olabilir.

Video, Vivado proje dosyaları (* .xpr) hakkında çömelme demiyor, bu yüzden benim önerim:

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

Xilinx'in önerdiği alternatif (gerçekten bir hack, sürüm kontrolü için uygun değil), File -> Write Project Tclher taahhütte bulunmak istediğinizde komutu çalıştırmak ve daha sonra bu TCL dosyasını sürüm kontrolüne uygulamaktır. Yerel klasörünüzü güncellediğinizde, tüm proje dosyalarını oluşturmak için bu TCL dosyasını yeniden çalıştırmanız gerekir. Yuck.


Harika, bu gerçekten yardımcı oldu. Artık SVN değil, GIT kullanıyorum, ancak bu doğru dosyaları depoya almama yardımcı oluyor.
FarhadA

1
Tcl dosyalarını kullanıyorum ve gerçekten çok iyi çalışıyor. Tcl komut dosyalarının yalnızca bir projeye bir dosya eklendiğinde güncellenmesi gerekir ve genellikle tüm dosyaları içerdiğinde tcl'yi oluştururum. Onları yapmak kadar neredeyse yucky veya hacky değildir.
stanri

Vivado, her proje değişikliğinden sonra TCL dosyasını otomatik olarak oluşturduysa ve TCL dosyasını xpr dosyası yerine "proje" dosyası olarak okuduysa, TCL çözümü ideal olacaktır. Başka bir deyişle, Xilinx xpr dosyasından kurtulur ve tcl dosyasıyla değiştirilirse.
Mark Lakata

Xpr dosyasını kaydetme ile ilgili küçük bir sorun var: sadece Vivado'yu açsanız bile her seferinde değişir ...
Piedone

3

Vivado 2014.1, projeleri yeniden oluşturmak için .tcl betiklerinin kullanılmasına izin verir.

Bunu yapmak için, projeniz açıkken, Dosya -> Proje Yaz tcl'ye gidin.

Temel Projeler

Genellikle kaynaklarımı ve .tcl betiğini proje dizininin dışındaki bir yerde saklarım. Proje içerisinde üretilen xilinx IP çekirdekleri, çekirdeğe sağ tıklayıp "IP Kopyala" seçilerek başka bir yere kopyalanabilir. Ve orijinali silmek. Tcl betiği oluşturulduğunda, bu dosyalara göreli bağlantılar oluşturur. Bu genellikle benim dizin yapısı gibi görünüyor:

base_project/
 srcs/
  project.v
 ip/
  ip1/
   ip1.xml
   ip1.xci
 genproject.tcl

Yalnızca IP .xml ve .xci dosyalarının işlenmesi gerekir. (Ve bu bile gerekli değildir, teknik olarak, sondaki notlara bakın).

Git'i taahhüt eden şey budur, project.xpr veya proje dizinlerinin eksikliğine dikkat edin.

Çalıştırdığımda genproject.tcl, proje için başka bir dizin oluşturur.

base_project/
 srcs/
 ip/
 genproject.tcl
 projectdir/
  project.runs/
  project.cache/
  project.xpr

Bu yeni klasör tamamen tek kullanımlıktır. Bu yapıyı oluşturmak için, tcl betiğini aşağıdaki şekilde değiştiriyorum.

İlk 3 satırı aşağıdaki gibi değiştirdim:

# 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

Bu, yeni bir proje dizini ve bu dizinde yeni bir proje oluşturur.

Sonra yolları doğru yerlere işaret edecek şekilde değiştiriyorum. Bu yolları komut dosyasının diğer yerlerinde değiştirmeniz gerekebilir.

# 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

Ayrıca, bu yanıtta görüldüğü gibi IP çekirdekleri için tasarım çalışmalarını da değiştiriyorum .

.Wcfg dosyaları ip ve srcs dosyalarına benzer şekilde eklenebilir.

Bu, işlemenin daha basit projeler için bittiği yerdir (sadece kaynakları ve IP'yi içerir, blok şemaları içermez). Blok diyagram verilerini saklamak için aşağıdakilerin de yapılması gerekir.

Blok Diyagram Projeleri

Blok şemasını kaydetmek için, blok şeması açıkken, Dosya -> Dışa Aktar -> Blok Diyagramı Tcl'ye gidin ve diğer tcl dosyasıyla aynı dizine kaydedin.

Sonra Generate_Wrapper.tclblok şeması sarıcı dosyalarını oluşturan bir komut dosyası yaptım , böylece bunu manuel olarak yapmanız gerekmez. Bd verilerini depolamak için project / project.srcs klasörü kullanılır, ancak bd tcl betiğinde depolandığından hala tamamen tek kullanımlıktır. Bunu diğer ikisiyle birlikte sakla.

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

Benim sonunda genproject.tclblok şeması ve sarmalayıcıları oluşturmak için aşağıdaki satırları ekliyorum:

source $origin_dir/Create_bd.tcl
source $origin_dir/Generate_Wrapper.tcl
regenerate_bd_layout

Kaynağı olmayan projeler için (sadece blok şeması) git taahhüm sadece şu şekildedir:

base_project/
 Generate_Wrapper.tcl
 Create_Bd.tcl
 genproject.tcl

Her şeyi üretmek için çalıştırın genproject.tcl.

Özellikle verimli iseniz, bunların hepsini bir araya getiremedim.

Özel Bileşenler: Bileşen projesi

Özel bir bileşen oluşturma hakkında başka bir hızlı not. Component.xml dosyanız varsa, bunu tcl kaynakları listenize ekleyin:

  "[file normalize "$origin_dir/component.xml"]"\

Ve sonra aşağıdaki bölümü de ekleyin:

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

Bu, kolay özelleştirme için projeye bileşen tasarımını da içerir.

Özel Bileşenler: Bileşeninize başvurma

Özel bileşen repo yolunuzu şu şekilde aralıklandırabilirsiniz:

# Set IP repository paths
set obj [get_filesets sources_1]
set_property "ip_repo_paths" "[file normalize "$origin_dir/path/to/repository"]" $obj

Repo klasörümde .xml dosyaları içeren ayrı klasörler var. Yani .xml dosyasını içeren klasöre değil, üst klasörüne başvuruyorsunuz. Örneğin:

repository/
 component1/component1.xml
 component2/component2.xml

Bu tcl betiklerini nasıl çalıştırıyoruz?

Vivado'yu açın ve herhangi bir proje açmadan Araçlar -> TCL betiğini çalıştır'ı seçin ve betiğinize gidin.

Ek TCL notları

Vivado'da çalıştırdığınız her komut tcl konsolunda bir tcl komutu olarak gösterilir. Örneğin, GUI kullanarak yeni bir Xilinx IP oluşturduğumda, bu tcl konsolunda geldi:

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]

Bu birkaç şey anlamına gelir:

  • Gerçekten xilinx ip çekirdeklerini kaydetmenize bile gerek yok - istediğiniz gibi olduklarında, komutları tcl betiğine kopyalayın ve artık ip / artık işlem yapmanız gerekmez.

  • IP dizinini istediğiniz yere koymak için -module_name öğesinden sonra -dir bağımsız değişkeniyle belirtin (varsayılan olarak project.srcs dosyasındadır).

  • Çoğunlukla GUI'de yaptığınız her şey tcl'de yapılabilir, xilinx'in işleri nasıl yaptığını görmenin en kolay yolu bunu GUI'de yapmak ve daha sonra TCL konsolunda neler olduğuna bakmaktır.

  • Bu komik pdf tüm vivado tcl komutlarını detaylandırıyor.


2

Vivado ile sürüm kontrol sistemlerinin nasıl kullanılacağını açıklayan bir Xilinx eğitim videosu var. Temel olarak, dosyaların listesi kullandığınız özelliklere bağlıdır.

Komut dosyası içeren bir yaklaşım kullanırsanız (vermaete olduğu gibi) Vivado'nun tüm ara / geçici dosyaları ayrı bir dizine yazmasını sağlayabilirsiniz ( buraya bakın ), böylece bunları kolayca ayırabilirsiniz.

Aksi takdirde, derleme klasörünü Vivado ile temizleyebilirsiniz ve kalan her şey sürüm kontrolü altına alınabilir.


1
Teşekkürler, içine bakacağım, Xilinx'in çok pahalı bir araç bulabileceği şaşırtıcıdır, ancak revizyon kontrolü için uygun desteği vermekten bile rahatsız değildir.
FarhadA

1
Xilinx forumlarında ilginç bir yorum vardı (2009 IIRC'den): araçlar donanım mühendisleri için tasarlandı. Ve donanım mühendisleri revizyon kontrolünü bilmiyorlar ve umursamıyorlar. Ama sanırım bu tutum değişti ve bu araçları kullanan giderek daha fazla SW mühendisi var. Şimdi revizyon kontrolü geçmişte olduğundan daha önemli.
hli

2
Bu sözleri söyleyen saf bir hakaret. HW mühendisleri çeşitli tip revizyon kontrolü kullanır, birçok araç bunu destekler, birçok mühendis bunu standart RC kullanarak yapar ve diğerleri de RC ile Mentor HDL tasarımcısı gibi araçları kullanır. Ne yazık ki, Xilinx ve Altera gibi FPGA satıcıları bu sorunları önemsemiyor gibi görünüyor ve asıl sorun burada.
FarhadA

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.