通过用Xilinx的器件和EDA(vivado)教你学会FPGA——UltraFast Design Methodology - Design Closure【设计高速设计时序收敛方法】
文章目录
一、快速收敛的设计方法
时序闭合包括满足所有时序要求的设计。如果您有正确的HDL和合成约束,则更容易达到时序约束。此外,使用改进的HDL、约束和合成选项迭代合成阶段也很重要,如图所示。要成功关闭定时,一下的一般指导方针。
指南方法1:如果最初没有满足时间要求,第一个指导方针是评估整个流程的时间要求。
指南方法2:其次,重点研究各时钟的最坏负松弛(WNS)作为改进总负松弛(TNS)的主要途径。
指南方法3:然后审查大型最坏货舱松弛(WHS)违规,以识别缺失或不适当的约束。
指南方法4:下一个指导方针是重新审视设计选择、约束和目标体系结构之间的权衡。
指南方法5:接下来是了解如何使用工具选项和XDC。
指南方法6:最后一个指导方针是要意识到,这些工具不会在满足计时要求后进一步改进计时。
二、时序约束(timing_closure)的基础信息和分析时序(TC)报告
以下是计时关闭标准和计时报告的基础。时序闭包从编写有效的约束开始,这些约束表示设计将如何在硬件中运行。在此之前,了解计时关闭标准非常重要。可以快速查看时序摘要报告的检查时序部分,以评估时序约束的覆盖范围。此外,在进行最大或最小或脉宽分析时,检查正定时松弛。这将表明任何时间违规,松弛将是负的。
1.理解时间关闭标准
(1)检查有效约束
检查有效约束回顾时间总结报告的检查时间部分,以快速评估时间限制的覆盖范围
(2)检查是否有正确的定时松懈
设置/恢复(最大延迟分析):最坏负松弛度(WNS) > 0 ns和总负松弛度(TNS)=0 ns
保持/移除(最小延迟分析):最坏保持松弛度(WHS)> 0 ns和总保持松弛度(THS)=0 ns
脉宽:最坏脉宽松弛度(WPWS) > 0 ns和总脉宽松弛度(TPWS) =0 ns
2.理解时序报告
时序摘要报告提供了与所提供的约束相比设计的时序特征的高级信息。理解这份报告非常重要。给出了总负松弛度(TNS)、最坏负松弛度(WNS)、总保持松弛度(THS)、最坏保持松弛度(WHS)、总脉宽松弛度(TPWS)、最坏脉宽松弛度(WPWS)和总松弛度等信息。
2.高速设计方法(UFDM)的时序约束
现在让我们来看看超快设计方法时序关闭指南,该指南基于fpga、soc和通用ACAP器件的超快设计方法指南中的建议,提供了快速关闭时序的逐步流程。步骤包括:初始设计检查:这包括在实现设计之前检查利用率、逻辑级别和时间限制。时序基线:这包括在每个实现步骤之后检查和处理时序违规,以帮助关闭路由后的时序。时间冲突解决:这包括确定设置或保持冲突的根本原因,并解决时间冲突。
[1]初始设计检查细节&初始设计检查流程
初始设计检查细节
尽管在fpga和自适应soc上实现设计是一项相当自动化的任务,但实现更高的性能并解决由于定时或路由违规而导致的编译问题可能是一项复杂且耗时的活动。基于简单的日志消息或工具生成的实现后定时报告,可能很难确定故障的原因。因此,采用循序渐进的设计开发和编译方法是必要的,包括对中间结果的审查,以确保设计可以进入下一个实现步骤。
第一步是确保处理所有初始设计检查。然后在以下级别检查相同的检查
每个内核由自定义RTL组成或由Vitis HLS工具生成。在这里,检查目标时钟频率约束是否现实。每个主要层次结构都对应于一个子系统,例如具有多个内核、IP块和连接逻辑的VivadoIP集成方框图。完整的设计,包括所有主要功能和层次结构、I/O接口、完整的时钟电路以及物理和时序约束。如果设计使用地板规划约束,例如超级逻辑区域(SLR)分配或分配给pblock的逻辑,则检查每个物理约束的估计资源利用率,并确保满足利用率指导方针。
初始设计检查流程
让我们看看使用结果质量(QoR)评估报告的初始设计检查流程。您可以使用QoR(quality of result)评估报告快速检查您的设计。这些报告将关键设计和约束指标与指南限制进行比较。不符合指导方针的度量被标记为REVIEW。在最初的设计检查流程中,您应该在实现设计之前检查设备利用率(LUT一般小于60%)、逻辑级别和时间约束。首先,打开合成设计检查点(DCP)或post-opt_design DCP。在打开的检查点上,执行report_qor_assessment
命令生成QoR评估报告。
您可以审查详细的报告,以确定需要改进的设计特征或限制,包括:
(1)估计设备和超级逻辑区域(SLR) Pblock资源利用率
(2)妨碍优化的约束
(3)控制信号和平均扇出时钟树和时钟域交叉约束
(4)给定目标频率的高逻辑电平
如果QoR评估报告清晰,可以使用report_timing_summary
命令查看Timing Summary部分。此报告有助于创建缺失的时钟约束,以消除不受约束的内部端点,并避免定时循环。在一个清晰的计时摘要报告之后,运行report_methodology
命令来识别影响计时闭包(Fmax)的方法检查。一旦解决了所有问题,就可以继续进行设计实现,其中包括逻辑优化、放置和路由。
[2]Baseline基线
基线化是一个过程,在这个过程中,最初通过忽略I/O定时来创建最简单的定时约束。在所有时钟都被完全约束之后,设计中所有具有起点和终点的路径都被自动约束。因为设计也可能有时钟域交叉,基线约束必须包括指定时钟之间的关系,包括生成的时钟。这提供了一种简单的机制来识别内部设备时序挑战,即使在设计不断发展的时候。其次,添加所有I/O约束是为了在Vivado®实现工具中给出一个真实的时序图。这优化了整个芯片。一旦完成这些工作,就可以检查设计的时机,并决定是否对设计进行微调。如果需要进行微调,则将定时异常约束添加到设计中。
- 性能基线Performance Baseline
基线过程从初始合成结果开始,并要求设计师为设计中的每个时钟设置初始时钟约束。这通常需要用户评估每个生成的时钟。之后,设计师需要将所有时钟组定义为异步,以防止两个不同时钟之间的路径受到约束。这使得实现工具能够专注于时钟内路径。此时通常使用时钟交互报告来确保忽略适当的路径,并约束时钟内路径。
可以在实现后生成时序报告,以确定是否满足设计性能。如果不满足,设计可能需要重新编码或逻辑重新优化以满足时间要求。在路径固定之后,用户可以添加他们的I/O定时约束。这是在第二步完成的,因为大多数高级的I/O接口需要经验来正确约束,许多设计师犯了严重的错误。这可以确保通过使用性能基线过程,90%的路径在第一步之后满足计时要求。设计人员可以在此之后重新运行合成和实现。最后,第三步要求设计人员在必要时添加适当的时序异常,如多周期约束、假路径约束和最大延迟约束。多循环和假路径约束使工具在移动逻辑和满足与项目相关的所有时间约束方面具有更大的灵活性。
3.时序基线流
目标是确保设计符合时间要求尽早解决设计和约束问题可以确保更广泛的影响和更高的性能时间验证分为四个阶段:
- 预放置(WNS <0 ns):
预放置阶段(如果WNS小于0 ns)在place_design之前,时序报告反映了假设每个逻辑路径的最佳逻辑放置的设计性能。如果最坏的负松弛小于0秒,则必须采用初始设计检查建议来解决这些设置违规问题。如果WNS大于0 ns,请执行place_design
和report_timing_summary
命令。 - 预路由(WNS <0 ns):
路由前阶段(如果WNS小于0 ns)在route_design
之前,时间报告反映了设计性能——假设每个单独的网络具有一些扇出惩罚,并且不考虑固定影响(网络路由绕路)或拥塞的最佳路由延迟。设置违规通常是由于次优放置造成的:
(1)高设备或单反利用率
(2)由于复杂的逻辑连接而导致的位置拥塞
(3)许多路径,许多逻辑级别
(4)不平衡时钟之间的高时钟偏差或高时钟不确定性。
在Explore或AggressiveExplore模式下运行phys_opt_design
以尝试改进post-place_design
QoR。如果不成功,首先要专注于提高配售QoR。一旦固定,检查最坏的保持松弛(WNS)。 - 预路由(WNS-0.5 ns)
预路由阶段(WHS小于0.5 ns)当路由后的性能目标未满足,且路由前的最坏负松弛为正时,尽量减少估计的最大最坏保持松弛违规。更少和更小的预路由保持违规有助于route_design
专注于Fmax而不是固定保持时间如果WHS大于0.5 ns,则执行route_design
和report_timing_summary
命令。 - Post-Routing (WNS <0ns或WHS <0 ns)
后路由阶段(如果WNS小于0 ns或WHS小于0 ns)在route_design
之后,首先通过查看日志文件或在路由后设计检查点上运行report_route_status
来验证设计是否完全路由。路由违规和大设置(WNS)或保持(WHS)违规是高拥塞的结果。使用课程后面讨论的以下主题来确定和实施解决步骤,例如:(1)分析设置违规
(2)解决hold违规
(3)减少拥塞技术
4.时序违规的根本原因
-
减少逻辑延迟
Vivado Design Suite的实现首先关注最关键的路径,这通常会使不那么困难的路径在放置或路由之后变得至关重要。我们建议在合成或
opt_design
之后识别和改进最长路径,因为它将对QoR产生最大的影响,并且通常会显着减少位置和路径迭代的次数以达到定时关闭。 -
减少净延迟
优化网络延迟是一个具有挑战性的设计或不适当的限制,对placer和路由器算法的结果。
-
确定拥堵
如果关键路径被放置在拥塞区域的内部或旁边,或者如果设备利用率很高并且放置的设计很难路由,则设备拥塞可能会导致难以定时关闭。在许多情况下,拥塞将显著增加路由器的运行时间。如果路径显示的路由延迟比预期的要长,我们建议分析设计的拥塞并确定最佳的拥塞缓解技术。
-
减少时钟偏差
为了满足高扇出时钟、短传播延迟和低时钟倾斜等要求,我们的设备使用专用路由资源来支持最常见的时钟方案。时钟偏差会严重减少高频时钟的时序预算。当设备利用率很高时,时钟偏差还会给实现工具带来过大的压力,以满足设置和保持的要求。
- 减少时钟不确定性
时钟不确定度是相对于理想时钟的不确定度。不确定性可以来自用户指定的外部时钟不确定性(set_clock_uncertainty)、系统抖动或占空比失真。如果使用多个相关时钟,时钟修改块(如MMCM和PLL)也会以离散抖动和相位误差的形式导致时钟不确定性。时钟向导为指定设备提供准确的不确定度数据,并可以生成各种MMCM时钟配置,用于比较不同的时钟拓扑。为了实现目标体系结构的最佳结果,我们建议使用clock Wizard重新生成时钟生成逻辑,而不是使用来自先前体系结构的遗留时钟生成逻辑。
如果难以实现定时闭包,或者试图提高应用程序的整体性能,则必须在运行合成之后以及在实现流的任何步骤之后检查设计的主要特征。QoR分析通常要求您同时查看几个全局和局部特征,以确定设计和约束中的次优部分,或者哪个逻辑结构不适合目标设备体系结构和实现工具。这可以使用
report_design_analysis
命令来完成。该命令提供有关定时路径特征、设计互连复杂性和拥塞的信息。
5.使用QoR评估报告
使用此报告可以快速检查您的设计。该报告将关键设计和约束指标与指导限制进行了比较不符合指导方针的度量被标记为REVIEW
运行有限数量的方法检查(来自report_methodology),以确保QoR建议的有效性有稳定的基础
此表详细说明了引用运行生成策略所需的指令
堵塞可以由多种因素引起,是一种复杂的问题并不总是有一个直接的解决方案。复杂性和拥塞具有相同的解决技术。检查复杂模块是否放置在设备的拥塞区域。report_design_analysis拥塞报告帮助您识别拥塞区域和拥塞窗口中包含的顶级模块。
6.解决拥塞问题
堵塞可以由多种因素引起,是一种复杂的问题并不总是有一个直接的解决方案。复杂性和拥塞具有相同的解决技术。检查复杂模块是否放置在设备的拥塞区域。report_design_analysis
拥塞报告帮助您识别拥塞区域和拥塞窗口中包含的顶级模块。
7.合理布局布线
堆叠硅互连,或SSI技术器件,由多个超级逻辑区域组成,由中间层连接。中间连接称为超长线路,简称sll。当从一个单反到另一个单反时,会有一些延迟惩罚。为了最大限度地减少超长线路延迟对设计的影响,我们建议进行平面规划,使单反交叉点不属于关键路径的一部分,或者通过平面规划来最大限度地减少超级逻辑区域交叉点。在一个单反内保持一个Pblock也可以提高设计的时序和路由可达性。对于高性能设计,在主要层次结构之间进行充分的管道化,以简化全局布局和SLR分区。单反交叉点也可以随运行而变化。创建与时钟区域对齐并位于SLR边界的额外p块,以约束交叉触发器。我们建议使用CLOCKREGION范围而不是LAGUNA范围用于slr交叉pblock。
SSI由多个单反组成,由一个中介器连接为了尽量减少超长线路(SLL)延迟对设计的影响:
平面图的设计,使单反交叉点不是关键路径的一部分通过平面规划
- 尽量减少超逻辑区域(SLR)交叉
- 在一个单反中只保留一个Pblock,也可以提高设计的时序和路由可达性
对于高性能设计:
- 需要在主要层次结构之间建立足够多的管道
- 创建与时钟区域对齐的额外pblock
8.功耗分析与优化
我们要求用户在整个设计流程中估计功耗,使用功率约束顾问,在运行Vivado design Suite功耗分析后审查设计功率分布和控制信号活动,并运行功耗优化以最大限度地降低功耗。
总结
1、时序闭合包括满足所有时序要求的设计
2、计时闭包从编写有效的约束开始,这些约束表示设计将如何在硬件中运行
3、Report_design_analysis
和report_qor
提供了设计的逻辑、时序和物理特征
4、设备拥塞可能会导致难以定时关闭
5、我们提供多种方法来远程调试设计(hw_server, XVC, Smart LYNQ)