数字集成电路设计理论

1、基本的理论结构

现在主流的集成电路器件还是CMOS,所以理论的结构还是基于CMOS。CMOS有N和P两种MOS组合组合在一起。CMOS最简单的器件就是反相器。然后是标准的逻辑门(与门和或门),标准单元是采用w/L=2:1的PMOS和NMOS组成的与非门和或非门。然后,就可以实现所有的数字逻辑。当然,在实际的应用中,还有一些其他的重要结构,但是这三个单元是基本。

2、重要部分

逻辑门:

构建一个逻辑门,需要确定输入和输出,然后使用NMOS拓扑和PMOS拓扑构成逻辑门。这里由于NMOS和PMOS的连接关系一般采用对偶关系(串联对并联,并联对串联),所以只需要采用一个拓扑就可以得到逻辑门所实现的功能。以NMOS为例:串联为与,并联是或,最后的输出加非即可。其他的多输入模型也是基于这个来设计的。

传输特性:

前面提到,串联为与,并联为或。这是基于开关器件来说的。在实际的MOS器件时,串联的结构是具有延时的。例如A和B两个输入,A在B上面,也就是A靠近输出。在A=0,B=0时,F输出高电压。在A高时,NMOS-A的作用为电阻,可以较快地下降;而当B高时,NMOS-B的作用相当于电阻,NMOS-A相当于加了一个下拉电阻,需要更长的时间导通。也就是A=1,B=0->1的延时要比B=1,A=0->1的延时要小。这里区分了与门的两扇入的区别。

这个延时,最直接的结果就是限制了输入的数量。如果扇入过多,延时将增加到不可接受。而且可能出现最上面的MOS栅压大于电源电压而失效。一般输入数小于等于4最好。

对于输入更多的器件,可以采用单元电路组合的方法实现。这种实现方法的延时将转化为多路径,其中最慢的路径就是电路的速度。这里的分析就是要考虑逻辑努力。

逻辑努力:

计算逻辑努力有软件可以仿真,而对于估算来说,使用反相器模型会比较好理解。

一般的设计,MOS的W/L的值是确定的。所以对于一个反相器而言,延时也是一定的。理想的反相器的总延时Di=tp0(1+fi),而我们使用的一般是Di=tp0(p+gi hi)。

这里tp0的作用相当于一个单位延时,和长度的m是一个概念。P则是输入电容的延时,用于输入延时的描述,在空载时就是这个电路的延时。而g则是等效反相器个数,也就是逻辑努力。h则是Cout/Cin,也就是扇出。显然扇出越大,所能容纳的级数越大,延时越大。下面说一下这几个参数的计算:

g,将串联的宽长比除以串联个数,并联不变,相加除以2就是分母,分子就是总和除以2;简单理解就是串联延时增大,体现为分母减小修正。这里一般使用2:1的反相器为标准。

P,与输入个数成正比。

BG:就是连接输出的下一级的个数与g的乘积。一般是同样的输出级,不同的应该要区分写。这里直接相乘就是分别写的缩写。

h:就是Cout/Cin,可以理解为最小延时。

这里就比较奇怪,为什么其他支路会影响分析的干路。个人理解是其他支路的输入电阻与输出电容构成的RC分路会提高延时。具体的原理可能用到模电的分析,这里就不做讨论了。

这就是逻辑努力的基本概念,可以试着分析一下各个输入的延时,理解每一个逻辑电路的延时的概念。

延时优化:

从前面的分析可以看出,一个路径的延时的最小就是h(忽略单位),但是前面提到了一级内部不能加入过多的扇入。所以,多少级的结构合适呢?Fi=Bi*Gi*Hi,这就是每一级延时的乘积。根据数学原理,要使总的延时(也就是每一级的延时之和)最小,等比分布是最小的。

这里使用了一个重要的关系式:h1*h2*……*hi=Cout/Cin,理解为Hi的1~i乘积等于Cout/Cin,当然也可以根据每一级的F,B,G得到每一级的H。

这里理解起来还是比较复杂的。

主要的区分点是每一级的参数还是总的参数。

小结:

后面的内容就是CMOS的改进。一些基于其他的NMOS和PMOS的组合方法可以实现一些特定的功能,这里由于时间关系就不多说,后面有时间再补充。

3、实验部分

实验部分就是绘制版图,在别的部分有过介绍,这里不再赘述。在使用cadence工具中找到过。

数字集成电路设计之CMOS的更多相关文章

  1. 数字集成电路设计-8-一个简单sobel图像边缘检测加速器的设计,实现,仿真与综合

    引言 图像视频处理等多媒体领域是FPGA应用的最主要的方面之一,边缘检测是图像处理和计算机视觉中的基本问题,所以也是最常用的,随着数据量的不断增加以及对实时性的要求,一般软件已经不能满足实际需要,这时 ...

  2. 数字集成电路设计-14-DPI

    引言 在进行IC验证时,尤其是规模较大的时候,单纯用Verilog和SV来构建testbench.可能会稍显吃力. 在这样的情况下,使用C或者C++等软件语言往往会大大加快验证速度,提高验证效率. P ...

  3. VerilogHDL概述与数字IC设计流程学习笔记

    一.HDL的概念和特征 HDL,Hard Discrimination Language的缩写,翻译过来就是硬件描述语言.那么什么是硬件描述语言呢?为什么不叫硬件设计语言呢?硬件描述语言,顾名思义就是 ...

  4. 数字IC前后端设计中的时序收敛(六)--Max Fanout违反

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程>(二维码见博文底部) 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教 ...

  5. 数字IC前后端设计中的时序收敛(五)--Max Transition违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  6. 数字IC前后端设计中的时序收敛(四)--Max Capacitance违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  7. 数字IC前后端设计中的时序收敛(三)--Hold违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程>(二维码见博文底部) 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教 ...

  8. 数字IC前后端设计中的时序收敛(二)--Setup违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  9. 数字IC前后端设计中的时序收敛(一)前言

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 为了纪念,同时 ...

  10. 数字IC设计工程师的知识结构

    刚毕业的时候,我年少轻狂,以为自己已经可以独当一面,庙堂之上所学已经足以应付业界需要.然而在后来的工作过程中,我认识了很多牛人,也从他们身上学到了很多,从中总结了一个IC设计工程师需要具备的知识架构, ...

随机推荐

  1. 【Unity3D】MonoBehaviour的生命周期

    1 前言 ​ Unity3D 中可以给每个游戏对象添加脚本,这些脚本必须继承 MonoBehaviour,用户可以根据需要重写 MonoBehaviour 的部分生命周期函数,这些生命周期函数由系统自 ...

  2. TS内置类型与拓展

    TS内置类型与拓展 TypeScript具有类型系统,且是JavaScript的超集,其可以编译成普通的JavaScript代码,也就是说,其是带有类型检查的JavaScript. 内置类型 Type ...

  3. Swoole从入门到入土(24)——多进程[进程管理器Process\Manager]

    Swoole提供的进程管理器Process\Manage,基于 Process\Pool 实现.可以管理多个进程.相比与 Process\Pool,可以非常方便的创建多个执行不同任务的进程,并且可以控 ...

  4. 配置主机访问virtualbox中redhat7.3虚拟机网络(其他系统配置也类似)

    为什么默认无法访问? virtualbox默认分配一个NAT网络,这个是给虚拟机操作系统访问互联网用的,默认主机通过这个ip段无法直接访问虚拟机.[网卡1] 需要添加一块网卡 在虚拟机关闭状态下,点[ ...

  5. CSS实现导航栏

    1.知识点 列表 浮动 伪类 背景 文本格式化 盒子模型 2.效果 3.代码 <!DOCTYPE html> <html lang="en"> <he ...

  6. 搭建Windows环境下的多功能免费SSH客户端

    关于Windows下的SSH客户端工具,可以有许多选择,从开源免费到商业收费的,零零总总. 免费版: Putty就是最简单的SSH客户端,非常轻量级. Electerm是一个开源可免费使用的跨平台SS ...

  7. ProtoBuf 基本使用

    一.是什么 Protocol Buffers,是Google公司开发的一种数据描述语言,是一种平台无关.语言无关.可扩展且类似于XML能够将结构化数据序列化,可用于数据存储.通信协议等方面. 二.为什 ...

  8. 如何实现十亿级离线 CSV 导入 Nebula Graph

    本文首发于 Nebula Graph Community 公众号 本次实践是基于业务需求及后续扩展,通过技术选型确定了 Nebula Graph 图数据库,首先需要验证 Nebula Graph 数据 ...

  9. 协程的async使用

    async与launch一样都是开启一个协程,但是async会返回一个Deferred对象,该Deferred也是一个job async函数类似于 launch函数.它启动了一个单独的协程,这是一个轻 ...

  10. [C++逆向] 8 数组和指针的寻址

    目录 数组在函数中 字符串 数组作为参数 下标寻址和指针寻址 多维数组 存放指针类型数据的数组 指向数组的指针变量 函数指针 数组是相同类型数据的集合,以先行方式连续储存在内冲中 而指针只是一个保存地 ...