vivado 详细布局、布局后优化

详细布局

详细放置将设计从初始全局放置带到完全放置的设计,通常从最大的结构(用作良好的锚)开始,一直到最小的。细节放置过程从放置大型宏开始,例如多列URAM、块RAM和DSP块阵列,然后是LUTRAM阵列宏,以及较小的宏,如用户定义的XDC宏。迭代逻辑布局以优化线路长度、时序和拥塞LUT-FF对被封装到具有额外约束的CLB中,这些约束在CLB必须共享公共控制集。

布局后优化

在分配完所有逻辑位置后,Post Placement Optimization执行最终改善时间安排和拥堵的步骤。其中包括改进关键路径布局复制,以及可选的BUFG插入阶段。在BUFG复制阶段,BUFG驱动跨越多个SLR的网络将为每个SLR接收它们自己的BUFG驱动程序。优化将在放置或布线冲突的情况下跳过,这些约束将阻止复制或定时降级。在BUFG插入阶段,放置器可以路由高扇出net,以释放结构路由资源。高扇形网(扇形>UltraScale和UltraScale+为1000,Versal为扇出>1000)驱动控制信号对于该优化考虑大于1.0ns的松弛。负载分为临界载荷和高正松弛载荷。高正松弛负载通过BUFGCE,放置在离原始驾驶员最近的可用场地,而关键负载仍然连接到原始驱动器。只有在没有时序退化。如果优化需要网表编辑,也会跳过优化失败。BUFG Insertion默认情况下处于启用状态,可以使用-no_BUFG_opt选项禁用。

建议:放置后运行report_timing_summary以检查关键路径。路径对于非常大的负设置松弛,可能需要逻辑重组、物理优化或布图规划以实现定时关闭。

地点设计

place_design命令在设计上运行放置。与其他实施方式一样命令,place_design本质上是可重入的。对于局部放置的设计,Vivadoplacer使用现有的放置作为起点,而不是从头开始。

place_design Syntax
place_design [-directive <arg>] [-no_timing_driven] [-timing_summary]
[-unplace] [-post_place_opt] [-no_psip] [-no_bufg_opt]
[-ultrathreads]
[-quiet] [-verbose]
place_design Example Script
# Run placement, save results to checkpoint, report timing estimates
place_design
write_checkpoint -force $outputDir/post_place
report_timing_summary -file $outputDir/post_place_timing_summary.rpt

place_design示例脚本将设计放入内存中。然后写一个设计完成放置后的检查点,生成时间摘要报告,并写入报告到指定的文件。

使用指令

指令为place_design命令提供了不同的行为模式。只有一个一次可以指定指令。指令选项与具有的其他选项不兼容-no_fanout_opt、-no_bufg_opt、-quiet和-verbose除外。使用-指导选项,探索您的设计的不同放置选项。

Placer指令

因为放置通常对整体设计性能影响最大,所以Placer具有所有命令中最多的指令。下表显示了哪些指令可能受益于哪种类型的设计。

可用指令

•探索:在细节布局和布局后优化方面投入更多精力。

•WLDrivenBlockPlacement:RAM和DSP块的线长驱动放置。以(权力)否决定时驱动的放置,通过指示放置器将连接到的距离最小化以及来自块。该指令可以改善RAM和DSP块之间的定时。

•EarlyBlockPlacement:RAM和DSP块的定时驱动放置。RAM和DSP块位置在放置过程的早期确定,并用作放置的锚点剩下的逻辑。

•ExtraNetDelay_high:增加高扇出和长距离网络的估计延迟。这指令可以改进关键路径的定时,这些路径在place_design之后满足定时但失败由于过于乐观的估计延迟,route_design中的定时。悲观情绪有两个层次支持:高和低。ExtraNetDelay_high应用了最高级别的悲观情绪。

•ExtraNetDelay_low:增加高扇出和长距离网络的估计延迟。这指令可以改进关键路径的定时,这些路径在place_design之后满足了定时,但是route_design中由于过于乐观的估计延迟而导致的故障定时。两个级别悲观情绪得到支持:高和低。ExtraNetDelay_low应用最低级别的悲观

•SSI_SpreadLogic_high:将逻辑分布在SSI设备中,以避免造成拥塞区域。支持两个级别:高和低。SpreadLogic_high达到最高级别传播。

•SSI_SpreadLogic_low:将逻辑分布在SSI设备中,以避免造成拥塞区域。支持两个级别:高和低。SpreadLogic_low实现了最低级别的传播。

•AltSpreadLogic_high:将逻辑扩展到整个设备,以避免造成拥塞区域。支持三个级别:高、中、低。AltSpreadLogic_high实现最高水平的传播。

•AltSpreadLogic_mediaum:将逻辑扩展到整个设备,以避免造成拥塞区域。支持三个级别:高、中、低。AltSpreadLogic_mediaum实现名义上的传播水平。

•AltSpreadLogic_low:将逻辑扩展到整个设备,以避免创建拥塞区域。支持三个级别:高、中、低。AltSpreadLogic_low实现最小传播水平。

•ExtraPostPlacementOpt:放置者在放置后优化方面付出的努力更大。

•ExtraTimingOpt:在后期阶段。

•SSI_SpreadSLLs:在SLR之间进行分区,并为更高的区域分配额外的区域连通性

•SSI_BalanceSLLs:在尝试平衡SLR之间的SLL时,在SLR之间进行分区。

•SSI_BalanceSLR:在SLR之间进行分区,以平衡SLR之间的单元数量。

•SSI_HighUtilSLR:强制放置程序尝试在每个SLR中更紧密地放置逻辑。

•运行时间优化:运行最少的迭代,用更高的设计性能换取更快的运行时间

•快速:绝对、最快的运行时间,非定时驱动,执行法律设计。

•默认:使用默认设置运行place_design。

•RQS:指示place_design选择report_qor_advancement指定的指令战略建议。要求在调用此指令。

自动指令

当结束具有挑战性的设计时,用户可能会选择运行许多不同的place_design指令,以便选择最佳计时结果。自动指令使用机器学习预测要运行的最佳指令。用户可以通过仅运行这些指令而受益而不是“可用指令”中列出的全部指令。

指令的机器学习预测有一定的误差。因此建议运行3个Auto_n指令并获得最佳结果。预测的指令是等效于“可用指令”中提到的指令,因此运行auto没有任何好处除此之外的指令。该工具选择的指令会在日志文件中报告。一消息示例如下:

INFO: [Place 30-1947] Predicted directive using ML models is:
EarlyBlockPlacement

要启用该功能,请设置place_design-directive<value>,其中value为:

•Auto_1:高性能预测指令

•Auto_2:第二好预测指令

•Auto_3:第三好预测指令

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值