UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
引言
初始设计检查流程
根据《UltraFAST 设计方法指南(适用于 Vivado Design Suite)》 (UG949) 中
的建议,本快捷参考指南提供了以下简化的分步骤快速收敛时序流程:
初始设计检查:在实现设计前审核资源利用率、逻辑层次和时序约束。
时序基线:在每个实现步骤后检查并解决时序违规,从而帮助布线后收敛
时序。
时序违规解决:识别建立时间违规或保持时间违规的根源,并解决时序违规。
Failfast 报告
基于 Tcl 的 Failfast 报告总结关于设计与约束的关键信息,有助于您迅速识别并解
决常见的实现和性能问题。默认条件下该报告分析完整设计并输出一个表,在表中
将每个分析指标与典型的指南值做对比。将每个不符合指南值的指标标记为
REVIEW。报告包括下列部分:
设计特性
关键时钟方法检查
根据目标 Fmax 进行保守的逻辑层次评估
从 Vivado® 工具 2018.1 版开始,report_failfast 脚本能默认安装并以下列方式
调用:
xilinx::designutils::report_failfast
从 SDx™ 工具 2018.2 版开始,report_failfast 在编译流程中使用 xocc –R 1 或
xocc –R 2 调用。
如需了解更多有关 report_failfast 的信息,请参阅 Failfast 报告概览(第 10
页)。
Run report_failfast
Clean report?
Yes
Review Check Timing section in
report_timing_summary
Clean report?
Yes
Run report_methodology
No
Fix methodology checks that impact
timing closure (Fmax)
Clean report?
Yes
Proceed to design implementation (logic optimization, placement, routing)
X21574-091818
Open the synthesized design checkpoint (DCP) or the post-opt_design DCP
(if available)
Review the detailed reports to identify
the design characteristics or
constraints to improve:
● Estimated device and SLR Pblock
resource utilization
● Constraints preventing optimizations
No
初始设计检查 - 详细介绍
初始设计检查详细介绍
虽然在赛灵思器件上实现设计是一个自动化程度相当高的任务,获得较高性能并解
决时序或布线违规带来的编译问题,是一项复杂且耗时的工作。根据简单的日志消
息或由工具生成的实现后时序报告可能难以确定故障原因。因此有必要采用逐步设
计开发和编译方法,包括审核中间结果以确保设计能进行到下一个实现步骤。
第一步是确保所有的初始设计检查都已经完成。在下列层次查看这些检查:
每个由定制 RTL 构成的内核或由 Vivado HLS 生成的内核
注意:检查目标时钟频率约束是否现实。
● Control signals and average fanout
每个与子系统对应的主要层级,例如有多个内核、IP 块和连接逻辑的 Vivado
● Clock tree and clock domain
crossing constraints
● High logic levels given the target
frequency
No
Create missing clock constraints to
eliminate unconstrained internal
endpoints and avoid timing loops
IP 集成器原理图
包括所有主要功能和层级、I/O 接口、完整时钟电路和物理及时序约束的完整
设计
如果设计使用布局规划约束,如超级逻辑区域 (SLR) 分配或分配给 Pblock 的逻
辑,为每个物理约束审核估算的资源占用,确保符合资源占用指南。在 Failfast 报
告中查看默认指南。使用下列命令生成报告:
report_utilization –pblocks
report_failfast –pblock
report_failfast [–slr SLRn | -by_slr]
UG1292 (v2018.2) 2018 年 9 月 28 日
1
时序基线流程
时序基线示例
UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
Open the synthesized design
checkpoint, run opt_design,
report_timing_summary
and run
WNS > 0 ns?
Yes
Run place_design,
phys_opt_design (optional),
and report_timing_summary
WNS > 0 ns?
Yes
WHS > -0.5 ns?
Yes
Run route_design,
phys_opt_design (optional),
and report_timing_summary
WNS > 0 ns?
Yes
WHS > 0 ns?
Yes
Generate bitstream and run
design on the Xilinx device
UG1292 (v2018.2) 2018 年 9 月 28 日
2
No
No
No
No
No
See Pre-Placement (WNS < 0 ns) (this
page)
See Pre-Routing (WNS < 0 ns) (this page)
See Pre-Routing (WHS < -0.5 ns) (this
page)
See Post-Routing (WNS < 0 ns or
WHS < 0 ns) (this page)
X21575-091818
时序基线检查的目的是通过在每个实现步骤后分析和解决时序问题,确保设计满足时序要求。在编译流程中尽早纠正设计问题和约束问题,能带来更广泛的影响并
实现更高的性能。可通过创建如下中间报告,在进行下一个步骤前检查并解决时序违规:
Vivado 项目模式报告
使用 UltraFast™ 设计方法或时序收敛报告策略
Vivado 非项目模式报告
在每个实现步骤后添加下列报告命令:
report_timing_summary
report_methodology
report_failfast
Sdx 工具报告
使用 xocc -R 1 或 xocc -R 2 选项在下列目录中生成
Failfast 报告、中间时序报告和 DCP:
/_x/link/vivado/prj/prj.runs/impl_1
预布局 (WNS < 0ns)
在 place_design 之前,时序报告反映的是假定每条逻辑路径的逻辑布局尽可能最优情况下的设计性能。必须通过采用“初始检查”建议来解决建立时间违规。
预布线 (WNS < 0ns)
在 route_design 之前,时序报告反映的是假定每个单独网络存在最理想布线延迟,存在一些扇出损失且不考虑保持时间修复的影响(网络布线绕行)或拥塞时的
设计性能。建立时间违规往往是下列原因导致的欠佳布局造成的:(1) 高器件或 SLR 资源利用率;(2) 因复杂逻辑连接造成的布局拥塞;(3) 大量时序路径有过高的
逻辑级数;和 (4) 不平衡时钟间的高时钟偏差或高时钟不确定性。在 Explore 模式或 AggressiveExplore 模式下运行 phys_opt_design,试图提升 post-
place_design QoR。如果不成功,先重点提升布局 QoR。
预布线 (WHS < -0.5ns)
如果布线后未达成性能目标且布线前最差负时序裕量 (WNS) 为正值,尽量减少估算的最差保持时序裕量 (WHS) 重大违规。减少并减轻预布线保持时间违规有助于
route_design 重点关注 Fmax 而非修复保持时间违规。
布线后 (WNS < 0 ns 或 WHS < 0 ns)
在 route_design 后,首先通过审核日志文件或在布线后设计检查点 (DCP) 上运行 report_route_status,验证设计是否完全布线。布线违规和重大建立时间
(WNS) 或保持时间 (WHS) 违规是由高拥塞导致的结果。使用分析建立时间违规(第 3 页)、解决保持时间违规(第 4 页)以及拥塞减少方法(第 6 页),识别
和实现解决步骤。
在 route_design 后尝试运行 phys_opt_design,解决 > -0.200 ns 的轻微建立时间违规。
在迭代设计、约束和编译策略时,保持在每个步骤后追踪 QoR,包括拥塞信息。使用 QoR 表比较运行特性,并确定在解决剩余的时序违规时的优先关注对象。
提示:在 place_design 和 route_design 后使用 report_qor_suggestions,自动识别帮助新编译提升 QoR 的设计、约束和工具选项更改。
UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
分析建立时间违规流程
设计性能由如下因素决定:
时钟偏差与时钟不确定性:时钟如何高效实现
逻辑延迟:时钟周期内遍历的逻辑量
网络或布线延迟:Vivado 如何高效实现设计的布局和布线
使用时序路径或设计分析报告内的信息,完成:
识别哪些因素是引起时序违规的主要因素
确定如何迭代提升 QoR
提示:需要时在每个步骤后打开 DCP 以生成更多报告。
Open the timing report, identify the worst violating paths for each clock group, and
apply the following step-by-step analysis to each of the paths
Logic delay > 50%
of datapath delay?
Yes
See Reducing Logic
Delay (page 5)
Net delay > 50%
of datapath delay?
Yes
See Reducing Net Delay
(pages 6 and 7)
在报告中找出建立时序路径特性
在 Vivado 项目模式中,通过下面的步骤找到建立时序路径特性:
1. 在“Design Runs”窗口中,选择要分析的实现运行。
2. 在“Run Properties”窗口中,选择“Reports”标签。
打开选定实现步骤的时序总结报告或设计分析报告:
时序总结报告:__report_timing_summary (针对文本采用 .rpt 或针对 Vivado IDE 采用 .rpx)
设计分析报告:__report_design_analysis
在 Vivado 非项目模式或 SDx 工具中,采取下列操作之一:
打开实现运行目录中的报告。
打开 Vivado IDE 中的实现 DCP,然后打开报告的 RPX 版本。
注意:使用 Vivado IDE 可便于您在报告、原理图和器件窗口间进行交叉探测。
对于每个时序路径,逻辑延迟、布线延迟、时钟偏差和时钟不确定性特性都位于路径的报头内:
Clock skew < -0.5 ns?
Yes
See Improving Clock
Skew (page 8)
除了时钟的不确定性,设计分析报告的“Setup Path Characteristics”也提供相同的时序路径特性:
Clock uncertainty > 0.100 ns?
Yes
See Improving Clock
Uncertainty (page 9)
X21576-091818
提示:在文本模式中,“Setup Path Characteristics”列的全部列都会显示,让表宽度非常宽。在 Vivado IDE 里,同一表中通过减少显示的列数来帮助实现可视
化。右键单击表头,根据需要启用或禁用列。例如,默认条件下 DONT_TOUCH 或 MARK_DEBUG 列是不可见的。启用这些列可以查看逻辑优化分析中跳过的重
要信息,而且这些信息用其他方式不便查看。
UG1292 (v2018.2) 2018 年 9 月 28 日
3
解决保持时间违规流程
Open the timing report, identify the worst hold violating paths for the entire design, and
apply the following step-by-step analysis to each of the paths
Clock skew > 0.5 ns?
Yes
See Improving Clock
Skew (page 8)
Positive hold path requirement?
Yes
See Avoiding Positive
Hold Requirements (this
page)
WHS < -0.4 ns
or
THS < -1000 ns?
Yes
See Reducing the WHS
and THS Before Routing
(this page)
Clock uncertainty >
0.100 ns?
Yes
See Improving Clock
Uncertainty (page 9)
下面是一个有高时钟偏差的保持时序路径示例:
X21577-091818
解决保持时间违规的方法
UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
避免上升沿保持时间要求
在使用多周期路径约束放松建立时间检查时,您必须:
调整同一路径上的保持时间检查,让保持时间分析使用相同的启动沿和捕获沿。如果未能这样操作,会导致上升沿保持时间要求(一个或多个时钟周期)和无
法实现的时序收敛。
指定端点引脚,而不仅仅是单元或时钟。例如,端点单元 REGB 有三个输入引脚:C、EN 和 D。只有 REGB/D 引脚需要由多周期路径例外处理进行约束(时
钟使能 (EN) 引脚不用),因为 EN 引脚在每个时钟周期都会发生变化。如果将约束连接至单元而不是引脚,那么所有有效的端点引脚,包括 EN 引脚,都在
约束的考虑范围内。
Q
REGA
D
EN
REGB
D
EN
Q
Source clock (REGA)
launch edge
Hold
Setup
Hold
Destination clock (REGB)
capture edge
X21578-091818
Clock Enable
赛灵思建议您始终使用如下语句:
set_multicycle_path -from [get_pins REGA/C] -to [get_pins REGB/D] -setup 3
set_multicycle_path -from [get_pins REGA/C] -to [get_pins REGB/D] -hold 2
在布线前降低 WHS 和 THS
重大的预估保持时间违规会增大布线难度,并且不能总是用 route_design 解决。布局后 phys_opt_design 命令提供多种保持时间修复选项:
在时序元素之间插入上升沿边缘触发寄存器将时序路径分为两个半周期路径,从而显著减少保持时间违规。这种优化只能在不劣化建立时序的情况下执行。使
X21579-091818
用下列命令:
phys_opt_design -insert_negative_edge_ffs
插入 LUT1 以延迟数据路径,在不造成建立时间违规的情况下减少保持时间违规。使用下列命令:
phys_opt_design -hold_fix:针对最大 WHS 违规在路径上插入 LUT1。
phys_opt_design -aggressive_hold_fix:以 LUT 利用率显著增加和编译时间延长为代价,在更多路径上插入 LUT1 以大幅降低总体保持时序裕量
(THS)。该选项可以与任何 phys_opt_design 指令结合。
phys_opt_design -directive ExploreWithAggressiveHoldFix:插入 LUT1,在使用一切其他设计用于提升 Fmax 的物理优化的同时修复保持时
间。
UG1292 (v2018.2) 2018 年 9 月 28 日
4
UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
减少逻辑延迟流程
Use the report_design_analysis command, and enable all columns of the Setup
Path Characteristics table
Path with only CLB primitives?
Yes
See Optimizing Regular Fabric
Paths (this page)
No
Path with DSP, RAMB, URAM,
FIFO, or GT primitives?
Yes
See Optimizing Paths with
Dedicated Blocks and Macro
Primitives (this page)
X21580-091818
Vivado 实现首先关注最关键的路径。这意味着不太困难的路径在布局之后或布线
之后变为关键路径。赛灵思建议在综合之后或 opt_design 之后识别和改进最长路
径,因为它对 QoR 产生最大的影响,并且通常会显著减少布局和布线迭代的次数
以实现时序收敛。使用 report_design_analysis“逻辑层次分布”表,通过根据要求
权衡逻辑层次分布,找出需要改进设计的时钟域。要求越低,允许的逻辑层次就越
少。例如在下面的预布局逻辑层次分配报告中:
为 txoutclk_out[0]_4 审核有 8 个或更多逻辑层次的全部路径。
为 app_clk 审核有 11 个或更多逻辑层次的全部路径。
注释:级联 CARRY 或 MUXF 单元能够人为增加逻辑层次数量,且对延迟影
响小。
提示:在 Vivado IDE 报告中,点击逻辑层次编号以选择路径,然后按 F4 生成原
理图并审核逻辑。
UG1292 (v2018.2) 2018 年 9 月 28 日
5
减少逻辑延迟的方法
提示:使用 report_qor_suggestions 自动识别常见的逻辑延迟降低方法,并生成设计微调约束,便于您在您下一次的实现运行中使用。
优化常规结构路径
常规时序路径是寄存器 (FD*) 或移位寄存器 (SRL*) 之间的路径,并且穿过 LUT、MUXF 和 CARRY 的混合。如果您遇到与常规架构路径有关的问题,赛灵思建议
如下。如需了解更多信息,请参阅《Vivado Design Suite 用户指南:综合》 (UG901) 和《Vivado Design Suite 用户指南:实现》 (UG904)。
输入较少的级联 LUT (LUT1-LUT4) 可以相互合并来减少 LUT 使用量。但是设计层级、网络扇出、或者一些 KEEP/KEEP_HIERARCHY/DON’
T_TOUCH/MARK_DEBUG 属性会限制工具进行 LUT 合并。
建议:移除属性,从综合步骤或从 opt_design -remap 开始重新运行。
单个 CARRY(非级联)单元限制 LUT 优化,能降低布局质量。
建议:使用 FewerCarryChains 综合指令,或设置单元上的 CARRY_REMAP 属性为可用 opt_design 移除。
移位寄存器的 SRL* 延迟高于寄存器 FD* 延迟,且 SRL 布局的质量低于 FD 布局质量。
建议:在综合后使用 RTL 中的 SRL_STYLE 属性,或是单元上的 SRL_STAGES_TO_INPUT 或 SLR_STAGES_TO_OUTPUT 属性从 SRL 输入或输出拉出寄存
器。在 RTL 中必须修改动态 SRL。
当逻辑路径终止于以 LUT 驱动结构寄存器 (FD*) 的时钟使能 (CE) 引脚、同步建立 (S) 引脚或同步复位 (R) 引脚时,布线延迟高于寄存器数据引脚 (D),尤其
是在路径最后一个网络的扇出大于 1 时。
建议:如果终止于数据引脚 (D) 的路径有更高裕量和更少逻辑层次,则在 RTL 内把信号上的 EXTRACT_ENABLE 或 EXTRACT_RESET 属性设置为 no。此
外,也可以把单元上的 CONTROL_SET_REMAP 属性设置为在 opt_design 过程中触发相同优化。
提示:全局使用 synthesis -retiming,或在模块上使用块综合策略(如 BLOCK_SYNTH.RETIMING=1)。
使用专用块和宏原语优化路径
从专用块和宏原语(例如 DSP、块 AMB、URAM、FIFO 或 GT_CHANNEL)/到/在它们之间的逻辑路径布局难度更大,有更高的单元和布线延迟。因此,围绕宏
原语添加额外的流水线或减少宏原语路径上的逻辑层次,对提升总体设计性能相当关键。
在修改 RTL 之前,通过启用所有可选的 DSP、RAMB 和 URAM 寄存器并重新运行实现,验证增添流水线给 QoR 带来的好处。在采用这一评估方法时请勿生成比
特流。例如:
set_property –dict {DOA_REG 1 DOB_REG 1} [get_cells xx/ramb18_inst]
下面是一个要求增加流水线寄存器或减少逻辑层次的 RAMB18 路径示例(在 route_design 后报告):
降低信号网络延迟流程 1
全局拥塞给设计性能造成如下影响:
4 级 (16x16):在 route_design 过程中的小 QoR 可变性
5 级 (32x32):欠佳布局和值得注意到 QoR 变化
6 级 (64x64):布局布线难度大,编译时间长。除非性能目标低下,时序
QoR 严重劣化。
7 级 (128x128) 及以上:无法布局或布线。
route_design 命令为 4 级及以上拥塞在日志文件里输出初始估计拥塞表。
为了同时报告布局器和布线器拥塞信息,使用 report_design_analysis –
congestion。
提示:在 Vivado IDE 内打开布局后或布线后 DCP,以创建交互式
“report_design_analysis”窗口。通过交叉探测,高亮显示拥塞区域并显示拥塞对
单个逻辑路径布局和布线的影响。请参阅 UG949:《识别拥塞》。
If the congestion level is 4 or higher, open the design checkpoint in the Vivado IDE, show
the congestion metric in the Device window, and highlight and mark the timing path to
analyze the path placement and routing
减少拥塞的方法
下面给出关键时序路径的示例,其中网络布线围绕拥塞区域绕行,导致更大的信号网络延迟。
所有视图从设计分析报告中都能看到。
在“器件”窗口中按逐个 CLB 指标启用垂直和水平布线拥塞。
UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
减少拥塞
为减少拥塞,赛灵思建议按列出的顺序使用下列方法
如果总资源利用率大于 70-80%,可通过移除一些设计功能,或迁移部分模块或内核到另一个 SLR,从而降低器件或 SLR 的资源利用率。同时避免 LUT 和
DSP/RAMB/URAM 利用率同时都高于 80%。如果必须保持高宏原语利用率,尽可能保持 LUT 利用率低于 60%,从而在避免引入复杂的布局规划约束的条件
下在拥塞区域内扩展布局。布局后使用 xilinx::designutils::report_failfast -by_slr 逐个 SLR 地审核利用率。
尝试多种布局指令(例如 AltSpreadLogic* 或 SSI_Spread*)或 Congestion_* implementation 运行策略。
使用 report_design_analysis -complexity -congestion 识别有高连接复杂性(Rent 指数> 0.65 或平均扇出 > 4)的重大拥塞模块(> 15,000 单元)。使
用添加到 XDC 文件中的针对拥塞的综合设置:
set_property BLOCK_SYNTH.STRATEGY {ALTERNATE_ROUTABILITY} [get_cells ]
在拥塞区域减少使用 MUXF* 和 LUT 合并。请查看 RDA 拥塞报告中的对应列。在拥塞叶节点单元上设置 MUXF_REMAP 为 1,设置 SOFT_HLUTNM 为
“”。使用 report_qor_suggestions 获取帮助。 把拥塞区域内的非关键高扇出网络提升为全局时钟布线,具体如下:
set_property CLOCK_BUFFER_TYPE BUFG [get_nets ]
重复使用之前低拥塞实现运行中的 DSP、RAMB 和 URAM 布局约束。例如:
read_checkpoint -incremental routed.dcp -reuse_objects [all_rams] -fix_objects [all_rams]
See Reducing Net Delay (page 7)
See Optimizing High Fanout Nets (this
page)
Is the path overlapping a
congested area?
Yes
Is the fanout < 10 for
the critical nets?
No
No
Yes
See Reducing Congestion
(this page)
UG1292 (v2018.2) 2018 年 9 月 28 日
6
X21581-091818
优化高扇出网络
在 RTL 内或借助如下逻辑优化明确地使用基于层级的寄存器复制:
opt_design –merge_equivalent_drivers –hier_fanout_limit 512
在 route_design 前通过额外地调用物理优化步骤,在关键高扇出网络上进行强制复制:
phys_opt_design -force_replication_on_nets
UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
降低信号网络延迟流程 2
降低信号网络延迟的方法
Use the report_design_analysis command, enable all columns of the Setup Path
Characterisitcs table, and use report_utilization or report_failfast to get the
number of control signals after placement
修复因保持时间绕行造成的建立时间违规
为了确保设计硬件功能正常,修复保持时间违规优先于修复建立时间违规(或 Fmax)。下面的示例显示了存在高偏差且有严格建立要求的两个同步时钟间的路
径:
Is the Hold Fix Detour
> 0 ps?
Yes
See Fixing Setup Violations Due to
Hold Detours (this page)
No
Is the path constrained by
Pblock or LOC constraints?
Yes
See Reviewing and Correcting Physical
Constraints (this page)
No
Is the path crossing an
SLR boundary?
Yes
See Improving the SLR Crossing
Performance (this page)
No
Is the # of control sets > 7.5%
the # of CLB registers ÷ 8
Yes
See Reducing Control Sets
(this page)
No
Several implementation
strategies attempted?
Yes
See UG949: Design Creation to identify
additional logic optimizations
No
See Trying Alternative Implementation Flows (this page)
X21582-091818
说明:“保持时间修复绕行”以皮秒为单位。要解决保持时间绕行对 Fmax 的影响,请参阅“解决保持时间违规的方法”(第 4 页)。
审核并纠正物理约束
所有设计包含物理约束。虽然一般不能更改 I/O 位置,在做出设计更改前必须仔细验证和审核 Pblock 和位置约束。更改可能拉开逻辑间距,并引入较长的信号网
络延迟。审核有超过 1 个 Pblock(Pblock 列)的路径和有位置约束(固定位置列)的路径。
提升 SLR 交汇性能
在指向堆叠硅片互联 (SSI) 技术器件时,尽早对如下设计因素进行考虑有助于提升性能:
在主要设计层级或内核边界添加流水线寄存器,辅助长距离布线和 SLR 交汇布线
验证每个 SLR 的利用率均符合指南(使用 report_failfast –by_slr)
使用 USER_SLR_ASSIGNMENT 约束引导实现工具。请参阅 UG949:《使用软 SLR 布局规划约束》。
如果软约束无效,使用 SLR Pblock 布局约束
在布局或布线后,使用 phys_opt_design -slr_crossing_opt
减少控制集
在控制集数量超过指南 (7.5%) 时,不管对整个器件还是对每个 SLR,尝试减少控制集数量:
在 RTL 内移除时钟使能、设置或复位信号上的 MAX_FANOUT 属性
增加最小综合控制信号扇出(如 synth_design –control_set_opt_threshold 16)
使用 opt_design –control_set_merge 或 –merge_equivalent_drivers 融合复制的控制信号
通过设置 CLB 寄存器单元上的 CONTROL_SET_REMAP 属性,重新映射低扇出控制信号到 LUT
尝试替代性实现流程
可通过默认编译流程快速获得设计基准 (baseline),并在未满足时序要求的情况下分析设计。如果初始实现后未能满足时序要求,尝试其他建议的实现流程:
尝试多个 place_design 指令(最多 10 个)和多次 phys_opt_design 迭代(Aggressive*、Alternate* 指令)
使用 set_clock_uncertainty,在 place_design/phys_opt_design 过程中过度约束最关键时钟(最大 0.500 ns)
使用 group_path –weight,在必须满足时序要求的时序时钟上提升时序 QoR 的优先级
在较小设计修改后使用增量编译流程,保护 QoR 并缩短运行时间
UG1292 (v2018.2) 2018 年 9 月 28 日
7
改善时钟偏差流程
Use the report_design_analysis command, enable all columns in the Setup Path
Characterisitcs table, and optionally use report_clock_utilization to review the
existing constraints on clock nets
No
No
No
Does Clock Relationship
show Safely Timed?
Yes
Is the path between
balanced clocks?
Yes
Is the skew < 0.5 ns?
Yes
See Adding Timing Exceptions between
Asynchronous Clocks (this page)
See Cleaning Up the Logic Used in
Clock Trees (this page)
See Matching Clock Routing
(this page)
Is the clock connected to
both I/O and fabric cells?
Yes
See Constraining the Clock Loads
Placement Next to the Related I/O Bank
(this page)
No
Yes
See Constraining the Clock Loads
Placement to a Smaller Area
(this page)
X21583-091818
Does the data path
cross an SLR boundary or I/O
column?
No
See Reducing the Clock Net
Delay by Moving the Physical
Source (this page)
UG1292 (v2018.2) 2018 年 9 月 28 日
8
改善时钟偏差的方法
UltraFast 设计方法时序收敛快捷参考指南 (UG1292)
在异步时钟之间添加时序例外
必须将时序路径(其中源和目标时钟源自不同主时钟或没有公共节点)作为异步时钟处理。在这种情况下,偏差可能极其大,从而使得无法收敛时序。根据需要添
加 set_clock_groups、set_false_path 和 set_max_delay –datapath_only 约束。详情,请参阅 (UG949):《在异步时钟之间添加时序例外》。
清理时钟树中使用的逻辑
除非在时钟逻辑中使用 DONT_TOUCH 约束,否则 opt_design 命令会自动清理时钟树。选择时序路径,启用时钟路径可视化工具栏按钮 ,打开原理图 (F4)
审核时钟逻辑。
通过消除不必要的缓存或并行连接它们可以避开级联时钟缓存之间的时序路径。例如:
在时钟等效的情况下,把并行时钟缓存合并为单个时钟缓存。
在时钟路径中移除 LUT 或任何组合逻辑,因为它们可使时钟延迟和时钟偏差不可预测。
匹配时钟布线
使用 CLOCK_DELAY_GROUP 提升关键同步时钟间的时钟布线延迟,即使两个时钟网络已拥有相同的 CLOCK_ROOT。下面的示例显示了不使用
CLOCK_DELAY_GROUP 的两个同步时钟:
在相关 I/O 组旁边约束时钟负载布局
对于不足 2,000 负载的 I/O 逻辑与结构单元之间的时钟,设置时钟网络上的 CLOCK_LOW_FANOUT 属性,自动布局所有负载到与时钟缓存 (BUFG*) 相同的时钟
区域并保持低插入延迟和低偏差。
约束时钟负载布局到更小区域
您可以使用 Pblock,强制在更小区域内(例如 1 个 SLR)布局时钟网络负载,以降低插入延迟和偏差,或避免特殊列发生交汇,例如引入偏差损失的 I/O 列。
通过迁移物理源降低时钟信号网络延迟
使用位置约束迁移源混合模式时钟管理器 (MMCM) 或锁相环 (PLL) 到时钟负载中心,以降低最大时钟插入延迟,从而降低时钟消极因素以及偏差。详情,请参阅
(UG949):《改善 UltraScale 和 UltraScale+ 器件的偏差》。