当设计非常接近时序收敛
(
通常
WNS
小于
-250 ps
)
时
,
可启用增量流程并包含
RQS
建议。这样即可利用增量流程和RQS 建议来实现时序收敛并节省迭代时间。
report_qor_assessment
用于在“
Flow Guidance
”
(
流程指南
)
部分中指示何时使用此流程。
在运行中
,
运行增量流程命令前
,
将读入从参考布线
DCP
生成的建议。流程其余部分将为您自动应用。
Vivado
会通过区分新生成 (GENERATED)
的建议以及参考运行中已应用
(APPLIED)
的建议
,
来明确应用于流程中各阶段的具体建议。如下图所示:
如果运行增量流程
,
那么对于参考中已应用的建议
,
无论是否已启用
,
都会从参考
DCP
中读取并应用这些建议。之所以忽略 ENABLED
属性
,
因为至关重要的是应尽可能复制参考检查点。
下一步会应用来自
RQS
文件的适合增量流程的建议。在
read_qor_suggestions
期间会自动启用这些建议
,
并且必须启用后才有效。在 read_checkpoint -incremental
期间
(
而不是在
APPLICABLE_FOR
阶段中
)
会应用这些建议。因此,
在此阶段后不应读取或启用建议
,
否则会被忽略。
RQS
文件中的任何不适合增量流程的新建议都将被忽略(
将要应用的是在参考中已应用的现有不适合增量流程的建议
)
。
应用适用于
opt_design
的建议时
,
请谨慎处理。因为在执行此操作时
,
流程尚未意识到自身处于增量模式下
,
故而无法自动管理这些建议。对于参考中已应用的现有建议,
您必须确保在增量运行中也同样应用这些建议
,
并且不应用任何新建议。如果倾向于应用这些建议,
那么应更新参考。
如果增量流程还原为默认流程
(
通常源于更改产生的负面影响
),
则将从
RQS
文件执行所有建议。因此
,
在启动下一轮增量运行前,
必须将所有建议
(
而不只是适合增量流程的建议
)
都导出至
RQS
文件。采用此流程前,
请注意满足如下前提条件
:
• 参考运行与增量运行的器件部分应相匹配。
• 参考检查点应为布线后检查点。
• 针对参考运行和增量运行中的
opt_design
应使用相同的指令。
• 设计不应存在重大设计问题
,
如高拥塞、时钟设置不平衡或
RQA
评分低于
4
。
• 应从参考检查点重新生成建议。
• 仅当新生成的建议属于适合增量流程的建议时
,
才会加以应用。如果建议不适合增量流程
,
则仅当流程还原为默认流程时才会执行这些建议。如果不发生还原,
则将忽略这些建议。
• 这些新生成建议必须从参考检查点生成。此项检查可确保建议不会影响时序已解决的路径
(
例如
,
布线后phys_opt_design)
。 运行该流程所需的命令示例如下所示:
• 参考
:
# Generate RQS suggestions from the reference DCP
open_checkpoint reference_routed.dcp
report_qor_suggestions -file postroute_rqs.rpt
write_qor_suggestions -force ./post_route.rqs
• 增量流程
:
# RQS-Incremental Run:
open_checkpoint <pre_opt.dcp>
read_qor_suggestions ./post_route.rqs
# opt_design directive must be same as the reference run
opt_design -directive {same directive as reference run}
read_checkpoint -incremental reference_routed.dcp
# place_design is running in TimingClosure mode
place_design
# phys_opt_design is optimized for incremental
phys_opt_design
# route_design is running in TimingClosure mode
route_design
write_checkpoint postroute.dcp
自动删除建议
为了防止建议过多累积
,
Vivado Design Suite
会对建议进行自动管理。生成新建议时
,
它将删除与先前生成的建议相同的建议。
以
Tcl
或文本格式来查看建议
建议对象存储在二进制文件中
:
因此读取建议的唯一途径是加载设计、读取建议并运行
report_qor_suggestions
。对于不希望使用对象流程的用户
,
支持在
Tcl
中查看和执行建议。
要在
Tcl
中写出建议
,
请使用以下命令
:
write_qor_suggestions -tcl_output_dir <outputDir>
通过运行此命令即可将
1
个或多个
Tcl
文件输出到指定目录。该选项在
Vivado IDE
中不可用。
对于为实现命令生成的
Tcl
脚本
,
使用
Tcl
前挂钩或后挂钩将其添加到实现运行中
,
通常最好是在
opt_design
之前使用。可以在非工程流程中使用 Tcl
源命令读取这些脚本。对于综合
Tcl
脚本
,
必须将其添加到在工程模式下设置的约束中(
将文件筛选工具更新为
Tcl
可进行查看
),
或者在非工程模式下使用
read_xdc -unmanaged <Tcl file>
访问这些脚本。
当对象显示在
Tcl
中时
,
您应负责维护
Tcl
以移除不再需要的对象
,
并且仅应用这些对象要应用的建议。您需将任何新生成的 Tcl
脚本追加到现有的
Tcl
脚本中。report_qor_suggestions 将不再报告使用
Tcl
输入的建议。
受支持的系列和流程
下表汇总了该版本中
QoR
建议支持的器件系列和设计流程。
支持的建议
Vivado
可生成
100
余项
QoR
建议
,
其中
80
余项建议能自动执行
,
无需用户对约束或
RTL
进行任何编辑。要查看可生成的所有建议的列表,
请运行
get_qor_checks
命令。您可检查随附于返回的对象的属性。此命令返回的对象并非生成的建议,
无法写入这些对象本身。
-family
开关可用于仅显示适用于某一系列的建议。以下示例演示了如何查看当前打开的设计系列可用的建议
:
get_qor_checks -family [get_property FAMILY [get_parts [get_property PART
[current_design]]]]
-filter
开关允许用于基于对象属性进行筛选。可供筛选的实用属性有
:
•
CATEGORY
•
AUTO
•
INCR_FRIENDLY
此命令的输出应使用
Tcl
来处理。以下示例演示例如如何查看所有
AUTO
检查的
ID
和描述
:
foreach sugg [lsort -dict [get_qor_checks -filter {AUTO==1}]] {
set ID [get_property ID $sugg]
set DESCRIPTION [get_property DESCRIPTION $sugg]
puts "[format %-16s $ID]: $DESCRIPTION "
}