首页 > 其他分享 >使用Vivado Design Suite进行物理优化(二)

使用Vivado Design Suite进行物理优化(二)

时间:2024-04-11 11:04:27浏览次数:18  
标签:opt design en phys pipeline Vivado Design Suite 优化

物理优化是对设计的negative-slack路径进行时序驱动的优化。而phys_opt_design 命令是用于对设计进行物理优化。这个命令可以在布局后的后置模式(post-place mode)中运行,也就是在放置所有组件之后;还可以在完全布线后的后置模式(post-route mode)中运行,即在设计完全布线之后。

一、phys_opt_design

phys_opt_design 语法

phys_opt_design [-fanout_opt] [-placement_opt] [-routing_opt] [-slr_crossing_opt] [-rewire] [-insert_negative_edge_ffs]
 [-critical_cell_opt] [-dsp_register_opt] [-bram_register_opt] [-uram_register_opt] [-bram_enable_opt] [-shift_register_opt]
 [-hold_fix] [-aggressive_hold_fix] [-retime] [-force_replication_on_nets <args>] [-directive <arg>]
 [-critical_pin_opt] [-clock_opt] [-path_groups <args>] [-tns_cleanup] [-sll_reg_hold_fix] [-quiet] [-verbose]

phys_opt_design脚本示例:

open_checkpoint top_placed.dcp

phys_opt_design
write_checkpoint -force $outputDir/top_placed_phys_opt.dcp
report_timing_summary -file $outputDir/top_placed_phys_opt_timing.rpt

route_design
write_checkpoint -force $outputDir/top_routed.dcp
report_timing_summary -file $outputDir/top_routed_timing.rpt

phys_opt_design
write_checkpoint -force $outputDir/top_routed_phys_opt.dcp
report_timing_summary -file $outputDir/top_routed_phys_opt_timing.rpt

该phys_opt_design示例脚本会依次执行布局后的物理优化和布线后的物理优化。首先,从检查点(checkpoint)中加载已布局的设计,然后执行布局后的phys_opt_design物理优化。在优化完成后,保存检查点和时序结果。

接下来,对设计进行布线,并在布线过程中保存进度。布线完成后,执行布线后的phys_opt_design物理优化。最后,保存优化结果。

需要注意的是,无论是布局后还是布线后的物理优化,都使用了相同的phys_opt_design命令。在脚本中并没有显式地使用任何选项来指定模式(即布局后或布线后)。这意味着工具可能通过其他方式(比如检查点的状态或者设计数据库中的信息)来自动判断当前应该执行哪种类型的物理优化。
-verbose 选项
为了更好地分析物理优化的结果,可以使用 -verbose 选项来查看 phys_opt_design 命令执行的优化操作的额外细节。由于可能会产生大量的额外消息,这可能会使日志或控制台输出变得难以管理,-verbose 选项默认是关闭的。
另外,由于 phys_opt_design 命令是直接在内存中的设计上操作,每次运行都会基于当前的设计状态进行优化。因此,如果连续运行该命令多次,后一次运行将基于前一次运行的结果进行优化,而不是基于原始设计。这意味着每次优化都会累积之前优化的效果,可能会导致设计逐渐趋近于更理想的物理布局和布线。

二、物理优化约束

Vivado Design Suite在物理优化过程中会尊重 DONT_TOUCH 属性。它不会对具有这些属性的nets或cells进行物理优化。为了加速网络选择过程,具有 DONT_TOUCH 属性的nets会被预先过滤,并且不会被考虑进行物理优化。此外,Pblock 分配也会被遵守,这样复制的逻辑会继承原始逻辑的 Pblock 分配。时序异常也会从原始cells复制到复制的cells。
DONT_TOUCH 属性通常被放置在leaf cells上,以防止它们被优化。如果在一个hierarchical cell 上设置 DONT_TOUCH,则会保留cells的边界,但cells内部仍然可以进行优化。
工具会自动给那些 MARK_DEBUG 属性值为 TRUE 的nets添加值为 TRUE 的 DONT_TOUCH 属性。这样做是为了在整个实现流程中保持nets的完整性,以便在任何设计阶段都可以对其进行探测。这是 MARK_DEBUG 的推荐用法。然而,在极少数情况下,DONT_TOUCH 可能会过于限制,并阻止诸如复制和重定时等优化,从而导致时序收敛更加困难。在这些情况下,可以将 DONT_TOUCH 设置为 FALSE,同时保持 MARK_DEBUG 为 TRUE。移除 DONT_TOUCH 属性的后果是,具有 MARK_DEBUG 的nets可能会被优化掉,从而无法再被探测。如果 MARK_DEBUG nets被复制,只有原始nets会保留 MARK_DEBUG,复制的nets则不会。

三、物理优化报告

Tcl 报告命令 report_phys_opt 提供了 phys_opt_design 执行的每个优化的详细细节。它必须在与 phys_opt_design 相同的 Vivado 会话中运行,并且优化历史必须驻留在内存中。因此,如果需要报告,建议将 report_phys_opt 命令包含在 Tcl 脚本中,紧跟在最后一个 phys_opt_design 命令之后。
这些报告仅适用于布局后的 phys_opt_design 优化。报告是累积的,反映了所有 phys_opt_design 优化,包括多次运行 phys_opt_design 的结果。以下报告示例显示了涉及名为 pipeline_en 的寄存器的一个扇出优化的第一条记录。报告中显示了以下详细信息:
在这里插入图片描述
1、原始驱动器 pipeline_en 驱动了 816 个负载,并且包含这个高扇出网络的路径在时序上失败,最差负时序裕量(WNS)为 -1.057 ns。
2、驱动器 pipeline_en 被复制以创建一个新单元,名为 pipeline_en_replica。
3、816 个负载在 pipeline_en_replica 和原始驱动器 pipeline_en 之间被分配,其中 pipeline_en_replica 承担 386 个负载,原始驱动器 pipeline_en 承担剩余的 430 个负载。
4、在复制并布局 pipeline_en_replica 之后,pipeline_en_replica 路径的 WNS 为 +0.464 ns,而 pipeline_en 路径的 WNS 降低到零。
5、基于其减少的负载集合的位置,原始驱动器 pipeline_en 的放置位置被更改以改善 WNS。
这些详细的报告信息有助于我们理解优化过程,分析优化效果,并可能指导进一步的优化策略。

标签:opt,design,en,phys,pipeline,Vivado,Design,Suite,优化
From: https://blog.csdn.net/u011565038/article/details/137557429

相关文章

  • Burp Suite Professional 2024.3.1 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
    BurpSuiteProfessional2024.3.1formacOSx64&ARM64-领先的Web渗透测试软件世界排名第一的Web渗透测试工具包请访问原文链接:BurpSuiteProfessional2024.3.1formacOSx64&ARM64-领先的Web渗透测试软件,查看最新版。原创作品,转载请保留出处。作者主页:sysin......
  • Burp Suite Professional 2024.3.1 for Windows x64 - 领先的 Web 渗透测试软件
    BurpSuiteProfessional2024.3.1forWindowsx64-领先的Web渗透测试软件世界排名第一的Web渗透测试工具包请访问原文链接:BurpSuiteProfessional2024.3.1forWindowsx64-领先的Web渗透测试软件,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpS......
  • Burp Suite Professional 2024.3.1 (macOS, Linux, Windows) - Web 应用安全、测试和
    BurpSuiteProfessional2024.3.1(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:BurpSuiteProfessional2024.3.1(macOS,Linux,Windows)-Web应用安全、测试和扫描,查看最新版。......
  • 结合 tensorflow.js 、opencv.js 与 Ant Design 创建美观且高性能的人脸动捕组件并发
    系列文章目录如何在前端项目中使用opencv.js|opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js如何从public路径加载人脸特征点检测模型tensorflow.js如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图tensorflow.js使用opencv.js将人......
  • TQZC706开发板教程:使用Vivado和Vitis烧写flash
    本文所使用的文件链接:https://pan.baidu.com/s/1ZqjfJMZasteJDfZ9qcKAFQ提取码:peqa无论采用何种方式烧写Flash,都务必准备好相应的烧写文件。我在上面的链接中已提供了测试文件供您参考。烧写Flash时通常需要两个文件:BOOT.bin和zynq_fsbl.elf,请确保您已备齐这两个文件,以便......
  • 【计算机控制网络 Computer Control Network】组网设计作业 Enterprise Network Desig
    一、说明1、仅为本人的作答,非标准答案;2、题目版权归校方和教授所有。二、题目描述p1:p2:三、完整作答p1:p2:p3:p4:p5:p6:p7:p8:p9:p10:p11:p12:p13:p14:p15:p16:p17:p18:p19:......
  • vivado 使用“Set Up Debug”Wizard 来插入调试核
    使用“SetUpDebug”Wizard来插入调试核标记要调试的信号线(net)后,下一步是将其分配到调试核。VivadoDesignSuite提供了易于使用的“设置调试(SetupDebug)”Wizard,以帮助逐步指导您完成自动创建调试核并将调试信号线分配至核的输入的整个过程......
  • vivado 探针用作为数据和/或触发器、使用 XDC 命令来插入调试核
    您可在Vivado硬件管理器中自定义探针,将其用作为数据和/或触发器。如果探针参与触发或采集比较值,则应将其配置为仅限“触发器”探针。这样即可最优化ILA核使用BRAM的方式。通常,如需采集探针数据,则应将其配置为仅限“数据”探针。如果探针同时参......
  • Vite+Vue3.0项目使用ant-design-vue <a-calendar>日期组件汉化
    antd的弹框、日期等默认为英文,要把英文转为中文请看下文:1.首先我们要在main.js中引入ant-design组件库并全局挂载:importAppfrom'./App'importAntdfrom'ant-design-vue';import'ant-design-vue/dist/antd.css';constapp=createApp(App);app.use(Antd);2.然......
  • Power Designer16.5的一些问题及解决方法
    安装及破解可以参考这篇另一位博主的文章PowerDesigner安装详细教程-CSDN博客问题一:如何打开被关闭的工具箱之前笔者曾参考过一些在view里面直接勾选的方法,但因为powerdesigner版本不同不适用对于16.5版本应该采用的方法是鼠标右键单击红圈区域(即灰色部分)单击后出现......