时序分析深入必学的时序模型详细讲解

news2025/1/8 16:02:56

目录

一、前言

二、时序建模

2.1 反相器

2.2 线性时序模型

2.3 非线性时序模型

三、时序模块

3.1 组合单元

3.2 时序单元

3.3 同步检查:setup和hold

3.4 异步检查:recovery和removal

3.5  脉冲宽度检查Pulse width check

3.6 传输时延

3.7 状态独立模块

3.8 黑盒模块的接口时序模块

3.9 线传输时延模型

四、参考资料


一、前言

    时序分析工具能够进行时序分析主要是依据时序模型,时序模型主要是通过单元库描述文件中的时序信息来实现,而时序信息是来自详细的实际电路仿真获取。单元库中的单元可以是独立的单元,IO缓冲器或者是复杂的IP核。

二、时序建模

2.1 反相器

    单元时序模块可以为例化的单元在指定的环境中提供精确的时序信息,提供单元的每个时序弧信息。以下图的反相器为例。

 

  反相器的功能是输出与输入相反,输入A为上升沿时,输出Z为下降沿,Tr为输出上升沿时延值,Tf为输出Z的下降沿输出时延值。因为上升沿和下降沿都是非理想的瞬变状态,因此需要一个阈值点作为下降沿和上升沿作为生效点,此处阈值点为高电平Vcc的50%处。

 

      对于反相器,从输入达到阈值,到输出达到阈值处时,总的延时取决于两个因素:输出负载(输出引脚的负载电容)与输入端口位置处转换时间

    负载电容值会直接影响时延,负载电容值越大,时延越大(也即时序线路中fanout越大,延时越大);时延与输入引脚的转换时间也是成正比关系。输出的偏斜skew也是主要取决于输出负载(输出电容),输出电平转换时间也会随输出负载增加,输出端口的负载也可以影响输入端口的偏斜,如下图

 

2.2 线性时序模型

    线性延时模型是最简单的时序模型,模型的输出转换时间是输入转换时间与输出负载电容的线性函数,输出延时D表达式如下:

                                                                D=D0+D1*S+D2*C

D0,D1,D2为常数,S是输入转换时间,C是输出负载电容。线性模型因为不够精确,通常用于预估,更多的模型是复杂的非线性模型。

2.3 非线性时序模型

    大多数的单元库有一张包含了延时值和单元不同时序弧的时序检查表,有一些高级时序模型如CCS,ESCM会提供电流信息。非线性延时模型NLDM的模型表有延时值,输出偏斜以及时序检查信息。

    以反相器的输出端口out到相关联的引脚INP1模型表为例,表格是一个二维数据表,维度包括输入切换时间和输出负载电容,表格的值为延时值。

 

    表格中包含了从引脚INP1到OUT中时序弧在单元上升沿和下降沿两张延时表格,最大切换时间max_transition为1ns,延时值表为3*3的表格,index_1表示输入切换时间,单位ns,index_2为输出电容,单位pf,通过index_1和index_2可以查询对应组合下的时延值。

三、时序模块

3.1 组合单元

    以一个二输入的与门AND为例,时序弧都是正极性,存在4种时延,因此,也存在4个时延表,AND时序模型也属于非线性时延模型。

A->Z:输出上升沿

A->Z:输出下降沿

B->Z:输出上升沿

B->Z:输出下降沿

 

    下面以一个3输入的与非门为例,时序模型为其中的输入引脚INP1到输出引脚OUT的时延表,包含了2个单元时延表cell_rise,cell_fall和2个转换表rise_transition,fall_transition。同时,时钟极性为negative_unate,说明Cell_rise的延时表是对应于输入引脚为下降沿时的转换时间。

 

 

3.2 时序单元

    以下面时序单元的时序弧为例,对于同步输入引脚,如D,SI,SE,将存在setup检查弧(上升沿和下降沿),hold检查弧(上升沿和下降沿);对于异步输入引脚,如CDN,则存在recovery检查弧和removal检查弧。对于触发器输出引脚,则存在时钟CK引脚到输出Q或QN的传输延时弧(上升沿和下降沿)。

 

    所有的同步时序弧是和时钟的激活边沿相关,在时钟的激活边沿中时序单元进行捕获数据。另外,时钟引脚和异步引脚如清零引脚,将会有一个脉冲宽度时序检查,要求时钟的脉冲宽度不能太小。

3.3 同步检查:setup和hold

    数据如果需要在时序单元上传输通过,setup和hold检查是必须的,检查通过说明时钟有效沿到达时数据输入状态是稳定的,并且被有效捕获到。在时钟有效沿到达前数据输入需保持的最小稳定时间即为setup时间,这个时间值为最新的数据输入信号达到阈值(通常为高电平信号电压值的50%)到有效时钟边沿达到阈值(通常也是高电平电压值的50%)的时间间隔。同理,hold时间为时钟有效沿到达后数据输入必须保持稳定的最小时间,hold值为有效时钟边沿达到阈值到最早的数据信号穿过阈值的时间间隔关于setup/hold的详细计算可查看之前的文章“FPGA设计时序分析二、建立/恢复时间”,链接:https://blog.csdn.net/zyp626/article/details/131747290

    以一个触发器的数据引脚D和时钟引脚CK的时序模型如下,对于setup、hold有对应rise,fall的延时表,延时表从数据D转换时间和时钟CK转换时间两个角度进行。如对于D口下降沿,setup约束将会使用setup表中的fall_constraint数据。

 

 

    在一些场景下,hold值可能是负值,如在上述时序模型中的hold_rising中,这主要发生在从触发器到内部数据锁存点的时延大于时钟路径时延就会出现。因此,负的hold值表示触发器的数据引脚先于时钟引脚变化并且仍然满足hold检查,同理,setup为负值表示触发器的数据输入引脚在时钟引脚之后发生改变但仍能满足setup检查。但setup和hold不能都为负值,因为setup值和hold值之和必须是正数。下图中hold为负值,因为setup一定是先于hold出现,图中数据D中空白区域的宽度是数据信号必须稳定的时间,数据D在时钟维持一段时间稳定后在时钟到达前进行了变化。

 

    hold值为负从时钟偏斜的角度看是更加灵活,可以减少对于修复hold违例所需要的缓冲器插入。

3.4 异步检查:recovery和removal

    异步引脚如在同步单元中的异步清零和异步置位,当异步引脚处于活跃状态时,异步引脚控制输出,而不是时钟锁存的输入数据控制输出。recovery时间是在下一个有效时钟沿到达前,一个异步输入引脚控制信号无效后到下一个时钟有效沿到达之前间必须维持稳定的最小时间;removal时间是在有效时钟沿到达后,异步输入引脚中的异步控制信号必须维持稳定的最小时间。

    下图为输入引脚CDN到关联的时钟引脚CK的recovery检查时间表。

 

3.5  脉冲宽度检查Pulse width check

    除了同步和异步时序检查,还有一种检查:输入引脚信号的脉冲宽度检查,检查的主要是时钟信号。如果时钟信号的脉冲宽度小于指定的最小值,由于时序单元本身有建立时间和保持时间,因此,时钟信号必须也保持有一定的宽度,再是如果脉宽太小,在组合逻辑路径传播过程中会不断被削弱从而导致失真。

    脉冲宽度检查可以指定是对于同步还是异步引脚,同时也可以指定对于高脉冲或低脉冲。下图中指定了引脚CDN中脉冲宽度检查,为低脉冲检查。

 

3.6 传输时延

    时序单元的传输时延是从时钟的有效沿开始到输出的上升沿或下降沿之间的时间。以一个下降沿有效的触发器的时钟引脚CKN到输出引脚Q为例。因为时序感知是non_unate,所以时钟有效沿可以导致输出Q为上升沿或下降沿。

 

 

3.7 状态独立模块

    在很多组合块单元中,输入和输出之间的时序弧取决于块单元中其他输入引脚的状态。这些时序弧可能是单边正极性(positive unate)的,单边负极性(negative unate)的,或者是极性不定的状态。如XOR门的输出可以是单边正极性或单边负极性,输出状态依赖其他输入引脚的状态,对应的时序模块也称为状态独立模块。

    以两输入的异或门XOR为例,在输入A2为逻辑值0时,输入A1到输出Z的时序路径是正极性的。A2为逻辑值1时,输入A1到Z的时序路径负极性的。两个时序模型用状态独立模块表示。

    A2为逻辑值0时,时序模块值如下,function描述了逻辑功能异或,sdf_conf中设定了A2=0,此时时序感知为正极性

 

延时表中index_1为输入偏斜,index_2为输出负载

 

A2为逻辑值0时,时序模块值如下,sdf_conf中设定了A2=1,时序感知为负极性negative_unate

3.8 黑盒模块的接口时序模块

    黑盒接口模块可以有组合时序弧也可以有时序单元的时序弧,通常,这些时序弧都是状态独立的,以下图的设计为例。

 

    输入时序弧用于表示触发器数据输入端口D上的setup或hold时序,通常,在连接到触发器的输入端口D前会存在一个组合逻辑,对DIN端口和时钟端口ACLK进行setup检查。

    异步输入时序弧和recovery/removal时序约束到触发器的异步输入端口相同,如设计中的ARST于时钟ACLK端口的时序检查。

    输出时序弧和时钟到输出端口时延检查类似,通常,在触发器输出端口到输出模块间存在一个组合逻辑块,如设计中的时钟BCLK到输出端口DOUT间的路径。接口时序模块主要不是为了捕获黑盒内部的时序,主要是为了对接口进行时序分析。

    总结:在一个黑盒模块中存在以下几种时序弧

1)输入端口到输出端口间的组合逻辑路径

2)同步输入端口和相关联的时钟间的setup、hold时序弧

3)异步输入与相关联的时钟间的recovery、removal时序弧

4)从时钟引脚到输出引脚间的输出传输时延

3.9 线传输时延模型

    除了上面介绍的单元内部传输时延和切换时延,单元间的连线传输也存在时延。芯片内部的连线大致分为3类:短线,中长线,长线

    短线用于逻辑门之间或对速度要求不高的连接,通常短线长度小于信号波长,并且短线的时延主要受寄生电容和耦合电容的影响。中长线为模块间互连线,速度要求比短线高,但容易产生电容耦合效应,噪声更大。长线主要是全局的连线,对设计的时延影响较大,因此长线都是使用低电阻率减少信号线的电阻损耗。

    在Vivado的device中,通过colors设置可以让不同的线型不同颜色显示,如下图,长线为绿色,本地先为蓝色。

 

    线负载模型可以用于估算电容,电阻和由于交叉的面积消耗,一个单元块的平均线长和块的大小有密切关系。如下图,不同大小的块不同的线负载模型,同时有不同大小的寄生电容,通常,更小的块电容更小。

 

以上图wlm_conservative为例,线负载模型如下

 

    Resistance是每单位互连线长度的电阻值,capacitance是每单位互连线长度的电容,area是每单位互连线长度的面积消耗,slope是没有在fanout length中指定的fanout数据点的外延斜率。

    线负载模型中fanout与线长length的关系如下图,其他fanout,电容,电阻和平均面积消耗都可通过斜率slope=0.5来推算,在线负载模型中指定了对应的比值,以fanout=8为例。

Length=4.1+(8-5)*0.5=5.6 units

Capacitance=Length*capacitance(1.1)=6.16 units

Resistance=Length*resistance(5.0)=28units

Area=Length*area(0.5)=0.28 area units

 

四、参考资料

书籍《Static Timing Analysis for Nanometer Designs》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一)--环境配置GPU版本

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接:https://github.com/zzhmx/yolov5-tracking-xxxsort.git 如果要配置CPU环境可以看我这篇文章: yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一)…

【安卓基础2】简单控件

🏆作者简介:|康有为| ,大四在读,目前在小米安卓实习,毕业入职。 🏆安卓学习资料推荐: 视频:b站搜动脑学院 视频链接 (他们的视频后面一部分没再更新,看看前面…

[java基础揉碎]this

引出this: 什么是this: java虚拟机会给每个对象分配 this,代表当前对象。 这里的this就是new出来的这个对象 this的本质: this是个引用在堆中指向它自己: this的细节: 访问成员方法: 访问构造器:

【GUI编程】Tkinter之OptionMenu

OptionMenu OptionMenu类是一个辅助类,它用来创建弹出菜单,并且有一恶搞按钮显示它。它非常类似Windows上的下拉列表插件。 如果要获取当前选项菜单的值,你需要把它和一个Tkinter变量联系起来。 def __init__(self, master, variable, val…

SQL防止注入工具类,可能用于SQL注入的字符有哪些

SQL注入是一种攻击技术,攻击者试图通过在输入中注入恶意的SQL代码来干扰应用程序的数据库查询。为了防止SQL注入,你需要了解可能用于注入的一些常见字符和技术。以下是一些常见的SQL注入字符和技术: 单引号 ​: 攻击者可能会尝试…

中国 AI 开课速度直逼美国 AI 颠覆性创新速度

原文链接: 中国 AI 开课速度直逼美国 AI 颠覆性创新速度 今日热帖,有网友发帖称:Sora 和 ChatGPT 告诉我们,美国确实是遥遥领先,而且还越拉越远。 是不是遥遥领先暂且不说,但领先我们的确是事实。 主要是…

尚未创建默认 SSL 站点。若要支持不带 SNI 功能的浏览器,建议创建一个默认 SSL 站点。

在 Windows Server 2012 IIS 站点中设置 SSL 证书后,IIS 右上角提示: 尚未创建默认 SSL 站点。若要支持不带 SNI 功能的浏览器,建议创建一个默认 SSL 站点。 该提示客户忽略不管,但是若要支持不带 SNI(Server Name Indication)…

消息中间件-面试题

MQ选择 一、Kafka 1、消息队列如何保证消息可靠性 消息不重复 生产者控制消费者幂等消息不丢失 生产者发送,要确认broker收到并持久化broker确认消费者消费完,再删除消息2、kafka是什么 Kafka是一种高吞吐量、分布式、基于发布/订阅的消息中间件,是Apache的开源项目。broke…

多线程——threading和queue模块的理解。加实例+详解+思路

并发:假的多任务 并行:真的多任务 实现多线程用——threading模块 import threading import timedef shuru():for i in range(1,4):print("正在输入")time.sleep(1) def shuchu():for i in range(1,4):print("正在输出")time.sle…

初阶数据结构之---顺序表和链表(C语言)

引言-线性表 线性表: 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。线性表在逻辑上是线性结构,也就是说是连续的一条直线。但在物理上并不一定是连续的。线性表在物理上…

基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(一)

随着社会的发展和科技的进步,视频监控系统在各个领域的应用越来越广泛,视频云平台建设已经成为了行业数字化转型的重要一环。公安网视频汇聚联网共享云的建设需要充分考虑技术、架构、安全、存储、计算等多方面因素,以确保平台的稳定性和可用…

深度学习图像处理基础

这里写目录标题 分辨率是什么 视网膜屏视网膜屏人眼的视觉视力 像素密度设置合适的PPI,制造视网膜屏 色彩是什么色匹配实验色彩匹配的意义量化色彩匹配白色合为1色度图 总结 HDR光亮度(尼特)灰阶亮度范围HDR显示技术总结 数字图像化概览 人脸…

Excel SUMPRODUCT函数用法(乘积求和,分组排序)

SUMPRODUCT函数是Excel中功能比较强大的一个函数,可以实现sum,count等函数的功能,也可以实现一些基础函数无法直接实现的功能,常用来进行分类汇总,分组排序等 SUMPRODUCT 函数基础 SUMPRODUCT函数先计算多个数组的元素之间的乘积…

German Prepositions

German Prepositions 一, ab and auerhalb1, ab2,auerhalb 二, an三,auf 一, ab and auerhalb 1, ab 2,auerhalb 二, an 静三 动四 时间(节日省略dem) 表近似 三,auf 静三 动四 meas wann 加一段时间 表方式 固定搭…

若依前后端分离版如何集成的mybatis以及修改集成mybatisplus实现Mybatis增强

场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_本地运行若依前后端分离-CSDN博客 SpringBoot中使用PageHelper插件实现Mybatis分页: SpringBoot中使用PageHelper插件实现Mybatis分页-C…

本地创建Git仓库

在 Windows 下,可以通过以下步骤在本地创建一个 并模拟远程Git 仓库。 1、在命令行中打开模拟远程Git 仓库目标文件夹: 打开命令提示符或 PowerShell。例如: 创建裸仓库(模拟远程仓库):创建一个裸仓库&am…

【Flutter】底部导航BottomNavigationBar的使用

常用基本属性 属性名含义是否必须items底部导航栏的子项List是currentIndex当前显示索引否onTap底部导航栏的点击事件, Function(int)否type底部导航栏类型,定义 [BottomNavigationBar] 的布局和行为否selectedItemColor选中项图标和label的颜色否unsel…

Java学习小记——设计模式

设计模式 设计模式简介Singleton模式Singleton模式简介Singleton的创建双重锁模式Double checked locking作为Java类的静态变量 变继承关系为组合关系组合模式装饰器模式 如何创建对象抽象工厂模式 设计模式简介 设计模式(Design pattern)代表了最佳的实…

2024 年了,如何 0 基础开始学习 Vue ?

最近 5 个月,我都在忙着构建我的第一开源项目 HexoPress,这个项目是使用 Electron Vue 3 TypeScript 等技术实现的,一方面,我真的很需要一款合自己心意的博客编辑器,另一方面,我也是真心想学习 Electron …

QT应用软件【协议篇】周立功CAN接口卡代码示例

文章目录 USBCAN系列CAN接口卡规格参数资料下载QT引用周立功的库安装sdk代码USBCAN系列CAN接口卡 USBCAN系列CAN接口卡兼容USB2.0全速规范,可支持1/2/4/8路CAN接口。采用该接口卡,PC机可通过USB连入CAN网络,进行CAN总线数据采集和处理,主要具备以下几大优势特点: 支持车载…