前言

本文为我自己的学习笔记,是Cadence Virtuoso系列的第四篇文章,也是入门系列的文章,采用的软件版本是Cadence Virtuoso IC617。其他文章请点击上方,看我制作的Cadence Virtuoso专栏内容。

本文主要记录了如何用Cadence Virtuoso IC617仿真CMOS反相器,这将帮助学习者更加深入理解Cadence仿真,本文涉及时域仿真和多曲线仿真。

固定W与L时的输入输出特性

原理图

使用第一篇文章中提到的SMIC 0.18um工艺作为原理图使用的工艺,建立如下原理图,用于测量输出电压随输入电压的变化而变化的曲线。VDD由V2控制,设置固定值为3V,输入由V1控制,设置为变量vin。此处设置MOS的W和L为固定值,分别为220nm和180nm。

易错一:此原理图为CMOS反相器,由一个N-MOS和一个P-MOS组成。
易错二:N-MOS的B极连接到GND,P-MOS的B极连接到VDD。

为了避免篇幅太长,同时大部分仿真设置前面的文章都讲过,所以这里就一笔带过仿真的有关设置。默认现在在看这篇文章的人,已经阅读过前面的仿真V-I特性曲线的文章。

没有看过的请点击下方链接,跳转到目录中的**“设置单一变量仿真”**,里面以下提到的所有选项的详细解释。

用Cadence Virtuoso IC617仿真V-I特性曲线

设置仿真变量

选择菜单中的Launch,选择第一项ADE L。

在弹出的窗口中选择Copy From Cellview,就能把原理图中的变量vin导入进来。

同时,设置变量的初始值,这里设置初始值为0。

设置仿真分析

对扫描类型进行设置。选择AED L窗口中,右边的图标。

这里设置直流DC仿真,仿真的变量是vin,范围是0-3V,点击OK确认。

最终,会在窗口中显示设置后的提示。

设置仿真输出

点击右边的图标,设置仿真输出。

在弹出的窗口中,不推荐直接输入节点名字,更推荐直接点击From Design。

我们需要仿真的是电压,而不是前面仿真V-I特性曲线中的电流,所以我们选择的是连线,而不是器件的节点。被选中的连线被标记上了颜色,其中,输入被标记成了绿色,输出标记成了红色。

回到原来窗口,可以看出,输出为电压型,命名为“net XXX”,前文提到的电流型为“NM0 / X”。点击OK确认修改。

最终,会在窗口中显示设置后的提示。

最终仿真结果

经过上面三步,可以得出仿真器中的三个子窗口里都有数据了。点击右边的开始图标,可以得到仿真结果。

得出了仿真曲线。其中红色的是输入电压曲线,绿色的是输出电压曲线。在此W和L下,vin=vout的点位于约1.16V处,即38.7% VDD处。

扫描W对输入输出特性的影响

在上一节中,介绍了固定MOS的W与L时,输入与输出的特性。为了直观地观察在不同晶体管尺寸下的电路特性,我们需要用扫描变量的方式来对电路进行仿真。

原理图

将原理图改成如下图。即,把MOS的W改成变量。这里只记录扫描W的过程,扫描L的过程同理,不再赘述。

具体的设置如下,改动的是Total Width。

仿真设置

在左边窗口中,添加所有变量并设置初值之后,选择Tools中的Parametric Analysis。

添加两个变量,都是从220nm开始扫描,扫描步进为110nm。可以通过Sweep选项框中的勾,来切换扫描的变量。点击绿色按钮开始仿真。

仿真结果

设置扫描N-MOS的W,结果如下。可以看出随着W的变大,输出曲线左移,也就是vin=vout的点左移。

设置扫描P-MOS的W,结果如下。可以看出随着W的变大,输出曲线右移,也就是vin=vout的点右移。

输入为方波时的输入输出特性

前面记录的都是输入电压作为变量,进行直流DC分析。现在将输入换成方波,进行时域分析。

原理图

在前面原理图的基础上,将输入电压源V1改成方波输入。具体如下,选取器件库中的vpulse加入原理图中。

方波信号的参数设置如下。这里主要设置其峰值范围为0-3V,周期为2ns,脉冲宽度为1ns,最终得到一个50%占空比的方波。

设置好的原理图如下。注意把MOS的W改回常数。

仿真设置

选择菜单中的Launch,选择第一项ADE L。

由于是时域分析,就不需要设置变量了,直接设置扫描类型。

设置为第一项,时域分析,设置扫描时间为10ns,即5个周期。

设置输出。

在弹出的窗口中,不推荐直接输入节点名字,更推荐直接点击From Design。

我们需要仿真的是电压,而不是前面仿真V-I特性曲线中的电流,所以我们选择的是连线,而不是器件的节点。被选中的连线被标记上了颜色,其中,输入被标记成了绿色,输出标记成了红色。

回到原来窗口,可以看出,输出为电压型,命名为“net XXX”,前文提到的电流型为“NM0 / X”。点击OK确认修改。

最终,会在窗口中显示设置后的提示。

仿真结果

经过上面三步,可以得出仿真器中的三个子窗口里都有数据了。点击右边的开始图标,可以得到仿真结果。

结果曲线图。可以看出,已经达到了反相的效果。

拖动时间轴手柄,可以拉开曲线以及选择时间,观察上升和下降沿。

经验小结

在设计中,我们一般会使 vin=vout 这个平衡点位于 0.5*VDD 处,此时两只晶体管的 Ids 相等,但由于 P-MOS 和 N-MOS 的工艺参数并不相等,这就需要我们对两只晶体管的 W / L 进行设计。

一般情况

一般情况下,可以得出以下关系。其中,K最好比2稍微大一点点,这样效果更佳。
(WL)p=K(WL)nK≈2,(WL)n⩾3\Big( {W \over L} \Big)_p = K \Big( {W \over L} \Big)_n \newline \enspace \newline K \approx 2,\enspace \Big( {W \over L} \Big)_n \geqslant 3 (LW​)p​=K(LW​)n​K≈2,(LW​)n​⩾3
例如设计以下尺寸,能满足上面提到的关系。

此时,vin=vout 这个平衡点点位于约1.40V处,即46.7% VDD处。

尺寸受限情况

如果设计受限,W不能接受太长的尺寸,只能将K值变大,才能满足要求。就变成了以下的式子。
(WL)p=K(WL)nK>2\Big( {W \over L} \Big)_p = K \Big( {W \over L} \Big)_n \newline \enspace \newline K > 2 (LW​)p​=K(LW​)n​K>2
例如设计以下尺寸,此时K=3。

此时,vin=vout 这个平衡点点位于约1.44V处,即48% VDD处。

分析原理

从MOS的V-I特性公式入手。有以下关系,它们的电流相等,同时展开两边的式子。

IDSn=IDSp12Kn(WL)n(VGS−VTn)2(1+λnVDS)=12Kp(WL)p(VGS−VTp)2(1+λpVDS)I_{DSn} = I_{DSp} \\\enspace\\ {1 \over 2} K_n \Big( {W \over L} \Big)_n (V_{GS}-V_{Tn})^2 (1+\lambda_nV_{DS}) \\=\\ {1 \over 2} K_p \Big( {W \over L} \Big)_p (V_{GS}-V_{Tp})^2 (1+\lambda_pV_{DS}) IDSn​=IDSp​21​Kn​(LW​)n​(VGS​−VTn​)2(1+λn​VDS​)=21​Kp​(LW​)p​(VGS​−VTp​)2(1+λp​VDS​)
这里的工艺参数选用的是SMIC 0.18um工艺库参数,在我的上一篇文章中已经计算得出。可以点击下面查看。

用Cadence Virtuoso IC617仿真工艺库参数

在关系式中,VGS = VDS = 0.5*VDD,同时忽略右边部分影响不大的式子,就得出下面的关系式。

(VGS−VTn)2(1+λnVDS)=1.855(VGS−VTp)2(1+λpVDS)=1.819∵1.855≈1.819∴IDSn=IDSp⟹Kn(WL)n=Kp(WL)p(V_{GS}-V_{Tn})^2 (1+\lambda_nV_{DS}) =1.855 \\\enspace\\ (V_{GS}-V_{Tp})^2 (1+\lambda_pV_{DS}) =1.819 \\\enspace\\ \because 1.855 \approx 1.819 \\\enspace\\ \therefore I_{DSn} = I_{DSp} \enspace\Longrightarrow\enspace K_n \Big( {W \over L} \Big)_n = K_p \Big( {W \over L} \Big)_p (VGS​−VTn​)2(1+λn​VDS​)=1.855(VGS​−VTp​)2(1+λp​VDS​)=1.819∵1.855≈1.819∴IDSn​=IDSp​⟹Kn​(LW​)n​=Kp​(LW​)p​
也就是说,最后这个关系式,和工艺参数Kn与Kp,以及我们设计的晶体管尺寸比有关。将式子变形,变成比值的形式。

(WL)p(WL)n=KnKp=K≈2.4{\Big( {W \over L} \Big)_p \over\Big( {W \over L} \Big)_n}={K_n \over K_p}=K\approx2.4 (LW​)n​(LW​)p​​=Kp​Kn​​=K≈2.4
这个结果和前面得出的结果是一致的,K需要稍微大于2,此时效果最好。

当然,采用不同的工艺(尤其是更先进的工艺),以及VDD改变时,这个K值会有一些细微的变化。

同时,对于模拟电路来说,我们很多设计都是建立在“经验”和“估算”上的,这里所记录的经验能适用于部分情况,但不能适用于所有情况。本节的标题也将其归纳为“经验”而不是“定理”。

用Cadence Virtuoso IC617仿真CMOS反相器相关推荐

  1. 用Cadence Virtuoso IC617仿真V-I特性曲线

    前言 本文为我自己的学习笔记,是Cadence Virtuoso系列的第二篇文章,也是入门系列的文章,采用的软件版本是Cadence Virtuoso IC617.其他文章请点击上方,看我制作的Cad ...

  2. Cadence Virtuoso IC617练习一反相器

    自学做记录帖子 软件: IC617 Redhat 工艺包:smic13mmrf 一建立工作目录 在home文件夹下新建了个EDA文件夹用来存放资料:在EDA文件夹里,新建一个project的文件夹(自 ...

  3. 用Cadence Virtuoso IC617和工艺参数设计有源负载差动对(五管OTA)运放

    前言 本文为我自己的学习笔记,属于Cadence Virtuoso系列的进阶部分,采用的软件版本是Cadence Virtuoso IC617.其他文章请点击上方,看我制作的Cadence Virtu ...

  4. 用Cadence Virtuoso IC617结合gm/id方法设计有源负载差动对(五管OTA)运放

    前言 本文为我自己的学习笔记,属于Cadence Virtuoso系列的进阶部分,采用的软件版本是Cadence Virtuoso IC617.其他文章请点击上方,看我制作的Cadence Virtu ...

  5. 用Cadence Virtuoso IC617设计低压降 (LDO) 线性稳压器

    前言 本文为我自己的学习笔记,属于Cadence Virtuoso系列的进阶部分,采用的软件版本是Cadence Virtuoso IC617.其他文章请点击上方,看我制作的Cadence Virtu ...

  6. Cadence Virtuoso IC617的启动和新建工程

    前言 Cadence是一家专门从事电子设计自动化(EDA)的软件公司,其开发的许多软件早已成为行业内最常用的软件.Cadence Virtuoso IC是集成电路设计中必不可少的软件,它同时提供了原理 ...

  7. Cadence Virtuoso IC617从原理图建立器件和生成版图

    前言 本文为我自己的学习笔记,是Cadence Virtuoso系列的第四篇文章,也是入门系列的文章,采用的软件版本是Cadence Virtuoso IC617.其他文章请点击上方,看我制作的Cad ...

  8. 用Cadence Virtuoso IC617结合gm/id方法设计两级运放(五管OTA加共源极)

    前言 本文为我自己的学习笔记,属于Cadence Virtuoso系列的进阶部分,采用的软件版本是Cadence Virtuoso IC617.其他文章请点击上方,看我制作的Cadence Virtu ...

  9. Cadence Virtuoso 原理图仿真报错问题解决

    主要问题:在启动ADE L仿真时出现与模型相关的报错. 仿真平台:VMware17 虚拟机 Centos 7 软件版本:Cadance Virtuoso IC618 工艺库:tsmc18(0.18um ...

最新文章

  1. 网络设置巨形帧_Trunk的概念与设置
  2. 取整 除法_Python学习教程:Python3除法之真除法、截断除法和下取整对比
  3. 【转载】CMenu自绘---钩子---去除边框
  4. 51 nod 1127最短的包含字符串(尺取法)
  5. Java中“/”,“.”所代表的文件路径
  6. python socketserver最大连接_大聊Python----SocketServer
  7. [bz][LINUX command 002] 嵌入式常用的命令
  8. 出现问题protected:void __thiscall CTalkCDlg::OnIdok(void)(?OnIdok@CTalkDlg@@IAEXXZ)?
  9. php选择nginx还是apache,浅谈apache和nginx的rewrite的区别
  10. 企业微信再次升级;滴滴网约车欲加装防护隔离膜;Firefox 73发布 | 极客头条
  11. linux 空信息,为什么recv()函数收到空消息?
  12. 【STL源码剖析读书笔记】自己实现stack之MyStack(底层用MyList)
  13. [转]51汇编指令集详解()
  14. 【雕爷学编程】Arduino动手做(3)---微波雷达感应开关模块
  15. 参考文献的序号如何设置
  16. 【调剂】齐齐哈尔大学接收调剂研究生
  17. Comparator.comparing比较排序
  18. 关于移动端适配,你必须要知道的
  19. 敏捷开发流程之Scrum:3个角色、5个会议、12原则
  20. 那些英年早逝的 IT 劳模们

热门文章

  1. JAVA数组扁平化整合_一文搞定数组扁平化(超全面的数组拉平方案及实现)
  2. unimrcp 实现阿里云的plugin
  3. 计算机网络模拟校园,计算机网络课程设计-模拟校园网组网实验.doc
  4. 计算机网络毕业设计,计算机网络毕业设计
  5. 国外热度高的域名有哪些类?
  6. 网站建设用国内域名好还是国外域名好?
  7. 【Android 10 源码】MediaRecorder 录像流程:MediaRecorder 开始录制
  8. Uni-app的Dcloud市场插件总结使用(一)下拉模糊查询
  9. win10远程桌面连接报错(出现身份验证错误。要求的函数不受支持。CredSSP 加密数据库修正)解决办法
  10. Python3读txt,UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd0 in position 0: invalid continu