对于较为困难的设计,需要使用多种不同策略来多次迭代 Vivado 实现才能达成时序收敛。本主题为您演示了如何在硬件构建 (-t
hw
) 中同时启动多项实现策略,以及如何识别并使用成功的运行来生成器件二进制文件并完成构建。
正如 --vivado 选项 中所述,--vivado.impl.strategies
命令支持您指定在单次构建进程中指定运行多项策略。命令行如下所示:
v++ --link -s -g -t hw --platform xilinx_zcu102_base_202010_1 -I . \
--vivado.impl.strategies "Performance_Explore,Area_Explore" -o kernel.xclbin hello.xo
在以上示例中,在 Vivado 构建中同时运行 Performance_Explore
和 Area_Explore
策略,以查看哪项策略可返回最佳结果。您可以指定 ALL
以在工具中运行所有可用策略。
重要: 运行 ALL 实现策略可在 Vivado 工具中启动不少于 30 次运行,包括您的主目录 (~/.Xilinx/Vivado/2021.1/strategies) 中存储的所有用户定义的策略。这可能消耗大量资源,因此不建议使用。为避免发生此情况,可以定义要运行的特定策略,并使用命令队列以某种受管方式(例如,通过
--vivado.impl.jobs
或 --vivado.impl.lsf
命令)分发进程负载。您也可以在配置文件中采用如下形式来决定该选项:
#Vivado Implementation Strategies
[vivado]
impl.strategies=Performance_Explore,Area_Explore
Vitis 编译器会自动提取首个成功满足时序的运行结果来继续执行构建进程并生成器件二进制文件。但您也可以指令该工具等待运行全部完成后,再从完成的运行中提取最佳结果以继续执行。这将需要使用 --advanced.compiler
指令,如下所示:
[advanced]
param=compiler.multiStrategiesWaitOnAllRuns=1
compiler.multiStrategiesWaitOnAllRuns=0
表示默认行为。如果您希望 v++
等待运行全部完成,从而获取其报告文件,请将该参数值改为 1。
如 链接汇总:多种策略和时序报告 中所述,Vitis 分析器会显示允许运行完成的所有策略的实现结果。这包括实现结果的综述以及“Timing Summary”(时序汇总)报告。您可以使用该功能来复查不同策略和结果。
您也可以在所有实现策略全部完成后,手动复查其结果。然后,通过使用 --reuse_impl
选项来使用任意实现运行的结果,如 使用 -to_step 并以交互方式启动 Vivado 中所述。