使用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。
这些详细的报告信息有助于我们理解优化过程,分析优化效果,并可能指导进一步的优化策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/533326.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【oracle数据库安装篇一】Linux5.6基于LVM安装oracle10gR2单机

说明 本篇文章主要介绍了Linux5.6基于LVM安装oracle10gR2单机的配置过程&#xff0c;比较详细&#xff0c;基本上每一个配置部分的步骤都提供了完整的脚本&#xff0c;安装部分都提供了简单的说明和截图&#xff0c;帮助你100%安装成功oracle数据库。 安装过程有不明白的地方…

爬虫学习第一天

爬虫-1 爬虫学习第一天1、什么是爬虫2、爬虫的工作原理3、爬虫核心4、爬虫的合法性5、爬虫框架6、爬虫的挑战7、难点8、反爬手段8.1、Robots协议8.2、检查 User-Agent8.3、ip限制8.4、SESSION访问限制8.5、验证码8.6、数据动态加载8.7、数据加密-使用加密算法 9、用python学习爬…

Flody算法求解多源最短路问题

Flody算法求解多源最短路问题 蓝桥公园 #include <bits/stdc.h> using namespace std; #define int long long const int N409; int n,m,q,d[N][N]; signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>m>>q;memset(d,0x3f,sizeof…

mac 配置前端开发环境brew,git,nvm,nrm

我的电脑是mac 3 pro 一、配置Homebrew 打开终端&#xff0c;执行指令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"查看版本 brew -v 安装nvm brew install nvm 再执行 brew reinstall nvm 我这边安装好了…

云服务器上Docker启动的MySQL会自动删除数据库的问题

一、问题说明 除了常见的情况&#xff0c;例如没有实现数据挂载&#xff0c;导致数据丢失外&#xff0c;还需要考虑数据库是否被攻击&#xff0c;下图 REVOVER_YOUR_DATA 就代表被勒索了&#xff0c;这种情况通常是数据库端口使用了默认端口&#xff08;3306&#xff09;且密码…

Coding and Paper Letter(八十九)

CPL之第八十九期。 1 Coding: 1.openai通用代理转换是一个用于将其他厂商服务转为openai 标准接口相应的工具. 通过该工具, 可以将其他厂商的服务转为openai 标准接口. 讯飞星火,通义千问,gemini,openai,copilot,double&#xff0c;kimi&#xff0c;智谱清言 使用spring2webf…

Qt——示波器/图表 QCustomPlot

一、介绍 QCustomPlot是一个用于绘图和数据可视化的Qt C小部件。它没有进一步的依赖关系&#xff0c;提供友好的文档帮助。这个绘图库专注于制作好看的&#xff0c;出版质量的2D绘图&#xff0c;图形和图表&#xff0c;以及为实时可视化应用程序提供高性能。QCustomPlot可以导出…

机器学习和深度学习 -- 李宏毅(笔记与个人理解1-6)

机器学习和深度学习教程 – 李宏毅&#xff08;笔记与个人理解&#xff09; day1 课程内容 什么是机器学习 找函数关键技术&#xff08;深度学习&#xff09; 函数 – 类神经网络来表示 &#xff1b;输入输出可以是 向量或者矩阵等如何找到函数&#xff1a; supervised Lear…

【QingHub】EMQX单节点一键部署

EMQX 简介 EMQX是全球最具扩展性的开源MQTT 代理&#xff0c;具有高性能&#xff0c;可在 1 个集群中连接 1 亿多个 IoT 设备&#xff0c;同时保持每秒 100 万条消息的吞吐量和亚毫秒级的延迟。 EMQX 支持MQTT、HTTP、QUIC、WebSocket等多种开放标准协议。它 100% 符合MQTT 5.…

【Linux】tcpdump P3 - 过滤和组织返回信息

文章目录 基于TCP标志的过滤器格式化 -X/-A额外的详细选项按协议(udp/tcp)过滤低详细输出 -q时间戳选项 本文继续展示帮助你过滤和组织tcpdump返回信息的功能。 基于TCP标志的过滤器 可以根据各种TCP标志来过滤TCP流量。这里是一个基于tcp-ack标志进行过滤的例子。 # tcpdump…

大厂MVP技术JAVA架构师培养

课程介绍 这是一个很强悍的架构师涨薪计划课程&#xff0c;课程由专家级MVP讲师进行教学&#xff0c;分为是一个章节进行分解式面试及讲解&#xff0c;不仅仅是面试&#xff0c;更像是一个专业的架构师研讨会课程。课程内容从数据结构与算法、Spring Framwork、JVM原理、 JUC并…

每日Bug汇总--Day03

Bug汇总—Day03 一、项目运行报错 二、项目运行Bug 1、问题描述&#xff1a;Vue前端项目运行后台管理平台订单管理页面下的三个子页面出现点击不同的路由还是会出现相同的页面&#xff0c;导致页面和数据不匹配 解决办法&#xff1a; 在监听器中添加状态来根据路由地址变化…

C++ | Leetcode C++题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isValid(string s) {int n s.size();if (n % 2 1) {return false;}unordered_map<char, char> pairs {{), (},{], [},{}, {}};stack<char> stk;for (char ch: s) {if (pairs.count(ch)) {if (…

【mT5多语言翻译】之六——推理:多语言翻译与第三方接口设计

请参考本系列目录&#xff1a;【mT5多语言翻译】之一——实战项目总览 [1] 模型翻译推理 在分别使用全量参数微调和PEFT微调训练完模型之后&#xff0c;我们来测试模型的翻译效果。推理代码如下&#xff1a; # 导入模型 if conf.is_peft:model AutoModelForSeq2SeqLM.from_pr…

如何设置端口映射?

端口映射是一种网络技术&#xff0c;通过在网络路由器或防火墙上设置规则&#xff0c;将外部网络请求转发到内部特定设备或服务的端口上。这样可以实现不同地区电脑与电脑、设备与设备、电脑与设备之间的信息远程通信&#xff0c;提供更加便捷的网络连接。 2. 天联组网 天联是…

【环境搭建】(五)Ubuntu22.04安装cuda_11.8.0+cudnn_8.6.0

一个愿意伫立在巨人肩膀上的农民...... 设备配置&#xff1a; 一、安装GCC 安装cuda之前&#xff0c;首先应该安装GCC&#xff0c;安装cuda需要用到GCC&#xff0c;否则报错。可以先使用下方指令在终端查看是否已经安装GCC。 gcc --version 如果终端打印如下则说明已经安装…

K8S容器空间不足问题分析和解决

如上图&#xff0c;今天测试环境的K8S平台出现了一个问题&#xff0c;其中的一个容器报错&#xff1a;Free disk space below threshold. Available: 3223552 bytes (threshold: 10485760B)&#xff0c;意思服务器硬盘空间不够了。这个问题怎么产生的&#xff0c;又怎么解决的呢…

性能优化原则

相关链接&#xff1a;【运行环境】加载资源的形式 性能优化 1 性能优化原则 多使用内存、缓存或其他方法 减少CPU计算量&#xff0c;减少网络加载耗时 &#xff08;适用于所有编程的性能优化----空间换时间&#xff09; 2 从何入手 性能优化-让加载更快 减少资源体积&#x…

neo4j-01

Neo4j是&#xff1a; 开源的&#xff08;社区版开源免费&#xff09;无模式&#xff08;不用预设数据的格式&#xff0c;数据更加灵活&#xff09;noSQL&#xff08;非关系型数据库&#xff0c;数据更易拓展&#xff09;图数据库&#xff08;使用图这种数据结构作为数据存储方…

Edge扩展程序上架流程

代码基本同Chrome扩展&#xff0c;无需改动&#xff0c;具体可以参考文档说明 参考官方文档&#xff0c;注册开发者账号&#xff0c;遇到报错可以参考另一篇文章&#xff0c;Microsoft注册问题 注册完毕后&#xff0c;跳转到 developer dashboard&#xff0c;将左侧导航栏选项…