静态时序分析:静态时序分析的原理及其两种模式PBA、GBA

相关阅读

静态时序分析icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482


        静态时序分析有两种模式:PBA(Path Based Analysis)和GBA(Graph Based Analysis),PBA是基于路径的分析模式而GBA则是基于图的分析模式。在Design Compiler中,时序分析是使用GBA模式;而在PrimeTime中,既可以使用默认的GBA模式也可以使用PBA模式进行时序分析。下面将详细讨论这两种模式的区别与联系。

        首先我们需要知道一条时序路径是由一条一条的时序弧组成的,而时序弧分为单元内部时序弧(Cell Arc)和线网弧(Net Arc)。Cell Arc指的是从单元的一个输入引脚到一个输出引脚的时序弧而Net Arc指的是单元之间的互连时序弧,下面将举例说明。

图1 一个简单的例子

        图1是一个简单的例子,其中有两个标准单元两输入与门U1和U2。图中一共存在九条时序弧,分别为:输入端口b到U1的输入引脚A的Net Arc、输入端口a到U1的输入引脚B的Net Arc、U1的输入引脚A到U1的输出引脚Y的Cell Arc、U1的输入引脚B到U1的输出引脚Y的Cell Arc、U1的输出引脚Y到U2的输入引脚A的Net Arc、输入端口c到U2的输入引脚B的Net Arc、U2的输入引脚A到U2的输出引脚Y的Cell Arc、U2的输入引脚B到U2的输出引脚Y的Cell Arc、U2的输出引脚Y到输出端口d的Net Arc。

        时序路径是由上面的九条时序弧组成的,时序弧的起点只能是输入端口或寄存器引脚,时序弧的终点只能是输出端口或寄存器输入引脚。因此图1中存在三条时序路径,分别为:

  • 输入端口b到输出端口d的时序路径,它由输入端口b到U1的输入引脚A的Net Arc、U1的输入引脚A到U1的输出引脚Y的Cell Arc、U1的输出引脚Y到U2的输入引脚A的Net Arc、U2的输入引脚A到U2的输出引脚Y的Cell Arc和U2的输出引脚Y到输出端口d的Net Arc这五条时序弧组成。
  • 输入端口a到输出端口d的时序路径,它由输入端口a到U1的输入引脚A的Net Arc、U1的输入引脚A到U1的输出引脚Y的Cell Arc、U1的输出引脚Y到U2的输入引脚A的Net Arc、U2的输入引脚A到U2的输出引脚Y的Cell Arc和U2的输出引脚Y到输出端口d的Net Arc这五条时序弧组成。
  • 输入端口c到输出端口d的时序路径,它由输入端口c到U2的输入引脚B的Net Arc、U2的输入引脚B到U2的输出引脚Y的Cell Arc和U2的输出引脚Y到输出端口d的Net Arc这三条时序弧组成。

        GBA模式和PBA模式决定了在时序分析时,每条时序路径是半独立地进行分析还是完全独立地进行分析,下面我们首先说明时序路径大致是如何分析的。

        用第一条时序路径举例,在Design Compiler进行时序分析时,首先会在输入端口b给出一个理想的上升沿和理想的下降沿(它们是默认的),并将这个翻转沿着时序路径传播,在传播过程中,不在路径中的单元的其他输入引脚需要取一组特定的值以使翻转传播(对于非单调的时序弧,需要取更多组特定的值,因为其在不同情况下有多种单调性),例如对于与门U1,其输入引脚B在进行分析时需要取1;对于与门U2,其输入引脚B在进行分析时也需要取1。传播过程中,要注意各单元时序弧的单调性(见上一章静态时序分析:时序弧以及其时序敏感(单调性)-CSDN博客)由于U1/U2是正单调的,输入端口的上升\下降沿会导致输出的上升/下降沿,因此这条时序路径的翻转情况可能是两种:输入端口b上升沿,一路沿时序路径传播导致输出端口d上升沿;输入端口b下降沿,一路沿时序路径传播导致输出端口d下降沿。注意,这个取值并不一定会真实能取到(即不考虑逻辑),只是为了分析时序路径,例如图2所示的情况。

图2 一个愚蠢的例子

        在图2中分析从输入端口a到输出端口d的时序路径时,U1和U2的B端口根本不可能同时取1,甚至可以发现输出d恒为0(d=abb'),但是Design Compiler依然会傻傻地将输入端口a的上升/下降沿传播至输出端口d并进行时序分析(在这里,我们假设Design Compiler不会对此进行逻辑优化)。

        有了上面的基础,下面我们进入正题。在使用PBA模式分析图1中的第一条时序路径时,假设输入端口b给出理想上升沿(转换时间为0),上升沿翻转沿线网b传播至U1的输入引脚A,此时延迟为0(假设没有线网延迟),转换时间为0(假设没有转换时间衰减)。DC根据单元库中的U1器件的非线性延迟模型(NLDM)查表得出U1的单元延迟(从输入引脚A到输出引脚Y,假设为0.5ns)和输出引脚Y的转换时间(假设为0.1ns),接着上升沿翻转从U1的输出引脚Y传播至U2的输入引脚A,此时延迟为0.5ns,翻转时间为0.1ns,DC根据单元库中的U2器件的非线性延迟模型(NLDM)查表得出U2的单元延迟(从输入引脚A到输出引脚Y,假设为0.4ns)和输出引脚Y的转换时间(假设为0.05ns),最终翻转从U2的输出引脚Y传播至输出端口d。因此这条时序路径的延迟为0.5+0.4=0.9ns,而输出的转换时间为0.05ns。对于输入a是下降沿的情况,也是如此分析。我们可以注意到,第一条时序路径的分析是和其他时序路径无关的,这就是PBA模式的特点。

        在使用GBA模式分析图1中的第一条时序路径时,大部分过程与PBA模式是一样的,但是不同的是,引脚Y的转换时间不只取决于U1的输入引脚A,而是与输入引脚B也有关。假设进行的是最大延迟分析(建立时间),DC会选择引脚A和引脚B导致的最差的转换时间作为Y引脚的转换时间,即Y引脚的上升翻转时间是A引脚的上升沿导致的Y引脚的上升翻转时间和B引脚的上升沿导致的Y引脚的上升翻转时间中最大的那个。对于输入端口b的下降沿在传播时也是如此分析,即Y引脚的下降翻转时间是A引脚的下降沿导致的Y引脚的下降翻转时间和B引脚的下降沿导致的Y引脚的下降翻转时间中最大的那个。B引脚的上升沿和下降沿相关的数据是在输入端口a到输出端口d的时序路径即第二条时序路径的计算中得到的。如果进行的是最小延迟分析(保持时间),DC会选择引脚A和引脚B导致的最好的转换时间作为Y引脚的转换时间。

        如何验证上述原理呢?可以在Design Compiler中使用report_delay_calculation命令报告U1的输入引脚A和B到输出引脚Y的转换时间的计算过程,并使用report_net命令报告线网n即U1的输出引脚Y的转换时间。其实当使用report_net命令时就可以发现,线网n会存储两组上升沿\下降沿转换时间,分别用于建立时间和保持时间的时序分析,即使用GBA模式。而如果是PBA模式,线网n需要为每个输入引脚保存一组上升沿\下降沿转换时间(在此例中是两组),这在线网扇入大时会显著提升分析难度与时间。

        综上所述,GBA模式和PBA模式中,PBA模式更为准确但耗时长(实际上就算是PBA也是保守的,如图2所示的那样),而GBA模式更保守但更快。顺带一提,动态时序分析(时序仿真)才是最准确的时序分析方式。

        

        

   

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android开发 button 按钮点击两次 响应onclick方法

问题 Android开发 button 按钮点击两次 响应onclick方法 详细问题 笔者xml代码 <!-- 一个按钮 --> <Button android:id"id/button1" android:layout_width"wrap_conten…

基于YOLOv8的暗光低光环境下(ExDark数据集)检测,加入多种优化方式---自研CPMS注意力,效果优于CBAM ,助力自动驾驶(二)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍了暗光低光数据集检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析&#xff0c;以及如何优化提升检测性能。 &#x1f4a1;&#x1f4a1;&#x1f4a1;加入 自研CPMS注意力 mAP0.5由原始的0.682提升…

使用CubeMX快速开始STM32微控制器开发

CubeMX是一款由STMicroelectronics提供的集成开发环境&#xff0c;可以帮助开发者快速启动STM32微控制器的开发。屏蔽了底层配置的繁琐&#xff0c;简化了开发流程&#xff0c;减少了开发时间。本文将向您介绍使用CubeMX进行STM32开发的基本步骤&#xff0c;并附上部分示例代码…

2024阿里云GPU服务器租用费用价格表说明

阿里云GPU服务器租用价格表包括包年包月价格、一个小时收费以及学生GPU服务器租用费用&#xff0c;阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡&#xff0c;GPU云服务器gn6i可享受3折优惠&#xff0c;阿里云百科aliyunbaike.com分享阿里云GPU服务器…

数字图像处理实验记录七(彩色图像处理实验)

一、基础知识 经过前面的实验可以得知&#xff0c;彩色图像中的RGB图像就是一个三维矩阵&#xff0c;有3个维度&#xff0c;它们分别存储着R元素&#xff0c;G元素&#xff0c;B元素的灰度信息&#xff0c;最后将它们合起来&#xff0c;便是彩色图像。 这一次实验涉及CMYK和HS…

信息安全省赛杂项题解题思路

task1 直接查看文件属性即可得到 flag task2 载入 HxD 中&#xff0c;搜索 flag 即可得到 task3 也是同样的操作&#xff0c;载入 HxD 中搜索 flag task4 打开题目的压缩包发现被加密了&#xff0c;这个题目的标题提示的很明显&#xff0c;就是四位数加密 四位数加密的 zip…

课时17:本地变量_命令变量

2.2.3 命令变量 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 基本格式 定义方式一&#xff1a;变量名命令注意&#xff1a; 是反引号定义方式二&#xff1a;变量名$(命令)执行流程&#xff1a;1、执行 或者 $() 范围内的命令…

网络设备如何巡检?这些命令必不可少

一、查看交换机的端口使用情况&#xff1a; dis interface brief查看交换机的哪个端口是万兆端口&#xff0c;以及端口状态&#xff0c;那个端口在使用。 如下图&#xff0c;使用这个命令。 其中端口0/0/1与端口0/0/2处于使用中。其它接口没有使用&#xff1b;如果在实际项目…

Excel——合并计算

1.表格的合并计算&#xff08;单张表格/多个表格&#xff09; Q&#xff1a;请统计两个表格中各商品的总销量和总销售额&#xff0c;将结果放置在下方任意位置。 A&#xff1a;选择一个需要将合并计算数据放置区域的空白单元格 选择【数据】——【合并计算】&#xff0c;【函…

【C++】引用与内联

个人主页 &#xff1a; zxctsclrjjjcph 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 引用2.1 引用概念2.2 引用使用场景2.3 引用特性2.4 引用和指针的区别2.5 传值、传引用效率比较2.5.1 值和引用的作为返回值类型的性能比较 3. 内联函数3.1 …

《游戏引擎架构》 -- 学习2

声明&#xff0c;定义&#xff0c;以及链接规范 翻译单元 声明与定义 链接规范 C/C 内存布局 可执行映像 程序堆栈 动态分配的堆 对象的内存布局 kilobyte 和 kibibyte 流水线缓存以及优化 未完待续。。。

Linux Terminator工具: 保存窗口布局 执行默认启动指令

How do I get Terminator to start up with my custom layout? - Ask Ubuntu