W02-vivado_tcl_generation.md

W02-vivado_tcl_generation.md

社蕙 784 2022-08-28

如何用Vivado生成工程脚本(.tcl)文件

1. 使用.tcl文件

下面以系统工程为例,介绍如何使用.tcl文件,注意,请将所有的[E:/Code/]改为你到库的[本地路径]。

  1. 打开vivado,打开下方的Tcl console
  2. 输入cd {E:/Code/4K_SuperRes_on_MPSoC/work},移动到work目录(可以输入pwd以确认路径正确)
  3. 输入source system.tcl,建立工程
  4. 由于本工程完全由block design,vivado会提示指定顶层文件,此处随意
  5. 输入source design_1.tcl,导入block design。
  6. Sources界面右击design_1Create HDL Wrapper -> Let Vivado manage... -> OK,之后就可以开始正常的工作流了。

2. 创建.tcl文件

下面仍以系统工程为例,注意,请将所有的[E:/Code/]改为你到库的[本地路径],同时注意,不应当把工程移出work目录再进行创建,以免产生不必要的麻烦。

2.1. 创建block design脚本

  1. 打开下方的Tcl console
  2. 输入write_bd_tcl -force {E:/Code/4K_SuperRes_on_MPSoC/work/design_1.tcl}

该脚本不需要做任何的修改。

2.2. 创建project脚本

  1. 继续上一步,输入write_project_tcl -use_bd_files -force {E:/Code/4K_SuperRes_on_MPSoC/work/system.tcl}
  2. 打开system.tcl,将所有与'sources_1'相关的脚本全部删除,例如下述部分(因为事实上根本不需要预导入files中列出的文件,如果不删掉,脚本会因为error而停下):
# Set 'sources_1' fileset object
set obj [get_filesets sources_1]
# Import local files from the original project
set files [list \
 [file normalize "${origin_dir}/system/system.srcs/sources_1/bd/design_1/design_1.bd" ]\
 [file normalize "${origin_dir}/system/system.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v" ]\
]
set imported_files [import_files -fileset sources_1 $files]

# Set 'sources_1' fileset file properties for remote files
# None

# Set 'sources_1' fileset file properties for local files
set file "design_1/design_1.bd"
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property -name "registered_with_manager" -value "1" -objects $file_obj


# Set 'sources_1' fileset properties
set obj [get_filesets sources_1]
set_property -name "top" -value "design_1_wrapper" -objects $obj

对于IP工程,没有引入block design暂不需要修改

实际上如果有必要,constr_1也得删,手动导一下。