delay 芯片时序output_【第二章 STA概念 上】静态时序分析圣经翻译计划

本文由知乎赵俊军授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19

本章节介绍CMOS技术的基础知识以及执行静态时序分析所涉及的术语。

2.1 CMOS逻辑设计

2.1.1 基本MOS结构

MOS晶体管(NMOS和PMOS)的物理实现如图2-1所示。源极(source)和漏极(drain)区域之间的距离(channel length)是MOS晶体管的长度,用于构建MOS晶体管的最小长度即为CMOS技术工艺的最小特征尺寸(feature size)。例如,0.25um技术允许制造具有0.25um或更大沟道长度的MOS晶体管。 通过缩小沟道的几何形状,晶体管的尺寸会变小,这样就可以在同样的面积上封装更多的晶体管。 正如我们将在后面章节看到的那样,更小的晶体管尺寸同样还可以使设计以更高的速度运行。

5e7bac5c6b66082bea247f1f49c58024.png
图2-1

2.1.2 CMOS逻辑门

CMOS逻辑门使用NMOS和PMOS晶体管搭建而成。图2-2给出了CMOS反相器(inverter)的示例。CMOS反相器有两种稳定状态,具体取决于输入的电平状态。 当输入A为低电平(Vss或逻辑0)时,NMOS晶体管截止,而PMOS晶体管导通,导致输出Z的电平被上拉至逻辑为1的Vdd。当输入A为高电平(Vdd或逻辑1)时,NMOS晶体管导通,而PMOS晶体管截止,导致输出Z的电平被下拉至逻辑为0的Vss。在上述两种状态中的任何一种状态下,CMOS反相器都是稳定的,不会从输入端A或电源Vdd汲取任何电流。

1a04c565adf59dfc51ee897f113b256d.png
图2-2

CMOS反相器的特性可以扩展到任何CMOS逻辑门。在CMOS逻辑门中,输出节点通过上拉结构(由PMOS晶体管构成)连接至Vdd,并通过下拉结构(由NMOS晶体管构成)连接至Vss。例如,图2-3展示了一个两输入CMOS与非门(nand)。在该例中,上拉结构由两个并联的PMOS晶体管组成,下拉结构由两个串联的NMOS晶体管组成。

77cae7851628b163e12cae2ae70ee4f9.png
图2-3

对于任何CMOS逻辑门,上拉和下拉结构是互补的。对于逻辑0或逻辑1的输入,如果上拉结构开启,则下拉结构将关闭;类似地,如果上拉结构关闭,则下拉结构将开启。下拉和上拉结构由CMOS门实现的逻辑功能控制。例如,在CMOS与非门中,控制下拉结构的功能是“”,即当A和B都为逻辑1时下拉被接通。类似地,控制上拉结构的功能是“”,即当A或B处于逻辑0时上拉被打开。这些特性确保了控制上拉结构的功能将输出节点的逻辑上拉至Vdd。由于下拉结构由互补函数控制,因此当上拉结构函数的值为0时,输出节点处于逻辑0。

对于逻辑0或逻辑1的输入,由于上拉和下拉结构不能同时开启,因此处于稳态的CMOS逻辑门不会对输入或电源汲取任何电流。CMOS逻辑的另一个重要方面是,输入仅对前一级构成容性负载。

若CMOS逻辑门是一个反相门,这意味着单个输入的变化(上升或下降)只能使输出往相反的方向改变,也就是说,输出无法与输入同相变化。但是,可以将CMOS逻辑门级联起来以实现更复杂的逻辑功能。

2.1.3 标准单元

芯片中的大多数复杂功能通常是使用基本构建块(basic building block)来设计的,这些基本构建块实现了简单的逻辑功能,例如与、或、与非、或非、或与非,与或非以及触发器(flip-flop)。这些基本构建块是预先设计的,称为标准单元(standard cell)。标准单元的功能和时序已预先确定,可供设计人员使用。然后,设计人员可以使用标准单元作为基本构建块来实现所需的功能。

前面小节中描述的CMOS逻辑门的关键特性适用于所有CMOS数字设计。当输入处于稳定的逻辑状态时,所有数字CMOS单元的设计都能够保证不从电源汲取电流(漏电流除外)。因此,大多数功耗与设计的功能有关,并且是由设计中CMOS单元输入端的充放电引起的。

什么是逻辑1或逻辑0?在CMOS单元中,VIHmin和 VILmax这两个值定义了范围:高于VIHmin的电压值被认为是逻辑1,低于VILmax的电压值被认为是逻辑0。如图2-4所示,0.13um工艺下一个具有1.2V Vdd电源的CMOS反相器单元的典型VILmax值为0.465V、VIHmin值为0.625V。 VIHmin和VILmax的值是从标准单元的直流传输特性中得出的。直流传输特性会在接下去的6.2.3节中有更详细的描述。

d214478a68e819a41e2384087a64a14a.png
图2-4

2.2 CMOS单元建模

如果一个单元的输出引脚驱动多个扇出单元,则该单元的输出引脚上的总电容等于该单元正在驱动的单元的所有输入电容的总和加上构成该网络所有走线电容之和再加上驱动单元的输出电容。注意,在CMOS单元中,输入引脚仅呈现电容性负载。

4ef59ca391b79dad21e56451b5262a39.png
图2-5

图2-5是一个单元G1驱动其他三个单元G2、G3和G4的示例。 Cs1,Cs2,Cs3和Cs4是组成该网络的走线电容值,因此G1输出引脚的总电容=G2单元的输入电容+G3单元的输入电容+G4单元的输入电容+G1单元的输出电容+ Cs1+Cs2+Cs3+Cs4 。这个值就是G1单元进行电平切换时需要充放电的电容值,因此该总电容值会影响G1单元的时序特性。

从时序角度来看,我们需要对CMOS单元建模,以帮助我们分析通过该单元的时序。每个输入引脚必须指定一个输入引脚电容,而大多数CMOS逻辑单元可以不包括输出引脚的引脚电容,但也可能存在输出引脚电容。

当输出为逻辑1时,输出级的上拉结构导通,并提供了一条从输出到Vdd的路径。同样,当输出为逻辑0时,输出级的下拉结构提供了一条从输出到Vss的路径。当CMOS单元切换电平状态时,切换的速度取决于输出引脚上的电容被充放电的速度。输出引脚上的电容(图2-5)分别通过上拉和下拉结构充电和放电。注意,上拉和下拉结构中的通道会对输出的充放电路径构成电阻,充放电路径的电阻是决定CMOS单元速度的主要因素。上拉电阻的倒数称为单元的输出高电平驱动(output high drive)。输出上拉结构越大,上拉电阻就越小,即单元的输出高电平驱动就越大,较大的输出结构也意味着该单元的面积较大。而输出上拉结构越小,单元的面积就越小,其输出高电平驱动也就越小。上拉结构的相同概念可用于下拉结构,下拉结构决定了下拉路径的电阻值以及输出低电平驱动(output low drive)。通常,单元的上拉和下拉结构具有相似的驱动强度。

输出驱动决定了可以驱动的最大电容负载,最大电容负载又决定了扇出的最大数量,即可以驱动多少个其他单元。较高的输出驱动对应较低的输出上拉/下拉电阻,这使单元可以在输出引脚上对较大的负载进行充电和放电。

下图2-6是CMOS单元的等效抽象模型。该模型的目的是抽象单元的时序行为,因此仅对输入级和输出级进行建模,此模型无法捕获单元的固有延迟或电学行为。

2345a7fdc07002face0ca2ff54ade08d.png
图2-6

CpinA是单元在输入A上的输入引脚电容;Rdh和Rdl是单元的输出驱动电阻,可根据单元所驱动的负载确定输出引脚Z电平转换时的上升/下降时间,输出驱动电阻还确定了单元的最大扇出限制。

图2-7与图2-5具有相同的网络,但使用等效模型表示了CMOS单元:

10e373d0169623d71d32a295f4397ffc.png
图2-7
  • 输出充放电延迟 = 

在上述表达式中,是或之一,其中是上拉的输出驱动电阻,是下拉的输出驱动电阻。

2.3 电平切换波形

如图2-8(a)所示,通过按下SW0开关将电压施加到RC网络时,输出将变为逻辑1。假设还未按下SW0时输出为0V,则输出电压的变化由以下公式表示:

92ef836bb690a3e2e745dbcc739fda8d.png
图2-8

该上升的电压波形如图2-8(b)所示。乘积(Rdh * Cload)称为RC时间常数(RC time constant),该值与输出的过渡时间有关。

断开SW0开关同时按下SW1开关,输出就会从逻辑1变为逻辑0,输出电压的变化如图2-8(c)所示。输出电容通过按下的SW1开关放电,这种情况下的电压变化由以下公式表示:

在CMOS单元中,由于PMOS上拉晶体管和NMOS下拉晶体管在短时间内会同时导通,因此输出的充放电波形不会像图2-8的RC充放电波形那样。 图2-9显示了在CMOS反相器单元内,从逻辑1到逻辑0输出切换时各个阶段的电流路径。图2-9(a)显示了当上拉和下拉结构同时开启时的电流流动。随后,上拉结构关闭,电流流向随即如图2-9(b)中所示。输出达到最终状态后,由于电容Cload已完全放电,因此不再有电流流动。

2ad500d209b9e329b22051ca59c7de86.png
图2-9

图2-10(a)是CMOS单元输出级的典型波形,请注意观察过渡波形如何逐渐朝向Vss和Vdd弯曲,且波形的线性部分位于中间位置。

d7c3b744238fabee132fa9ba9ba2efce.png
图2-10

在本文中,我们将使用如图2-10(b)所示的简化版来描绘一些波形,简化版的近似波形也是具有一定过渡时间(transition time)的波形,过渡时间是指从一种逻辑状态过渡到另一种逻辑状态所需的时间。图2-10(c)是过渡时间为0的波形,即理想波形。我们将在本文中交替使用(b)(c)这两种形式的波形来解释一些概念,但我们一定要清楚,实际上每个波形都有(a)那样的真实的边缘特性。

2.4 传播延时

考虑一个CMOS反相器单元及其输入和输出波形,单元的传播延时(propagation delay)是由电平切换波形上的某些测量点定义的。使用以下四个变量定义这些测量点:

#输入端口下降沿的阈值点

input_threshold_pct_fall:50.0;

#输入端口上升沿的阈值点

input_threshold_pct_rise:50.0;

#输出端口下降沿的阈值点

output_threshold_pct_fall:50.0;

#输出端口上升沿的阈值点

output_threshold_pct_rise:50.0;

以上这些变量是用于描述单元库(cell library)的命令集里的一部分。 这些阈值的单位是Vdd或电源的百分比,对于大多数标准单元库,通常将50%阈值用于计算延时。

上升沿是指从逻辑0到逻辑1的跳变,下降沿是从逻辑1到逻辑0的跳变。

假设有一个CMOS反相器单元,其输入输出管脚的波形如图2-11所示,传播延时是指如下两个值:

1.输出下降沿延时(output fall delay):Tf

2.输出上升沿延时(output rise delay):Tr

f88080deb885bd9befd4e428f34fb0eb.png
图2-11

通常,这两个值是不相等的,上图2-11也展示了这两个传播延时值是如何测量的。

若使用理想波形来看,则传播延时将仅仅是两个边沿之间的延迟,如图2-12所示:

5f250a9cdc3358aadfe5e6a384ad91f7.png
图2-12

打个广告

路科验证V2课程大升级啦,升级后的V2pro,不仅保留了原本V2的所有内容,还添加了关于vim、linux、DVT的操作教程,以及寄存器模型自动化,更有定制的个性项目,为你的简历添砖加瓦。如果想要学习SV和UVM,想要入门或者转行验证,路科验证V2pro不容错过!如果对课程有兴趣可以后台联系我,可以获得优惠!详情戳->芯片验证V2 Pro秋季班报名通道已开启!更有早鸟报名优惠等着你!!

后台回复路科验证还可以享受200元优惠!!!欢迎报名~

精彩专辑

备战秋招专辑

验证工程师面试攻略专辑

《数字集成电路静态时序分析基础》笔记专辑

深入AXI4总线专辑

UVM实战专辑

秋招记录专辑

静态时序分析圣经翻译计划

e34716bc15b97b43b1f75a0cb06eeec5.png

欢迎转发、在看、喜欢三连,关注公众号及时接收推送

个人博客地址:https://www.cnblogs.com/icparadigm/

点击在看,分享给你的朋友吧?

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

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

相关文章

html播放七牛云视频,直传七牛云视频播放商业版【价值199元】

福利:本资源正在众筹中,如贴内有下载链接则已众筹成功可下载资源,否则暂无资源,你可以在官方购买此资源后,用于【交换】魔趣吧内已发布的其他你需要的极品资源!这样你既可以买到自己想要的资源,…

andpods授权码订单号分享_微信OAuth2授权登录

前言 第三方登录是应用开发中的常用功能,通过第三方登录,我们可以更加容易使用户登录我们的应用或者网站。很多网站都提供了第三方登录的功能,在他们的官网中,都提供了如何接入第三方登录的文档。但是,假如不同的网站文…

让8只数码管初始显示零,每隔大约1s加一显示,到数码管显示9后,再从一开始显示

让8只数码管初始显示零&#xff0c;每隔大约1s加一显示&#xff0c;到数码管显示9后&#xff0c;再从一开始显示 用延时函数实现加一显示 程序&#xff1a; #include <reg51.h> void delay(unsigned char n); int main(void) { unsigned char led[]{0xC0,0xF9,0xA4,0xB…

让8只数码管从左往右显示1、2、3、4、、、8

编写实验学习数码管动态显示&#xff0c;让8只数码管从左往右显示1,2&#xff0c;3,4&#xff0c;&#xff0c;&#xff0c;8 程序&#xff1a; #include <reg51.h> unsigned char led[]{0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//0-9的字型码 unsigned char segment[…

miracast投屏软件下载_手机画面如何投屏到电视?

投屏方法详解&#xff0c;拆解步骤&#xff0c;视频演示&#xff0c;讲到你会用为止&#xff01;安卓手机Miracast镜像安卓手机Miracast镜像可谓刚需&#xff0c;这种镜像方式的一大优点就是手机端不用再另装其他软件&#xff0c;电视端有“爱投屏”即可流畅使用。步骤如下&…

flash一个按钮控制动画_PLC三组灯用一个按钮控制

今天作一个PLC小练习用一个按钮控制三组或三个灯,以达到控制灯的亮度,由PLC组成一个控制器,每按一次按钮增加一组灯亮,三组灯全亮后,每按一次按钮,灭一组灯(为了使每组灯亮的时间尽量相等,要求先亮的灯先灭),如果按下按钮的时间超过2S,则灯全灭.模拟练习设M600.0是按钮1M800.0是…

下载 6g 概念及愿景白皮书_6G,到底有多6?6G概念及愿景白皮书正式发布!

近日赛迪智库正式发布《6G概念及愿景白皮书》白皮书从6G愿景、6G应用场景6G网络性能指标、6G潜在关键技术国际组织和各国6G研究进展等方面展开讨论并提出加快我国推进6G研发的相关建议以为业界在面向2030网络及6G研究方面提供重要参考话又说回来6G究竟是个啥6G&#xff0c;即第…

html如何创建关键帧动画旋转,[教程] 用 CSS3 Animations(动画) 和 Keyframes(关键帧) 创建简单的网页动画 – CSS3 实现弹跳球动画...

通过这个有趣的教程学习 CSS Animations(动画) 和 Keyframes(关键帧)。我们要做什么&#xff1f;下面是最终代码&#xff0c;也就是我们将要最终实现的演示&#xff1a;基础准备对于这个实现&#xff0c;我们需要一个简单的 div &#xff0c;并且样式类名为 ball &#xff1a;我…

定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。

编写程序使定时器0或者定时器1工作在方式1&#xff0c;定时50ms触发蜂鸣器。 程序&#xff1a; #include<reg51.h> sbit fmP2^3; unsigned char cnt; int main(void) { TMOD0x01; TH0(65536-46083)/256; TL0(65536-46083)%256; cnt0; TR01; EA1; ET01; while(1); } void …

iOS打开沙盒html,iOS WKWebView加载本地/沙盒HTML及css、images

注意这里加载的是本地的不是沙盒里的,加载沙盒的方法在最下面。先上代码&#xff1a;NSString *path [[NSBundle mainBundle] pathForResource:“local.html" ofType:nil];[_wkWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];注意&am…

用python做频数分析_使用Python进行描述性统计

2 使用NumPy和SciPy进行数值分析 2.1 基本概念1 from numpy import array 2 from numpy.random import normal, randint 3 #使用List来创造一组数据 4 data [1, 2, 3] 5 #使用ndarray来创造一组数据 6 data array([1, 2, 3]) 7 #创造一组服从正态分布的定量数据 8 data norm…

串行口实验 编写程序利用串口调试助手通过串口给实验板发送数据(数据范围0x00-0xfe),单片机将接受到的数据加1后再发送给PC机。

编写程序利用串口调试助手通过串口给实验板发送数据&#xff08;数据范围0x00-0xfe&#xff09;&#xff0c;单片机将接受到的数据加1后再发送给PC机。 程序&#xff1a; #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar temp; int main…

中学生 学python_中小学生为什么要学Python编程

中小学生为什么要学Python编程&#xff1f;未来是人工智能的时代&#xff0c;有理由相信Python将发挥更大的作用。教育部下发的《2018年度普通高等学校本科专业备案和审批结果的通知》显示&#xff0c;新增备案本科专业79个、新增审批本科专业19个。 呼声极高的人工智能专业被列…

串行口实验 编写程序利用PC机控制单片机实验板上的数码管设备工作

编写程序利用PC机控制单片机实验板上的数码管设备工作 在pc上输入fe&#xff0c;第一个数码管显示1. 在pc上输入fa第五个数码管显示5 程序&#xff1a; #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar temp; uchar led[]{0xc0,0xf9,0x…

I/0口输入输出实验 流水灯程序 P0、P1、P2、P3口作为输出口,连接八只发光二极管,编写程序,使发光二极管从左至右循环点亮。

P0、P1、P2、P3口作为输出口&#xff0c;连接八只发光二极管&#xff0c;编写程序&#xff0c;使发光二极管从左至右循环点亮。流水灯程序 程序&#xff1a; #include<reg51.h> //包含单片机定义寄存器的头文件 sbit led P1^0; //将led定义为P1.0位 void delay(void) //…

python3.6库参考手册_python3.5.2官方帮助文档参考手册(CHM版)

python3.5.2官方帮助文档 参考手册&#xff08;CHM版&#xff09; python3.5.2官方帮助文档 参考手册&#xff08;CHM版&#xff09;&#xff0c;欢迎下载&#xff01; 新语法特性&#xff1a; PEP 492,具有async和await语法的协同程序。 PEP 465, 新矩阵乘法运算符&#xff1a…

I/0口输入输出实验 将P1口的某一位作为输入使用,连接一个按键,当按键按下时使发光二极管亮,否则发光二极管熄灭

将P1口的某一位作为输入使用&#xff0c;连接一个按键&#xff0c;当按键按下时使发光二极管亮&#xff0c;否则发光二极管熄灭。 程序&#xff1a; #include<reg51.h> sbit KEYP1^1; sbit LEDP1^2; int main(void){ LED1; KEY1; if(KEY0) LED~LED; else{ LEDLED; } }

I/0口输入输出实验 学习IO口的位操作方法,分别选择P0、P1、P2、P3端口中的某一位,该位作为输出使用,连接一只发光二极管,控制器闪烁。

学习IO口的位操作方法&#xff0c;分别选择P0、P1、P2、P3端口中的某一位&#xff0c;该位作为输出使用&#xff0c;连接一只发光二极管&#xff0c;控制器闪烁。 程序&#xff1a; #include<reg51.h> sbit KEYP1^1; sbit LEDP1^2; int main(void){ LED1; KEY1; if(KEY0)…

域控服务器取消验证_记一次域控服务器应急

搜索公众号&#xff1a;暗网黑客可领全套网络安全课程、配套攻防靶场一介小白是如何成长为黑客大佬的一、背景介绍这是去年11月份的应急事件&#xff0c;反复到客户现场多次才找到原因&#xff0c;最后得到的结论也极为简单。解决问题过程中&#xff0c;由于客户给的压力较大&a…

html5难点,学习HTML5的难点是什么?

2012-02-05html5为什么要学html5&#xff1f;HTML5 是继 HTML4。01, XHTML 1。0 和 DOM 2 HTML 后的又一个重要版本&#xff0c;旨在消除富 Internet 程序(RIA)对 Flash&#xff0c; Silverlight&#xff0c; JavaFX 一类浏览器插件的依赖。HTML5 带来很多新功能&#xff0c;以…