Routing Example Script 2
# Get the nets in the top 10 critical paths, assign to $preRoutes
set preRoutes [get_nets -of [get_timing_paths -max_paths 10]]
# route $preRoutes first with the smallest possible delay
route_design -nets [get_nets $preRoutes] -delay
# preserve the routing for $preRoutes and continue with the rest of the
design
route_design -preserve
在这个示例脚本中,首先对几个关键网络进行路由,然后对整个设计进行路由。它说明了对单个网络和引脚(本例中为网络)进行路由,这通常是为了解决特定的路由问题,例如:
•在完整路由之前预先路由关键网络并锁定资源。
•手动展开非关键网络,为更关键的网络释放路由资源。第一个route_design命令初始化路由器并路由重要的网络,例如时钟。
Routing Example Script 3
# get nets of the top 10 setup-critical paths
set preRoutes [get_nets -of [get_timing_paths -max_paths 10]]
# get nets of the top 10 hold-critical paths
lappend preRoutes [get_nets -of [get_timing_paths -hold -max_paths 10]]
# route $preRoutes based on timing constraints
route_design -nets [get_nets $preRoutes] -auto_delay
# preserve the routing for $preRoutes and continue with the rest of the
design
route_design -preserve
如示例2中所示,首先对几个关键网络进行路由,然后对整个设计进行路由。这个不同之处在于使用了-auto_delay而不是-delay。路由器执行定时驱动关键网络的路由,这牺牲了一些运行时间以获得更高的准确性。尤其是适用于网络同时涉及设置关键路径和保持关键路径的情况,以及路线必须落在延迟范围内,以满足设置和等待要求。
Routing Example Script 4
route_design
# Unroute all the nets in u0/u1, and route the critical nets first
route_design -unroute [get_nets u0/u1/*]
route_design -delay -nets [get_nets $myCritNets]
route_design -preserve
此示例脚本中的策略说明了一种可能的方法来解决由于拥塞在示例设计中,以$myCritNet表示的一些关键网络需要路在与实例u0/u1中的网络相同的设备区域中的资源。u0/u1中的网络不是因此它们被取消路由以允许关键网$myCritNets首先被路由,具有尽可能小的延迟。然后route_design-保留整个设计的路线。-preserve开关保留$myCritNets的路由,而未路由的u0/u1网络被重新路由。表12总结了示例中的命令。
路由器消息
当路由器因拥塞而难以实现定时目标时,它会提供有用的消息或者过度的持有违规固定。当路由器斗争:
•运行时间过多,每次迭代约为小时
•报告的大量重叠,成百上千
•设置和保持松弛逐渐变差,如预计时间所示总结
当发生以下任何情况时,路由器可能会提供进一步的警告消息:
•拥堵预计会对关闭时间产生负面影响,通常发生在拥塞等级为5或更大。等级5表示32x32的拥堵区域(2^5 = 32).
•预计整个路由器保持修复工作将非常高,这将影响满足总体设置要求。
•特定端点引脚既成为设置关键型,又成为保持关键型,这很困难或不可能同时满足两者。该消息包括最多10个引脚的名称以供设计分析此外,路由器还生成一个tight_setup_hold_pins.txt文本文件其中包含端点引脚以及启动和捕获时钟的列表。
提示:使用tight_setup_hold_pins.txt文件中的Pin值,并将以下内容用于从而改善了定时路径。
report_timing -delay_type min_max -nworst 4 -to [get_pins <pin>] -
name timing_set_hold_pin_1
•特定的CLB会经历高引脚利用率或高路由资源利用率,从而导致在局部拥堵中。这些信息将包括多达十个最拥堵的人的名字CLB。
•在严重拥塞的极端情况下,路由器警告拥塞正在阻止路由器从路由所有网络,路由器将优先考虑成功完成路由全网定时优化。当以UltraScale设备或更高版本为目标时,路由器会生成一个表,显示初始估计值拥堵时,拥堵可能会影响定时关闭。该表未显示具体但是给出了用于总体评估的不同类型的拥堵的度量。这个拥塞分为全局(设计范围)、长(跨越几个连接CLB)和短拥塞。可以比较不同运行的表,以确定有更好的机会实现绩效目标,而不会受到太大的负面影响拥塞
INFO: [Route 35-449] Initial Estimated Congestion
________________________________________________________________________
| | Global Congestion | Long Congestion | Short Congestion |
|_____________|________|__________|________|__________|________|__________|
| Direction | Size | % Tiles | Size | % Tiles | Size | % Tiles |
|___________ |________|__________|________|__________|________|__________|
| NORTH| 32x32| 0.89| 32x32| 1.00| 32x32| 0.66|
|_____________|________|__________|________|__________|________|__________|
| SOUTH| 16x16| 0.68| 32x32| 0.75| 16x16| 0.53|
|_____________|________|__________|________|__________|________|__________|
| EAST| 4x4| 0.04| 8x8| 0.09| 4x4| 0.10|
|_____________|________|__________|________|__________|________|__________|
| WEST| 8x8| 0.18| 8x8| 0.09| 16x16| 0.50|
|_____________|________|__________|________|__________|________|__________|
报告设计分析提供了复杂性和拥塞分析,可以提供进一步的见解深入了解拥堵的原因和潜在的解决方案。拥堵报告还包括平均初始路由拥塞,与报告的拥塞不完全相同路由器,但可以根据预路由设计进行分析,以确定哪些区域是造成问题。有关报表设计分析的更多信息,请参阅Vivado设计套件用户指南:设计分析和闭合技术(UG906)。
中间路线结果
即使路由失败,路由器也会继续并尝试提供一个完整的设计可能有助于调试。如果路由不完整,则可能需要手动干预。
使用report_route_status命令可以识别存在路由错误的网络。了解更多有关信息,请参阅《FPGA和SoC的超快设计方法指南》中的“路由”一节(UG949)。
路由器在路由确定过程中报告路由拥塞。最拥堵的地区是为每个方向(北、东、南和西)列出。对于每个地区,信息包括布线瓦片中的尺寸、标记为“Max Cong”的布线利用率以及边界框坐标(左下角到右上角)。“INT_xxx”数字是坐标在设备路由资源视图中可见的互连路由瓦片的
有关Tcl报告命令及其选项的完整描述,请参阅Vivado《设计套件Tcl命令参考指南》(UG835)。