为 Vitis 环境指定约束 - 2023.2 简体中文

Versal 自适应 SoC 硬件、IP 和平台开发方法指南 (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 简体中文

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_designopt_designplace_designphys_opt_design route_designwrite_device_image如需了解有关 Tcl 脚本编制的更多信息,请参阅 Vivado Design Suite 用户指南:使用 Tcl 脚本(UG894)。您可使用这些实现前 (Pre) 和实现后 (Post) Tcl 脚本来执行某些 Vivado 工具命令,例如,通过 read_xdcsource Tcl 命令来应用附加的 XDC 约束。

您可通过 Vitis 环境配置文件或者可直接在 v++ 编译器命令行上指定实现前和实现后 Tcl 脚本。

要在 Vitis 环境配置文件内指定实现前和实现后 Tcl 脚本,请在 [vivado] 节内使用 prop=run.impl_1.STEP.<PHASE>.TCL.<PRE|POST> 参数。

其中:

  • <PHASE> 用于指定下列实现阶段:INIT_DESIGNOPT_DESIGNPLACE_DESIGNPHYS_OPT_DESIGNROUTE_DESIGNWRITE_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> 表示属性值。