Xilinx Vivado와 함께 SVN을 사용하십니까?


13

방금 새 프로젝트에서 Vivado를 사용한다고 말하고 SVN 아래에 프로젝트 파일을 넣고 싶습니다.

Vivado는 프로젝트 이름 (예 : proj1)으로 모든 프로젝트 파일을 생성하는 것 같습니다.

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

내 질문은 XDC 및 XPR 파일 이외의 SVN에 배치 해야하는 파일은 무엇입니까?


1
왜 필요하지 않다고 생각합니까?
Grady Player

6
나는 당신이 여기서 무슨 뜻인지 이해하지 못합니다. Vivado는 생성 된 파일이므로 제어 할 필요가없는 많은 파일을 생성합니다. 내 소스 파일이 다른 곳에 있습니다. Vivado에 중요한 파일을 저장하면됩니다.
FarhadA

유일한 입력은 소스 코드이기 때문에 SVN에 넣을 수있는 유일한 파일이라고 말하고 싶습니다. 그러나 나는 그것을 결코 사용하지 않았다, 단지 추측
clabacchio

깨끗한 옵션이 있습니까? 당신은 청소하고 모든 것을 확인할 수 있습니다.
Grady Player

2
Vivado 프로젝트를 재생성하기 위해 TCL 스크립트를 작성 중입니다. 그리고 그 버전을 버전 관리하에 두십시오. 프로젝트를 만들 때 (make와 함께) Xilinx에 필요한 파일이 생성됩니다. 그러면 Xilinx의 전체 프로젝트 디렉토리와 파일을 체크인하지 않아도됩니다.
vermaete

답변:


6

자일링스는이를 처리하기 위해 YouTube 비디오 (한숨)를 제작한다. 여기에 비디오 링크가 있습니다

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

다음은 비디오 요약입니다 (8 분).

시작하기 전에

모든 권한을 정말로 좋아한다면 Xilinx는 GUI를 완전히 포기하고 명령 행에서 모든 것을 수행 할 것을 제안합니다. 그러면 소스가 무엇이고 무엇이 아닌지를 알게됩니다.

그렇지 않으면 Xilinx는 Vivado 프로젝트가 버전 제어용이 아님을 인식합니다. 전체 프로젝트를 점검하지 마십시오. 그러나 힌트를 읽으십시오 ...

베이스 라인

물론 Vivado 도구 외부에 작성한 내용은 체크인해야합니다.

다음 파일을 체크인하십시오

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

IP 차단을 사용하는 경우 고유 폴더에서 IP를 생성하고 모든 것을 체크인하십시오.

체크 포인트

모든 것을 실행하지 않고 플로우의 일부를 재실행하려면 체크 포인트 파일을 체크인하십시오.

*.dcp - Design Checkpoints

내 부록

Xilinx 도구가 효율적이라면 dcp 파일을 체크인하지 않는 것이 좋지만 실행하는 데 많은 시간이 걸리므로 추악한 버전 제어 시스템의 비용이들 수 있습니다.

비디오는 Vivado 프로젝트 파일 (* .xpr)에 대해 쪼그려 말하지 않으므로 여기 내 제안이 있습니다.

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

Xilinx가 권장하는 대안 (버전 제어에는 적합하지 않은 해킹 임)은 File -> Write Project Tcl커밋 할 때마다 명령 을 실행 한 다음 해당 TCL 파일을 버전 제어에 커밋하는 것입니다. 로컬 폴더를 업데이트 할 때 모든 프로젝트 파일을 작성하려면 해당 TCL 파일을 다시 실행해야합니다. 왝.


정말 도움이되었습니다. 더 이상 SVN을 사용하지 않지만 GIT을 사용하지만 올바른 파일을 저장소로 가져올 수 있습니다.
FarhadA

1
나는 tcl 파일을 사용하고 실제로 실제로 잘 작동합니다. tcl 스크립트는 파일이 프로젝트에 추가 될 때만 업데이트하면되며 일반적으로 모든 파일이 들어있을 때 tcl을 생성합니다. 파일을 만들 때와 거의 비슷하지 않습니다.
stanri

TCL 솔루션은 Vivado가 모든 프로젝트 변경 후 TCL 파일을 자동으로 생성하고 xpr 파일 대신 "프로젝트"파일로 TCL 파일을 읽는 경우에 이상적입니다. 즉, Xilinx가 xpr 파일을 제거하고 tcl 파일로 교체 한 경우입니다.
마크 라 카타

xpr 파일을 커밋하는 데 약간의 문제가 있습니다.
Vivado

3

Vivado 2014.1에서는 .tcl 스크립트를 사용하여 프로젝트를 재생성 할 수 있습니다.

이렇게하려면 프로젝트를 연 상태에서 파일-> 프로젝트 쓰기 tcl로 이동하십시오.

기본 프로젝트

일반적으로 소스와 .tcl 스크립트를 프로젝트 디렉토리 외부의 위치에 저장합니다. 프로젝트 내에서 생성 된 xilinx IP 코어는 코어를 마우스 오른쪽 버튼으로 클릭하고 "IP 복사"를 선택하여 다른 곳에 복사 할 수 있습니다. 그리고 원본을 삭제합니다. tcl 스크립트가 생성되면 해당 파일에 대한 상대 링크가 작성됩니다. 일반적으로 내 디렉토리 구조는 다음과 같습니다.

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

IP .xml 및 .xci 파일 만 커밋해야합니다. (그리고 기술적으로도 이것이 필요하지는 않습니다.

이것은 git에 최선을 다하는 것입니다. project.xpr 또는 프로젝트 디렉토리의 부족에 주목하십시오.

내가 실행할 때 genproject.tcl프로젝트의 다른 디렉토리를 만듭니다.

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

이 새 폴더는 완전히 일회용입니다. 이 구조를 만들기 위해 다음과 같은 방법으로 tcl 스크립트를 수정합니다.

처음 3 줄을 다음과 같이 변경합니다.

# 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

그러면 새 프로젝트 디렉토리와 해당 디렉토리에 새 프로젝트가 작성됩니다.

그런 다음 올바른 위치를 가리 키도록 경로를 수정합니다. 스크립트의 다른 위치에서 이러한 경로를 변경해야 할 수도 있습니다.

# 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

이 답변 에서 볼 수 있듯이 IP 코어의 설계 실행을 수정합니다. .

.wcfg 파일은 ip 및 src와 유사한 방식으로 포함될 수 있습니다.

여기서는 더 간단한 프로젝트 (소스 및 IP 만 포함하고 블록 다이어그램은 포함하지 않음)에 대한 처리가 종료됩니다. 블록 다이어그램 데이터를 저장하려면 다음을 수행해야합니다.

블록 다이어그램 프로젝트

블록 다이어그램을 연 상태에서 블록 다이어그램을 저장하려면 File-> Export-> Block Diagram을 Tcl로 이동하여 다른 tcl 파일과 동일한 디렉토리에 저장하십시오.

그런 다음 Generate_Wrapper.tcl블록 다이어그램 래퍼 파일을 만드는 스크립트를 만들었 으므로 수동으로 할 필요가 없습니다. project / project.srcs 폴더는 bd 데이터를 저장하는 데 사용되지만 bd는 tcl 스크립트에 저장되므로 여전히 완전히 사용할 수 있습니다. 다른 두 개와 함께 저장하십시오.

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

마지막에 genproject.tcl다음 줄을 추가하여 블록 다이어그램과 래퍼를 생성합니다.

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

소스가없는 프로젝트 (단지 블록 다이어그램)의 경우 git commit은 다음과 같습니다.

base_project/
 Generate_Wrapper.tcl
 Create_Bd.tcl
 genproject.tcl

모든 것을 생성하려면 다음을 실행하십시오. genproject.tcl .

특히 효율적이라면이 모든 것을 하나로 결합 할 수도 있습니다.

사용자 컴포넌트 : 컴포넌트 프로젝트

사용자 컴포넌트 생성에 대한 또 다른 빠른 참고 사항. component.xml이있는 경우이를 tcl 소스 목록에 추가하십시오.

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

그리고 다음 섹션을 추가하십시오.

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

여기에는 쉽게 커스터마이즈 할 수 있도록 컴포넌트 디자인이 프로젝트에 포함됩니다.

사용자 컴포넌트 : 컴포넌트 참조

다음과 같이 사용자 지정 구성 요소 리포지토리 경로를 지정할 수 있습니다.

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

내 repo 폴더에는 .xml 파일이 포함 된 개별 폴더가 있습니다. 따라서 .xml을 포함하는 폴더를 참조하는 것이 아니라 그 폴더의 부모를 참조합니다. 예 :

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

이 tcl 스크립트를 어떻게 실행합니까?

Vivado를 열고 프로젝트를 열지 않고 도구-> TCL 스크립트 실행을 선택하고 스크립트를 탐색하십시오.

추가 TCL 노트

Vivado에서 실행하는 모든 명령은 tcl 콘솔에 tcl 명령으로 표시됩니다. 예를 들어, GUI를 사용하여 새로운 Xilinx IP를 생성하면 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]

이것은 몇 가지를 의미합니다.

  • xilinx ip 코어를 실제로 저장할 필요조차 없습니다. 일단 원하는 방식이되면 명령을 tcl 스크립트에 복사하면 더 이상 ip /를 커밋 할 필요가 없습니다.

  • -module_name 뒤에 -dir 인수를 사용하여 IP 디렉토리를 지정하여 원하는 위치에 놓으십시오 (기본적으로 project.srcs에 있음).

  • GUI에서 수행하는 모든 작업은 tcl에서 수행 할 수 있습니다. xilinx의 기능을 확인하는 가장 쉬운 방법은 GUI에서 수행 한 다음 TCL 콘솔의 내용을 확인하는 것입니다.

  • 이 pdf는 모든 vivado tcl 명령을 자세히 설명합니다.


2

있다 자일링스 교육 비디오 Vivado와 버전 제어 시스템을 사용하는 방법에 대해 설명합니다. 기본적으로 파일 목록은 사용중인 기능에 따라 다릅니다.

vermaete처럼 스크립트 방식을 사용하는 경우 Vivado가 모든 중간 / 임시 파일을 별도의 디렉토리 에 작성하도록 할 수 있으므로 ( 여기 참조 ) 쉽게 분리 할 수 ​​있습니다.

그렇지 않으면 Vivado로 빌드 폴더를 정리할 수 있으며 남은 항목은 버전 관리 대상이 될 수 있습니다.


1
감사합니다. Xilinx가 너무 비싼 도구를 만들 수는 있지만 개정 관리에 대한 적절한 지원을 제공하지도 않습니다.
FarhadA

1
Xilinx 포럼 (2009 IIRC부터)에 흥미로운 의견이있었습니다.이 도구는 하드웨어 엔지니어를위한 것입니다. 하드웨어 엔지니어는 개정 제어에 대해 알지 못하고 신경 쓰지 않습니다. 그러나 나는 태도가 바뀌 었다고 생각하며,이 도구를 사용하는 SW 엔지니어가 점점 더 많아지고 있습니다. 이제 개정 관리가 과거보다 더 중요합니다.
hli

2
글쎄요, 그것은 그런 말을 한 순수한 모욕입니다. HW 엔지니어는 다양한 유형의 수정 제어를 사용하고, 많은 도구를 지원하며, 많은 엔지니어가 표준 RC를 사용하고, 다른 엔지니어는 RC가 내장 된 Mentor HDL 디자이너와 같은 도구를 사용합니다. 슬프게도 Xilinx 및 Altera와 같은 FPGA 공급 업체는 이러한 문제에 관심이없는 것 같습니다. 이것이 주요 문제입니다.
FarhadA

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.