使用 -vivado 和 -advanced 选项 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

您可通过使用 --vivado 选项(如 --vivado 选项 中所述)和 --advanced 选项(如 --advanced 选项 中所述)来对标准 Vivado 综合与实现执行多种干预措施。

  1. 您可指定相应策略,供 Vivado 工具在综合或实现期间使用,或者在构建进程中生成报告时使用。您可指定任一标准工具策略,或者也可以指定先前在 Vivado 工具中创建的定制定义的策略。--vivado.prop 命令用法如下所示。

    用于在运行对象上设置属性的原始 Tcl 命令如下所示:
    set_property strategy Flow_AreaOptimized_medium [get_runs synth_1]
    

    v++ 命令按如下方式重写:

    • 综合策略:
      --vivado.prop run.synth_1.strategy=Flow_AreaOptimized_medium
    • 实现策略:
      --vivado.prop run.impl_1.strategy=Performance_ExtraTimingOpt 
    • 报告策略:可指定该策略用于综合运行或实现运行。
      --vivado.prop run.synth_1.report_strategy=MyCustom_Reports
      --vivado.prop run.impl_1.report_strategy={Timing Closure Reports}
    命令行的细分方式如下:
    • --vivado.propv++ 命令行选项,用于为对象分配属性,如 --vivado 选项 中所述。
    • run.<run_name>.strategy=<strategy_name> 则用于为指定的综合运行或实现运行分配 strategy 属性(或 report_strategy)。默认运行名称分别为 synth_1(对应综合)或 impl_1(对应实现)。
    • 如果策略名称中含空格(如 {Timing Closure Reports}),则需使用括号或双引号将名称括起,以便按如上所示方式对名称用词加以组合。
      提示: 您也可以指定运行多项实现策略,如 运行多项实现策略来实现时序收敛 中所述。
  2. 传递含定制设计约束或脚本化操作的 Tcl 脚本。

    您可使用综合与实现步骤的 PRE 和 POST Tcl 脚本属性来创建 Tcl 脚本以将 XDC 设计约束分配给设计中的对象,并将这些 Tcl 脚本传递到 Vivado 工具。如需了解有关 Tcl 脚本编制的更多信息,请参阅 Vivado Design Suite 用户指南:使用 Tcl 脚本(UG894)。虽然只有 1 个综合步骤,但有多个实现步骤,如 Vivado Design Suite 用户指南:实现(UG904) 中所述。您可将 Vivado 工具的 Tcl 脚本指定为在 (PRE) 步骤之前运行或者在 (POST) 步骤之后运行。Tcl 脚本可分配到的具体步骤包括:SYNTH_DESIGNINIT_DESIGNOPT_DESIGNPLACE_DESIGNROUTE_DESIGNWRITE_BITSTREAM

    提示: 您还可使用 --vivado.prop run.impl_1.steps.phys_opt_design.is_enabled=1 选项启用多个可选步骤。启用后,这些步骤同样可包含 Tcl PRE 脚本和 POST 脚本。

    Tcl PRE 和 POST 脚本分配示例如下:

    --vivado.prop run.impl_1.STEPS.PLACE_DESIGN.TCL.PRE=/…/xxx.tcl

    在前述示例中,脚本已分配为先于 PLACE_DESIGN 步骤运行。命令行的细分方式如下:

    • --vivado 是用于为 Vivado 工具指定指令的 v++ 命令行选项。
    • prop 关键字用于表示您正在传递属性设置。
    • run. 关键字用于表示您正在传递运行 (run) 属性。
    • impl_1. 表示运行轮次名称。
    • STEPS.PLACE_DESIGN.TCL.PRE 表示当前指定的运行属性。
    • /.../xx.tcl 表示属性值。
    提示: --advanced--vivado 选项均可在 v++ 命令行上指定,或者在由 --config 选项所指定的配置文件中指定。以上示例显示了命令行的使用方式,以下示例显示的则是配置文件的使用方式。如需了解更多信息,请参阅 Vitis 编译器配置文件
  3. 在运行 (run)、文件 (file) 和文件集 (fileset) 设计对象上设置属性。
    这与上述 Tcl 脚本传递方式非常类似,但此处则是将值传递给多个设计对象上的不同属性。例如,要在布局期间使用特定实现策略(如 Performance_Explore)和禁用全局缓冲器插入,可按如下所示方式定义属性:
    [vivado]
    prop=run.impl_1.STEPS.OPT_DESIGN.ARGS.DIRECTIVE=Explore
    prop=run.impl_1.STEPS.PLACE_DESIGN.ARGS.DIRECTIVE=Explore
    prop=run.impl_1.{STEPS.PLACE_DESIGN.ARGS.MORE OPTIONS}={-no_bufg_opt}
    prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.IS_ENABLED=true
    prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE=Explore
    prop=run.impl_1.STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE=Explore

    在以上示例中,对实现运行过程中的各步骤的 STEPS.XXX.DIRECTIVE 属性赋值 Explore。请注意,这些属性的定义语法为:

    <object>.<instance>.property=<value>

    其中:

    • <object> 可以是设计运行、文件或文件集对象。
    • <instance> 表示对象的特定实例。
    • <property> 指定要分配的属性。
    • <value> 定义属性值。

    在此示例中,对象为运行,实例为默认实现运行 impl_1,而属性则是不同步骤名称的实参(在此处为 DIRECTIVE、IS_ENABLED 和 {MORE OPTIONS})。如需了解有关命令语法的更多信息,请参阅 --vivado 选项

  4. Vivado 实现进程中启用可选步骤。

    构建进程会运行 Vivado 综合与实现来生成器件二进制文件。在默认构建进程中会启用并运行部分实现步骤,您也可以自行决定是否启用部分可选实现步骤。

    可选步骤可使用 --list_steps 命令列出,包括:vpl.impl.power_opt_designvpl.impl.post_place_power_opt_designvpl.impl.phys_opt_designvpl.impl.post_route_phys_opt_design

    可选步骤可使用 --vivado.prop 选项来启用。例如,要启用 PHYS_OPT_DESIGN 步骤,请使用以下配置文件内容:

    [vivado]
    prop=run.impl_1.steps.phys_opt_design.is_enabled=1
    

    如上所示,启用可选步骤后,该步骤可指定为 -from_step/-to_step 命令的一部分(如下文运行 --to_step 或 --from_step中所述),或者也可以启用 Tcl 脚本以在此步骤之前或之后运行(如 --linkhook 选项 中所述)。

  5. 向工具传递参数用于控制处理。
    --vivado 选项还允许您向 Vivado 工具传递参数。这些参数用于配置该工具启动前的功能或行为。指定参数的语法采用如下形式:
    --vivado.param <object><parameter>=<value>

    关键字 param 表示您正在为 Vivado 工具传递参数而不是为设计对象传递属性。您还必须定义参数所适用的 <object>、您正在指定的 <parameter> 以及要为该参数赋予的 <value>

    以下工程示例表示参数正在传递到当前 Vivado 工程 writeIntermedateCheckpoints,并且参数值为 1,即表示启用此布尔值参数。

    --vivado.param project.writeIntermediateCheckpoints=1
  6. 管理综合与实现期间生成的报告。
    重要: 在自定义由 Vivado 工具生成的报告时,您还必须在 v++ 命令行上指定 --save-temps,以保留综合与实现期间所创建的临时文件(包括所有生成的报告)。

    Vitis 工具构建进程中运行 Vivado 工具时,您可能想要生成或保存由该工具所提供的标准报告。您可使用 --advanced.misc 选项来自定义所生成的报告,如下所示:

    [advanced]
    misc=report=type report_utilization name synth_report_utilization_summary steps {synth_design} runs {__KERNEL__} options {}
    misc=report=type report_timing_summary name impl_report_timing_summary_init_design_summary steps {init_design} runs {impl_1} options {-max_paths 10} 
    misc=report=type report_utilization name impl_report_utilization_init_design_summary steps {init_design} runs {impl_1} options {} 
    misc=report=type report_control_sets name impl_report_control_sets_place_design_summary steps {place_design} runs {impl_1} options {-verbose} 
    misc=report=type report_utilization name impl_report_utilization_place_design_summary steps {place_design} runs {impl_1} options {} 
    misc=report=type report_io name impl_report_io_place_design_summary steps {place_design} runs {impl_1} options {} 
    misc=report=type report_bus_skew name impl_report_bus_skew_route_design_summary steps {route_design} runs {impl_1} options {-warn_on_violation} 
    misc=report=type report_clock_utilization name impl_report_clock_utilization_route_design_summary steps {route_design} runs {impl_1} options {} 
    

    如下示例对命令行的语法进行了解释:

    misc=report=type report_bus_skew name impl_report_bus_skew_route_design_summary steps {route_design} runs {impl_1} options {-warn_on_violation} 
    
    misc=report=
    指定 --advanced.misc 选项(如 --advanced 选项 中所述)并定义 Vivado 工具的报告配置。命令行其余部分是以名称/值对的形式来指定的,以反映 create_report_config Tcl 命令的选项,如 Vivado Design Suite Tcl 命令参考指南(UG835) 中所述。
    type report_bus_skew
    -report_type 实参有关,指定报告类型为 report_bus_skew。大部分 report_* Tcl 命令均可指定为报告类型。
    name impl_report_bus_skew_route_design_summary
    -report_name 实参有关,指定报告名称。请注意,这并非报告的文件名,通常可跳过该选项,因为该工具将自动生成报告名称。
    steps {route_design}
    -steps 选项有关,指定报告适用于的综合与实现步骤。报告可指定为搭配多个步骤一起使用,以便在每个步骤中都生成此报告,在此情况下将自动定义报告名称。
    runs {impl_1}
    -runs 选项有关,指定报告要应用到的设计运行的名称。
    options {-warn_on_violation}
    指定生成报告时要使用的 report_* Tcl 命令的各选项。在此示例中,-warn_on_violation 选项是 report_bus_skew 命令的一项功能。
    重要: 没有任何错误检查功能可用于确保指定选项正确且适用于指定的报告类型。如果您指示选项错误,那么报告运行时将返回错误。