从TCL文件重新创建Vivado项目,而不通过复制源

从TCL文件重新创建Vivado项目,而不通过复制源,tcl,vivado,Tcl,Vivado,我已经使用write_project_tcl从Vivado项目创建了一个tcl脚本,然后可以使用该脚本重新创建项目的结构。如果我通过vivado-modebatch运行脚本,它将创建一个目录结构,并将源HDL文件复制到这些新创建的目录中。以下是目录树的相关部分: $ tree SpaceInvaders.srcs/sources_1/imports/ SpaceInvaders.srcs/sources_1/imports/ └── _build-vivado ├── clash-syn

我已经使用
write_project_tcl
从Vivado项目创建了一个tcl脚本,然后可以使用该脚本重新创建项目的结构。如果我通过
vivado-modebatch
运行脚本,它将创建一个目录结构,并将源HDL文件复制到这些新创建的目录中。以下是目录树的相关部分:

$ tree SpaceInvaders.srcs/sources_1/imports/
SpaceInvaders.srcs/sources_1/imports/
└── _build-vivado
    ├── clash-syn
    │   └── verilog
    │       └── SpaceInvaders
    │           └── SpaceInvaders
    │               ├── SpaceInvaders.v
    │               ├── image.hex
    │               ├── null-SpaceInvaders-0-1024x8.hex
    │               └── null-SpaceInvaders-1-7168x8.hex
    └── xilinx-vivado
        └── src-hdl
            └── Top.v

现在我想更改脚本,以便不复制源文件;相反,我希望生成的
.xpr
项目文件在其原始位置引用它们

当前复制源代码的TCL脚本部分如下:

# 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}/src-hdl/Top.v" ]\
 [file normalize "${origin_dir}/../clash-syn/verilog/SpaceInvaders/SpaceInvaders/SpaceInvaders.v" ]\
 [file normalize "${origin_dir}/../clash-syn/verilog/SpaceInvaders/SpaceInvaders/image.hex" ]\
 [file normalize "${origin_dir}/../clash-syn/verilog/SpaceInvaders/SpaceInvaders/null-SpaceInvaders-0-1024x8.hex" ]\
 [file normalize "${origin_dir}/../clash-syn/verilog/SpaceInvaders/SpaceInvaders/null-SpaceInvaders-1-7168x8.hex" ]\
]
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
# None

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

# 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}/ip/ClockWiz25.xci" ]\
]
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 "ClockWiz25/ClockWiz25.xci"
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property -name "generate_files_for_reference" -value "0" -objects $file_obj
set_property -name "registered_with_manager" -value "1" -objects $file_obj
if { ![get_property "is_locked" $file_obj] } {
  set_property -name "synth_checkpoint_mode" -value "Singular" -objects $file_obj
}

仅根据文件中的注释,我猜这将是我想要使用的“远程源”?

我可以通过替换以下行来实现这一点:

set imported_files [import_files -fileset sources_1 $files]


这样,在生成的项目文件中,文件将按其原始路径引用

set imported_files [import_files -fileset sources_1 $files]

这样,文件将在生成的项目文件中按其原始路径引用