在 AMD Vitis™ 环境中,您可将硬件内核指定为 C/C++ 内核或 RTL 内核:
- 使用 C/C++ 内核时,必须使用 Vitis HLS 为综合或实现指定附加的用户约束。随后,必须在 IP 封装器内封装 Vitis HLS 输出,此封装 IP 包含用户约束和工具生成的约束。如需了解更多信息,请参阅Vitis HLS 用户指南 (UG1399)。
- 使用 RTL 内核时,必须在 IP 封装期间指定附加的综合与实现约束。如需了解更多信息,请参阅 Vivado Design Suite 用户指南:创建和封装定制 IP(UG1118)。
在 Vitis 环境内,综合与实现的所有设计约束都必须随 IP 一并封装。如果封装 IP 还需其他约束,则必须重新封装 IP 以包含缺失的约束。
但封装 IP 后,可指定其他仅在实现期间使用的 XDC 约束。虽然 Vitis 环境会将底层 Vivado 工具流程抽象化用于实现可编程逻辑区域,但 Vitis 环境还会提供高级选项用于控制 Vivado 工具流程。
借助这些高级控制选项,您即可指定要在每个实现阶段之前或之后执行的特定 Tcl 脚本,包括:init_design
、opt_design
、place_design
、phys_opt_design
、 route_design
或 write_device_image
。如需了解有关 Tcl 脚本编制的更多信息,请参阅
Vivado Design Suite 用户指南:使用 Tcl 脚本(UG894)。您可使用这些实现前 (Pre) 和实现后 (Post) Tcl 脚本来执行某些 Vivado 工具命令,例如,通过 read_xdc
或 source
Tcl 命令来应用附加的 XDC 约束。
您可通过 Vitis 环境配置文件或者可直接在 v++ 编译器命令行上指定实现前和实现后 Tcl 脚本。
要在 Vitis 环境配置文件内指定实现前和实现后 Tcl 脚本,请在 [vivado]
节内使用 prop=run.impl_1.STEP.<PHASE>.TCL.<PRE|POST>
参数。
其中:
-
<PHASE>
用于指定下列实现阶段:INIT_DESIGN
、OPT_DESIGN
、PLACE_DESIGN
、PHYS_OPT_DESIGN
、ROUTE_DESIGN
或WRITE_DEVICE_IMAGE
。 -
PRE
用于在指定的实现阶段之前执行脚本。 -
POST
用于在指定的实现阶段之后执行脚本。
例如:
[vivado]
prop=run.impl_1.STEPS.OPT_DESIGN.TCL.PRE=<pathToTclScript>
prop=run.impl_1.STEPS.OPT_DESIGN.TCL.POST=<pathToTclScript>
prop=run.impl_1.STEPS.PLACE_DESIGN.TCL.PRE=<pathToTclScript>
prop=run.impl_1.STEPS.PLACE_DESIGN.TCL.POST=<pathToTclScript>
prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.TCL.PRE=<pathToTclScript>
prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.TCL.POST=<pathToTclScript>
prop=run.impl_1.STEPS.ROUTE_DESIGN.TCL.PRE=<pathToTclScript>
prop=run.impl_1.STEPS.ROUTE_DESIGN.TCL.POST=<pathToTclScript>
要将 Pre 和 Post Tcl 脚本指定为 v++ 参数,请使用 --vivado.prop
run.impl_1.STEP.<PHASE>.TCL.<PRE|POST>=<pathToTclScript>
命令行选项。例如,要指定在 opt_design
之前执行的 Tcl 脚本,请使用如下命令:
--vivado.prop run.impl_1.STEP.OPT_DESIGN.TCL.PRE=<pathToTclScript>
其中:
-
--vivado
是 v++ 命令行选项,用于为 Vivado 工具指定指令。 -
prop
表示属性设置。 -
run.
表示运行属性。 -
impl_1.
表示运行轮次名称。 -
STEP.OPT_DESIGN.TCL.PRE
表示当前指定的运行属性。 -
<pathToTclScript>
表示属性值。