介紹
Vivado可以導出腳本,保存創建工程的相關命令和配置,并可以在需要的時候使用腳本重建Vivado工程。腳本通常只有KB級別大小,遠遠小于工程打包文件的大小,因此便于備份和版本管理。
腳本里指定了Vivado的版本、器件的型號,IP的版本。如果導出腳本時的相關版本,和恢復工程時的相關版本不一樣,會導致創建工程失敗??梢酝ㄟ^手工檢查和修改相關版本信息,升級Vivado工程腳本,使新的Vivado也能恢復出對應的工程。
目前我電腦中只有Vivado 2020.2。但是得到了一份Vivado 2020.1為開發板vck190 es的創建的工程腳本。下面以把前述腳本升級到Vivado 2020.2為例,討論如何升級Vivado工程腳本。
升級Vivado工程腳本 準備Vivado
首先啟動Vivado 2020.2,在TCL console窗口進入工程腳本所在的目錄,使用命令“source”執行對應的腳本。
注意,Vivado遵循Unix/Linux習慣,使用“/”作為目錄分隔符。對于目錄“C:\Users\hankf\Downloads\3-VitisEmbdPfm-Versal-lab.tar\ref_files_v202\step1_vivado”,要改成“C:/Users/hankf/Downloads/3-VitisEmbdPfm-Versal-lab.tar/ref_files_v202/step1_vivado”。否則,Vivado會報告錯誤“couldn't change working directory”。
修改版本
Vivado工程腳本里含有版本信息,對應的TCL代碼是“set scripts_vivado_version 2020.1”。如果使用Vivado 2020.2,需要將其中的2020.1改為2020.2。
set scripts_vivado_version 2020.2
修改器件和單板
Vivado工程腳本里也指定了器件和單板信息。vck190 es使用的是ES器件,Vivado 2020.2沒有使能ES器件和包含vck190 es單板的信息。如果執行上述,會報告錯誤“ERROR: [Coretcl 2-106] Specified part could not be found.”。
原始的器件和單板信息:
create_project project_1 myproj -part xcvc1902-vsva2197-2MP-e-S-es1 set_property BOARD_PART xilinx.com:vck190_es:part0:1.0 [current_project]
Vivado 2020.2默認支持器件vc1902、包含量產單板vck190的單板信息。因此需要把Vivado工程腳本里的器件和單板改為支持的型號。
修改后的器件和單板信息:
create_project project_1 myproj -part xcvc1902-vsva2197-2MP-e-S set_property BOARD_PART xilinx.com:vck190:part0:2.0 [current_project]
如果不知道對應的器件和單板,可以使用get_parts命令和get_boards命令,查找Vivado支持的器件和單板。
查找器件
使用get_parts命令,列出Vivado支持的器件。Vivado支持的器件型號太多,導致它只顯示一部分。最好使用通配符,只顯示我們感興趣的器件型號。使用命令“get_parts vc1902”,只會顯示出vc1902的相關型號,包括所有封裝。如果指定更多的信息,會得到更少也更準確的器件。
get_parts *vc1902* xcvc1902-viva1596-1LHP-i-L xcvc1902-viva1596-1LHP-i-S xcvc1902-viva1596-1LP-e-S xcvc1902-viva1596-1LP-i-L xcvc1902-viva1596-1LP-i-S xcvc1902-viva1596-1MP-e-S xcvc1902-viva1596-1MP-i-L xcvc1902-viva1596-1MP-i-S xcvc1902-viva1596-2HP-i-S xcvc1902-viva1596-2LP-e-L xcvc1902-viva1596-2LP-e-S xcvc1902-viva1596-2MP-e-L xcvc1902-viva1596-2MP-e-S xcvc1902-viva1596-2MP-i-L xcvc1902-viva1596-2MP-i-S xcvc1902-viva1596-3HP-e-S xcvc1902-vsva2197-1LHP-i-L xcvc1902-vsva2197-1LHP-i-S xcvc1902-vsva2197-1LP-e-S xcvc1902-vsva2197-1LP-i-L xcvc1902-vsva2197-1LP-i-S xcvc1902-vsva2197-1MP-e-S xcvc1902-vsva2197-1MP-i-L xcvc1902-vsva2197-1MP-i-S xcvc1902-vsva2197-2HP-i-S xcvc1902-vsva2197-2LP-e-L xcvc1902-vsva2197-2LP-e-S xcvc1902-vsva2197-2MP-e-L xcvc1902-vsva2197-2MP-e-S xcvc1902-vsva2197-2MP-i-L xcvc1902-vsva2197-2MP-i-S xcvc1902-vsva2197-3HP-e-S xcvc1902-vsvd1760-1LHP-i-L xcvc1902-vsvd1760-1LHP-i-S xcvc1902-vsvd1760-1LP-e-S xcvc1902-vsvd1760-1LP-i-L xcvc1902-vsvd1760-1LP-i-S xcvc1902-vsvd1760-1MP-e-S xcvc1902-vsvd1760-1MP-i-L xcvc1902-vsvd1760-1MP-i-S xcvc1902-vsvd1760-2HP-i-S xcvc1902-vsvd1760-2LP-e-L xcvc1902-vsvd1760-2LP-e-S xcvc1902-vsvd1760-2MP-e-L xcvc1902-vsvd1760-2MP-e-S xcvc1902-vsvd1760-2MP-i-L xcvc1902-vsvd1760-2MP-i-S xcvc1902-vsvd1760-3HP-e-S get_parts *xcvc1902-vsva2197-2MP* xcvc1902-vsva2197-2MP-e-L xcvc1902-vsva2197-2MP-e-S xcvc1902-vsva2197-2MP-i-L xcvc1902-vsva2197-2MP-i-S
查找單板
使用get_boards命令,列出Vivado支持的單板。Vivado支持的單板型號也很多。最好使用通配符,只顯示我們感興趣的單板型號。使用命令“get_boards vck”,只會顯示出vck190。
get_boards *vck* get_boards: Time (s): cpu = 00:00:04 ; elapsed = 00:00:06 . Memory (MB): peak = 1118.992 ; gain = 0.000 xilinx.com:vck190:2.0
升級IP
Vivado版本變化時,IP也可能變化。執行前述腳本創建工程,會得到下列錯誤。
WARNING: [IP_Flow 19-2162] IP 'design_1_ai_engine_0_0' is locked: * IP definition 'AI Engine (1.0)' for IP 'design_1_ai_engine_0_0' (customized with software release 2020.2) has a newer major version in the IP Catalog. ERROR: [BD 41-542] Parameter cannot be set on a locked block. The block 'ai_engine_0' is locked, because: * IP definition 'AI Engine (1.0)' for IP 'design_1_ai_engine_0_0' (customized with software release 2020.2) has a newer major version in the IP Catalog.
可以使用get_ipdefs命令,得到詳細的IP信息。執行命令“get_ipdefs engine”,檢查Vivado 2020.2里的ai_engine信息,發現新的版本是2.0。
get_ipdefs *engine* xilinx.com:ip:ai_engine:2.0
在Vivado 2020.1的工程腳本里,還是使用的ai_engine 1.0。
set bCheckIPs 1 if { $bCheckIPs == 1 } { set list_check_ips "\ xilinx.com:ip:ai_engine:1.0\ xilinx.com:ip:axi_intc:4.1\ xilinx.com:ip:smartconnect:1.0\ xilinx.com:ip:clk_wizard:1.0\ xilinx.com:ip:axi_noc:1.0\ xilinx.com:ip:proc_sys_reset:5.0\ xilinx.com:ip:versal_cips:2.1\ " set ai_engine_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:ai_engine:1.0 ai_engine_0 ]
把使用的ai_engine的版本,從1.0改為2.0。
set bCheckIPs 1 if { $bCheckIPs == 1 } { set list_check_ips "\ xilinx.com:ip:ai_engine:2.0\ xilinx.com:ip:axi_intc:4.1\ xilinx.com:ip:smartconnect:1.0\ xilinx.com:ip:clk_wizard:1.0\ xilinx.com:ip:axi_noc:1.0\ xilinx.com:ip:proc_sys_reset:5.0\ xilinx.com:ip:versal_cips:2.1\ " set ai_engine_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:ai_engine:2.0 ai_engine_0 ]
關閉Vivado工程,再刪除對應目錄,重新執行“source system_step1.tcl”,可以成功創建工程。
注意事項
如果IP變化比較大,比如接口有變化,僅僅升級IP版本,也不能創建出正確的工程。這時請根據IP的文檔,重新定制IP,和連接IP相關的接口。
定制工程名稱
Vivado腳本里的命令create_project也指定了工程名稱,默認是“project_1”。如果想使用其它工程名,把“project_1”改為你需要的工程名。
Vivado腳本會在當前目錄下,創建一個子目錄。Vivado腳本里的命令create_project也指定了子目錄名,默認是“myproj”。如果想使用其它目錄名,把“myproj”改為你需要的目錄名。
if { $list_projs eq "" } { create_project project_1 myproj -part xcvc1902-vsva2197-2MP-e-S set_property BOARD_PART xilinx.com:vck190:part0:2.0 [current_project] } 審核編輯:湯梓紅
評論
查看更多