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 명령을 자세히 설명합니다.