Sử dụng SVN với Xilinx Vivado?


13

Tôi vừa tuyên bố sử dụng Vivado trong một dự án mới và muốn đặt các tệp dự án theo SVN.

Vivado dường như tạo ra tất cả các tệp dự án dưới tên dự án (giả sử proj1):

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

Câu hỏi của tôi là các tệp tôi cần đặt trong SVN khác với tệp XDC và XPR là gì?


1
Tại sao bạn nghĩ rằng bạn không cần tất cả nếu họ?
Người chơi Grady

6
Tôi không hiểu ý của bạn ở đây. Vivado tạo ra vô số tập tin không cần phải kiểm soát kể từ khi chúng được tạo. Các tệp nguồn của tôi ở một nơi khác, tôi chỉ cần lưu các tệp quan trọng đối với Vivado.
FarhadA

Tôi muốn nói rằng vì đầu vào duy nhất là mã nguồn, đó là tệp duy nhất được đặt trong SVN. Nhưng tôi chưa bao giờ sử dụng nó, chỉ đoán thôi
clabacchio

Có một lựa chọn sạch sẽ? Bạn có thể Dọn dẹp sau đó kiểm tra mọi thứ.
Grady Player

2
Tôi đang tạo một kịch bản TCL để tạo lại dự án Vivado. Và đặt cái đó dưới sự kiểm soát phiên bản. Khi xây dựng dự án (có make), nó sẽ tạo các tệp Xilinx cần. Điều đó ngăn tôi phải kiểm tra toàn bộ thư mục dự án và tệp của Xilinx.
vermaete

Câu trả lời:


6

Xilinx tạo một video YouTube (thở dài) để giải quyết vấn đề này. Đây là đường dẫn tới video

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

Dưới đây là tóm tắt của tôi về video (8 phút)

Trước khi bạn bắt đầu

Nếu bạn thực sự thích toàn quyền kiểm soát, Xilinx khuyên bạn nên từ bỏ GUI hoàn toàn và thực hiện mọi thứ trên dòng lệnh, sau đó bạn biết đâu là nguồn và đâu là nguồn.

Mặt khác, Xilinx nhận ra rằng các dự án Vivado không được thiết kế để kiểm soát phiên bản. KHÔNG KIỂM TRA TRONG DỰ ÁN ENTIRE. Nhưng hãy đọc để được gợi ý ...

Đường cơ sở

Tất nhiên, bất cứ điều gì bạn viết bên ngoài công cụ Vivado nên được kiểm tra.

Kiểm tra các tập tin sau

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

Khối IP

Nếu bạn sử dụng các khối IP, hãy tạo IP trong một thư mục duy nhất và kiểm tra mọi thứ.

Trạm kiểm soát

Nếu bạn muốn có thể chạy lại các phần của luồng mà không chạy mọi thứ, hãy kiểm tra các tệp điểm kiểm tra.

*.dcp - Design Checkpoints

Hợp đồng bổ sung của tôi

Nếu các công cụ Xilinx hoạt động hiệu quả, tôi sẽ không khuyên bạn nên kiểm tra các tệp dcp, nhưng chúng mất quá nhiều giờ để chạy, nó có thể đáng giá với hệ thống kiểm soát phiên bản xấu.

Video không nói ngồi xổm về các tệp dự án Vivado (* .xpr) vì vậy đây là đề xuất của tôi:

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

Cách thay thế mà Xilinx khuyến nghị (thực sự là hack, không phù hợp với kiểm soát phiên bản) là chạy File -> Write Project Tcllệnh mỗi khi bạn muốn cam kết, sau đó cam kết tệp TCL đó để kiểm soát phiên bản. Khi bạn cập nhật thư mục cục bộ của mình, bạn cần chạy lại tệp TCL đó để tạo tất cả các tệp dự án. Kinh quá.


Tuyệt vời, điều đó thực sự hữu ích. Tôi không còn sử dụng SVN, nhưng GIT, nhưng điều này giúp tôi có được các tệp đúng vào kho lưu trữ.
FarhadA

1
Tôi sử dụng các tập tin tcl và nó thực sự hoạt động tốt. Các tập lệnh tcl chỉ cần được cập nhật khi một tập tin được thêm vào một dự án và thông thường tôi tạo ra tcl khi tất cả các tập tin được đưa vào. Chúng gần như không may mắn hoặc bị hack như bạn thực hiện.
stanri

Giải pháp TCL sẽ rất lý tưởng nếu Vivado tự động tạo tệp TCL sau mỗi lần thay đổi dự án VÀ nó đọc tệp TCL dưới dạng tệp "dự án" thay vì tệp xpr. Nói cách khác, nếu Xilinx thoát khỏi tệp xpr và thay thế nó bằng tệp tcl.
Đánh dấu Lakata

Có một vấn đề nhỏ với việc cam kết tệp xpr: nó thay đổi mọi lúc, ngay cả khi bạn chỉ mở Vivado ...
Piedone

3

Vivado 2014.1 cho phép sử dụng các tập lệnh .tcl để tạo lại các dự án.

Để thực hiện việc này, với dự án của bạn mở, hãy vào Tệp -> Viết dự án tcl.

Dự án cơ bản

Tôi thường lưu trữ các nguồn và tập lệnh .tcl của tôi ở một vị trí bên ngoài thư mục dự án. Các lõi IP xilinx được tạo trong dự án có thể được sao chép ở nơi khác bằng cách nhấp chuột phải vào lõi và chọn "Sao chép IP". Và xóa bản gốc. Khi tập lệnh tcl được tạo, nó tạo các liên kết tương đối đến các tệp này. Đây thường là cấu trúc thư mục của tôi trông như thế nào:

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

Chỉ các tệp IP .xml và .xci cần được cam kết. (Và thậm chí điều này không cần thiết, về mặt kỹ thuật, hãy xem ghi chú ở cuối).

Đây là những gì được cam kết với git, lưu ý việc thiếu các thư mục project.xpr hoặc dự án.

Khi tôi chạy genproject.tcl, nó tạo một thư mục khác cho dự án.

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

Thư mục mới này là hoàn toàn dùng một lần. Để tạo cấu trúc này, tôi sửa đổi tập lệnh tcl theo cách sau.

Tôi thay đổi 3 dòng đầu tiên như sau:

# 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

Điều này tạo ra một thư mục dự án mới và dự án mới trong thư mục đó.

Sau đó, tôi sửa đổi các đường dẫn để chỉ đến những nơi chính xác. Bạn có thể cần thay đổi các đường dẫn này ở những nơi khác trong tập lệnh.

# 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

Tôi cũng sửa đổi thiết kế chạy cho lõi IP như trong câu trả lời này .

Các tập tin .wcfg có thể được bao gồm theo cách tương tự như ip và srcs.

Đây là nơi quá trình xử lý kết thúc cho các dự án đơn giản hơn (chỉ chứa các nguồn và IP, không có sơ đồ khối). Những điều sau đây cũng cần được thực hiện để lưu trữ dữ liệu sơ đồ khối.

Dự án sơ đồ khối

Để lưu sơ đồ khối, với sơ đồ khối mở, hãy đi tới Tệp -> Xuất -> Sơ đồ khối sang Tcl và lưu nó trong cùng một thư mục như tệp tcl khác.

Sau đó, tôi đã tạo một Generate_Wrapper.tcltập lệnh tạo tập tin trình bao bọc sơ đồ khối để bạn không cần phải thực hiện thủ công. Thư mục project / project.srcs được sử dụng để lưu trữ dữ liệu bd, nhưng nó vẫn hoàn toàn dùng một lần, vì bd được lưu trữ trong tập lệnh tcl. Lưu cái này với hai cái kia.

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

Cuối cùng, genproject.tcltôi thêm các dòng sau để tạo sơ đồ khối và trình bao bọc:

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

Đối với các dự án không có nguồn (chỉ là sơ đồ khối), cam kết git của tôi chỉ là như sau:

base_project/
 Generate_Wrapper.tcl
 Create_Bd.tcl
 genproject.tcl

Để tạo mọi thứ, hãy chạy genproject.tcl .

Bạn thậm chí có thể kết hợp tất cả những thứ này thành một nếu bạn đặc biệt hiệu quả, tôi chưa làm tròn được điều đó.

Thành phần tùy chỉnh: Dự án thành phần

Một lưu ý nhanh về việc tạo một thành phần tùy chỉnh. Nếu bạn có một tệp thành phần, hãy thêm nó vào danh sách nguồn tcl của bạn:

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

Và sau đó cũng thêm phần sau:

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

Điều này bao gồm thiết kế thành phần vào dự án để dễ dàng tùy chỉnh.

Thành phần tùy chỉnh: Tham khảo thành phần của bạn

Bạn có thể spacify đường dẫn repo thành phần tùy chỉnh của bạn như thế này:

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

Trong thư mục repo của tôi, có các thư mục riêng lẻ chứa các tệp .xml. Vì vậy, bạn không tham khảo thư mục chứa .xml, mà là cha mẹ của thư mục đó. Ví dụ:

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

Làm thế nào để chúng tôi chạy các kịch bản tcl?

Mở Vivado và không mở bất kỳ dự án nào, chọn Công cụ -> Chạy tập lệnh TCL và điều hướng đến tập lệnh của bạn.

Ghi chú TCL thêm

Mỗi lệnh bạn chạy trong Vivado được hiển thị trong bảng điều khiển tcl dưới dạng lệnh tcl. Ví dụ: khi tôi tạo IP Xilinx mới bằng GUI, điều này xuất hiện trong bảng điều khiển 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]

Điều này có nghĩa là một vài điều:

  • Bạn thậm chí không cần phải lưu lõi ip xilinx - một khi chúng là cách bạn muốn, hãy sao chép các lệnh vào tập lệnh tcl và bạn không cần phải thực hiện ip / nữa.

  • chỉ định thư mục IP với đối số -dir sau -module_name để đặt nó ở bất cứ đâu bạn muốn (mặc định nó nằm trong project.srcs).

  • Hầu hết mọi thứ bạn làm trong GUI đều có thể được thực hiện trong tcl, cách dễ nhất để xem xilinx thực hiện công cụ như thế nào là thực hiện trong GUI và sau đó xem xét những gì trong bảng điều khiển TCL sau đó.

  • Pdf hài hước này chi tiết tất cả các lệnh tcl vivado.


2

Có một video đào tạo Xilinx giải thích cách sử dụng các hệ thống kiểm soát phiên bản với Vivado. Về cơ bản, danh sách các tệp phụ thuộc vào các tính năng bạn đang sử dụng.

Nếu bạn sử dụng cách tiếp cận theo kịch bản (như vermaete), bạn có thể yêu cầu Vivado ghi tất cả các tệp trung gian / tạm thời vào một thư mục riêng ( xem tại đây ), để bạn có thể dễ dàng tách chúng ra.

Mặt khác, bạn có thể dọn sạch thư mục bản dựng bằng Vivado và mọi thứ còn lại có thể được đặt dưới sự kiểm soát phiên bản.


1
Cảm ơn, tôi sẽ xem xét nó, thật đáng ngạc nhiên khi Xilinx có thể đưa ra một công cụ đắt tiền nhưng thậm chí không bận tâm đến việc hỗ trợ thích hợp cho việc kiểm soát sửa đổi với nó.
FarhadA

1
Có một nhận xét thú vị trên các diễn đàn Xilinx (từ IIRC 2009): các công cụ dành cho các kỹ sư phần cứng. Và các kỹ sư phần cứng không biết và không quan tâm đến kiểm soát sửa đổi. Nhưng tôi cho rằng thái độ đã thay đổi, và ngày càng có nhiều kỹ sư SW sử dụng các công cụ này. Vì vậy, bây giờ kiểm soát sửa đổi quan trọng hơn so với trong quá khứ.
hli

2
Vâng, đó là một sự xúc phạm thuần túy đã từng nói những lời đó. Các kỹ sư CTNH sử dụng nhiều loại điều khiển sửa đổi, nhiều công cụ hỗ trợ, nhiều kỹ sư làm điều đó bằng cách sử dụng RC tiêu chuẩn và những người khác sử dụng các công cụ như nhà thiết kế Mentor HDL tích hợp RC. Đáng buồn thay, các nhà cung cấp đồ họa như Xilinx và Altera dường như không quan tâm đến những vấn đề này và đó là vấn đề chính.
FarhadA

1

2
Câu trả lời của bạn sẽ hữu ích hơn nhiều nếu bạn có thể đưa vào một số nội dung thú vị từ cuộc thảo luận đó, bởi vì nó sẽ tồn tại đến các liên kết chết cuối cùng (là một diễn đàn có thể xảy ra khi nó được lưu trữ)
clabacchio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.