路由
Vivado路由器对放置的设计执行路由,并对路由设计,以解决保留时间冲突。Vivado路由器从放置的设计开始,并尝试路由所有网络。它可以从已放置的未布线、部分布线或完全布线的设计。对于部分路由的设计,Vivado路由器使用现有的路由作为起点,而不是从头开始。对于完全路由的设计,路由器检查定时冲突并且尝试重新路由关键部分以满足定时。
注:重新布线过程通常被称为"撕裂和重新布线"路由器提供了路由整个设计或路由单个网络和引脚的选项。当对整个设计进行布线时,流程是定时驱动的,使用自动定时预算基于时序约束。可以使用两种不同的模式对单个网络和引脚进行布线:
•交互式路由器模式
•自动延迟模式
交互式路由器模式使用快速、轻量级的时序建模,在交互式会话。由于估计的延迟为悲观的在这种模式下,时间限制被忽略,但有几种选择影响路由:
•基于资源的路由(默认):路由器从可用的路由资源中进行选择,从而产生最快的路由器运行时间。
•最小延迟(-delay选项):路由器试图实现尽可能小的延迟从可用的路由资源。
•延迟驱动(-max_Delay和-min_Delay选项):指定时间要求基于最大延迟、最小延迟或两者。路由器尝试使用符合规定要求的延迟。
在自动延迟模式下,路由器运行具有自动定时预算的定时驱动流基于时间约束,但与默认流不同,只有指定的网络或引脚路由。此模式用于在路由的其余部分之前路由关键网络和引脚设计这包括设置关键型、保持关键型或两者兼有的网络和引脚。自动延迟模不用于在包含大量路由的设计中路由单个网络。应改为使用交互式路由。为了在路由多个单独的网络和引脚时获得最佳结果,请对这些网络和引脚进行优先级排序和路由个别地。这避免了对关键路由资源的争用。路由需要一次性"运行时命中"进行初始化,即使在编辑网络和引脚。初始化时间随着设计的大小和设备的大小而增加。除非关闭并重新打开设计,否则不需要重新初始化路由器。
设计规则检查
在开始布线之前,Vivado工具运行设计规则检查(DRC),包括:
•用户从report_drc中选择的drc
•Vivado路由器引擎内部的内置DRCs
路由优先级
Vivado Design Suite首先路由全局资源,如时钟、重置、I/O和其他专用资源。此默认优先级内置于Vivado路由器中。然后路由器对数据信号进行优先级排序根据时序关键性。时间限制不佳的影响路由后定时冲突有时是不正确的定时约束的结果。在尝试路由器设置之前,请确保已验证约束以及路由器看到的定时画面。通过审查时间来验证时间和约束条件在布线之前从已放置的设计中报告。
时间限制不佳影响的常见例子包括:
•正保持时间要求导致的交叉时钟路径和多周期路径路由延迟插入
•拥挤的领域,可以通过RTL合成中的有针对性的扇出优化来解决,或者通过物理优化
建议:审查时间限制并更正无效的限制(或考虑RTL更改)在探索多个路由选项之前。有关更多信息,请参阅检查您的设计《FPGA和SoC的超快设计方法指南》(UG949)中的适当约束。
路由器定时摘要
在路由过程结束时,路由器报告计算的估计时序摘要使用实际的路由延迟。然而,为了提高运行时间,路由器使用增量计时更新而不是进行完整的定时计算来计算定时摘要。因此,估计的WNS可能比实际定时更悲观(几ps)。它是因此路由器WNS可能是负的,而实际WNS是正的。如果路由器报告估计的WNS为负,该消息是警告,而不是严重警告。
提示:当您运行route_design-directive Explore时,路由器时序摘要基于签字时间。
重要!您必须使用report_timing_summary检查实际注销时间,或者运行带有-timing_summary选项的route_design。
路线_设计
route_design命令在设计上运行布线。
route_design Syntax
route_design [-unroute] [-release_memory] [-nets <args>]
[-physical_nets] [-pins <arg>]
[-directive <arg>] [-tns_cleanup]
[-no_timing_driven] [-preserve]
[-delay] [-auto_delay] [-max_delay <arg>]
[-min_delay <arg>] [-timing_summary] [-finalize]
[-ultrathreads] [-eco]
[-quiet] [-verbose]
使用指令
在路由整个设计时,指令为route_design命令。一次只能指定一个指令。指令选项为与大多数其他选项不兼容,以防止发生冲突的优化。以下内容指令可用:
•探索:允许路由器在初始路由后探索不同的关键路径位置。
•积极探索:指导路由器进一步扩大对关键路径的探索路线,同时保持原始时间预算。路由器运行时可能显著与Explore指令相比更高,因为路由器使用了更激进的优化阈值以尝试满足时序约束。
•无定时放松:防止路由器放松定时以完成路由。如果路由器很难满足时间要求,它运行的时间更长,试图满足原始时间要求约束。
•MoreGlobalIterations:在所有阶段使用详细的时间分析,而不仅仅是最后阶段,并运行更多的全局迭代,即使时间只略有改善。
•HigherDelayCost:调整路由器的内部成本函数以强调延迟在迭代中,允许在编译时间和更好的性能之间进行权衡。
•运行时间优化:运行最少的迭代,用更高的设计性能换取更快的运行时间
•AlternateCLBRouting:选择需要额外运行时间的备用路由算法但是可以帮助解决路由拥塞。
•快速:绝对、最快的编译时间,非定时驱动,执行所需的最低要求合法的设计。
•默认:使用默认设置运行route_design。
•RQS:指示route_design选择report_qor_advancement指定的指令战略建议。要求在调用此指令。
交易编译时间以获得更好的路由
以下指令是利用编译时间进行交易以获得更好路由的方法后果
•不定时放松
•更多全局迭代
•延迟成本更高
•高级倾斜建模
•积极探索