Cadence可以实现电路图输入(Schematic Input)、电路仿真(Analog Simulation)、版图设计(Layout Design)、版图验证(Layout Verification)、寄生参数提取(Layout Parasitic Extraction)以及后仿真(Post Simulation)。
(图源:西安交通大学国家IC人才培养基地培养资料)
现在,开始用Cadence画一个标准的CMOS反相器。一个反相器包括PMOS,NMOS,VDD,GND。
软件常用操作及命令
1.启动软件:
virtuoso或者virtuoso&:&表示后台运行(shell自带语法)
2.常用快捷键:
i:添加器件或者电路的symbol
e:进入symbol的下一层
ctrl+e:和e相反
q:打开属性编辑窗口
F3:打开命令菜单,一般和命令配合使用,相当于对命令的操作进行设置
w:连线
p:端口引脚
u:撤销
X:检查和保存
l:电路节点命名
作为初学者,在设计电路过程中应该要仔细阅读提示区中的信息。
注意:
①Composer中的多数命令会一直保持,直到你调用其它命令替代它或者按Esc取消,尤其是在执行delete命令时,忽视这一点很可能会误删除,一定要多加小心!Composer的Undo操作默认只能进行一次(可以在CIW窗口的Option->User Preferences中修改,最多可以是10)。所以每完成一个命令,记着按ESC取消当前命令。
②点击工具栏的zoomin和zoomout按钮可以放大缩小电路图。键入快捷键f可以使电路图自动缩放到合适大小。
③编辑电路图过程中注意要及时保存,保存方法是菜单栏->Design->Save,也可以键入快捷键大写的S(Shift+s)来保存。
2)shell常用命令
Cadence开发了自己的编程语言skill以及相应的编译器,整个Cadence可以理解为一个搭建在skill语言平台上的可执行文件集。初学者对此可以不用理会,当用户深入后,可以用skill语言对Cadence进行扩展。
pwd :显示当前目录
cd:改变当前工作目录
mkdir:建立目录
mkdir/path/to/dir_name:特定路径下的目录,必须保证path/to/已经存在
ls:文件显示
whoami:查看用户自己当前使用的账号名
who:查看当前有哪些用户登录到系统中
w:查看哪些用户登录在线,同时显示用户当前的工作
clear:清屏命令
touch file_name:修改file_name文件时间戳;如果文件不存在生成空文件
cat file_name:将文件file_name显示到屏幕上
cat file_name1file_name2:显示两个文件
cat file_name1file_name2>file_name3:将前两个文件依次组合,并添加到file_name3的末尾
创建CMOS反相器原理图步骤
点击Browse,弹出库浏览器。选中Show Categories可以分类显示器件,方便我们快速找到所要的器件。依次点击analogLib->Actives->pmos4->symbol,再单击close。刚才的添加器件窗口发生变化。点击Hide隐藏当前窗口,此时鼠标对应有一个PMOS的symbol,此时按r键,可以旋转PMOS。移动PMOS到合适的位置点击鼠标左键将其放下。如果要放置更多的PMOS,继续点击鼠标左键,否则按ESC取消当前的放置器件命令。
继续放置NMOS晶体管、电源与地。对应的器件名称为nmos4,vdd,gnd。
注意:vdd与gnd仅仅是全局电源与地标识,并不是独立电源器件,vdd并不能提供电源。仿真时必须有gnd,否则仿真不收敛。
2)键入快捷键w连线
注意区别wire(narrow)与wire(wide),wire(narrow)表示普通连接导线,而wire(wide)表示总线连接。总线连接的快捷键是大写的W。
还可以对画好的线进行命名,键入快捷键l,在弹出的对话框中输入线名,比如a,点击Hide,然后将字母a移动到要命名的线附近点击左键放下,如果名字离线较远,则要求再单击所要命名的线。
3)设置元件参数
先选中器件,再键入快捷键q
参数可以是以下三种形式的各种数学组合表达式,①变量,②常量,③skill语言函数。变量作参数会在仿真时用到。
单击PMOS选中它,这样PMOS会被一个白色方框包围。然后键入快捷键q,会弹出属性编辑对话框。这里我们需要填上model name,以及PMOS的栅长和栅宽。栅长我们设为常量0.18u(注意u是小写!),而栅宽我们设为函数pPar(“wp”),注意大小写不能错。当然也可以设一个固定的尺寸,但这样就不能利用参数修改晶体管的栅宽了。
pPar函数就是把wp作为传递参数,在其它电路图中调用这个电路时对wp赋值,就相当于给这个PMOS的栅宽赋值,这样做的目的是为了方便层次化设计。在后面仿真时大家会更加明白这一点。Composer会根据数值大小自动变换单位。
模型名我们填p18,这是因为我们这里采用的Spice模型是由SMIC提供的,对应PMOS的模型有p18和p33两种,18代表电源电压为1.8V。在后边仿真的时候我们还要再设SpiceModel文件的具体路径。同样的方法继续设置NMOS参数,只是模型名为n18,栅长为固定值0.18u,栅宽设为pPar(“wn”)。
注意:
①设置参数时不要自己输入单位,系统会自动加上。比如0.18uM是错误的写法。如果非要自己写单位,也要和数值之间留一个空格,否则系统会把M识别为变量。
②器件的参数也可以在放置时就设置好。
4)键入快捷键p放置端口
单击菜单栏->Check and Save或者键入快捷键大写的X,可以对电路进行检查并存储。
Composer窗口菜栏->Create->Create CellView->From Cellview,弹出Cellview from Cellview窗口
默认的Symbol是一个比较大的矩形。对于反相器,我们习惯用一个三角形再加小圆圈来表示。
选中绿色矩形框,delete之,然后Add->-Shape>Polygon,在刚才矩形框的位置画一个三角形。鼠标在三个端点点3次即可。注意在三角形右边留出画圆圈的位置。
再Add->Shape->Circle,先于圆心位置单击左键,再移动鼠标,得到合适的圆的半径后左键确认。
再把图中的输入输出端口以及partname和instanceName移动到合适位置。其中,@instance Name代表以后调用此反相器时的编号,@partName代表对应的schematic的名字,一般不用改。最后再把红色框大小修改合适(框住三角形和端口)。
画好的Symbol需要检查保存。Design->check and save,检查结果显示在CIW窗口中。
现在我们用画好的反相器的symbol组成一个缓冲器(buffer)进行仿真,通过对buffer做瞬态分析、DC分析、AC分析,分别得到该buffer的延迟时间、输入输出特性以及小信号频率响应。
对电路进行仿真需要加激励信号,而加激励信号有两种方法,一种是在原理图中直接加入信号源元件,另一种是在仿真环境窗口(ADE)中对输入端口加激励。
缓冲器是由两个反相器组成,利用前边的方法,新建一个cellview,画出缓冲器原理图。
其中反相器我们直接调用了画好的Symbol(注意是在自己的库中)。选中inverter,键入e,再点OK,可以显示和Symbol对应具体的schematic,但是这时只能看,而不能修改。Crtl+e退出该Symbol。
设置inverter参数。选中inverter,键入q,就会弹出反相器的属性。这里我们需要分别设wn和wp的值。
①独立电源vdc也是在analoglib库中,将其属性中的DC voltage设为1.8。
②另一个激励信号是方波源,对应器件名称为vpulse,也位于analoglib库中。方波上升下降时间为0.1n,周期为10n,脉冲宽度为4.9n,voltage1设为0,voltage2设为1.8。因为我们还要做AC分析,交流电压幅值为1(这样测得的输出直接就是小信号增益)。为了得到inverter的输入输出特性,我们把直流电压设为变量vin。
这里设置的方波电压、直流电压、交流电压是相互独立的,分别用于瞬态分析、dc分析、ac分析
Composer菜单栏->Tools->Analog Environment,打开仿真窗口(简称为ADE窗口)。于ADE窗口,Setup->Model Libraries,打开Model库设置窗口,后再于Model库设置窗口的Section栏填写工艺角,这里我们填tt(即NMOS和PMOS速度均为典型值),然后再点Add按钮,将当前的仿真库文件添加进列表,点击OK退出。
仿真环境菜单栏->Variables->Edit,或者直接点击右侧的工具栏中的Edit Variables按钮,弹出如图5.10所示窗口。击点按钮“Copy From”,就会列出我们前面在测试电路中添加的变量vin。选中该变量,我们设置一个初始值0.9。
之所以是0.9,是因为当反相器的输入为0.9时两个MOS管都会导通,此时反相器实际起的是放大器的作用,而我们做AC分析就是要得到MOS管处于饱和区时它的频率响应。需要强调的是,AC分析是建立在一定的工作点上的,而电路的工作点正是由电路图中所设置的电源DC值以及这里的变量初始值决定的。
由于我们要做瞬态分析,dc分析,ac分析,所以我们一次弄好所有设置。
①Analyses->choose,或者点击右侧工具栏的choose analyses按钮。于Analysis栏选择不同的仿真。对于瞬态分析,我们选tran,然后于stop time栏输入仿真时间10n。
②再于该窗口中选取dc,窗口会有相应变化。于sweep variable栏选择Design Variable,然后输入变量名vin,并输入变量的扫描范围,从0到1.8。并选择扫描类型为线性,扫描为0.001。这样仿真时就会对vin从0到1.8V以0.001为间隔进行扫描,从而得到输入输出特性。
注意选中DC Analysis复选框,这样就可以将AC分析时所采用的的直流工作点保存下来,以便我们后面查看电路的直流工作点。
③再于该窗口中选取ac,窗口会有相应变化。默认是频率扫描。我们只需要输入频率扫描范围。这里输入10到1000M(注意是大写)。其它均为默认值。
接下来要选择我们需要观察的对象,即我们要看哪个节点的电压,或者要看哪一条支路的电流。
于ADE窗口,Output->To Be Plotted->Select On Schematic,这样会弹出我们画的电路图。然后分别单击输入和输出两条线IN和OUT,以及第一级反相器的输出v1。注意选择v1时要先选中反相器,再按e进入下一层子电路。并注意一定要单击导线,而不是元件的Pin角。
保存当前的仿真设置。Session->Save State,弹出保存对话框,填好名称,点击OK确定。这样下次再仿真时,可以直接调用该仿真设置,而不用每次都进行同样的设置。
我之后修改了器件为tsmc工艺库后的仿真结果
现在开始根据我们前边的设计尺寸,来画缓冲器的版图。为了显示层次化设计,我们先分别画出两个不同尺寸的反相器版图,再将两个反相器组成缓冲器的版图。
通常的版图设计步骤大概如下:①NMOS:画出N有源区->栅->做接触孔->覆盖金属->N注入区;②PMOS:画出P有源区->栅->做接触孔->覆盖金属-> N注入区;③连接晶体管:放置PMOS和NMOS->连接输出->连接输入->金属连接->电源线;④PAD。
类似新建原理图,CIW窗口菜单栏->File->New->CellView,选择自己的库,然后输入版图名字inverter,注意于tool栏选择Virtuoso,ViewName栏会自动变为layout。点击OK后,会弹出Virtuso主界面,以及LSW窗口。
注意:
①类似Composer,Virtuso中的多数命令会一直保持,直到你调用其它命令替代它或者按Esc取消,尤其是在执行delete命令时,忽视这一点很可能会误删除!
②点击工具栏的zoomin和zoomout按钮可以放大缩小版图。键入快捷键f可以使版图自动缩放到合适大小。
③编辑版图过程中注意要及时保存,保存方法是菜单栏->Design->Save,也可以键入快捷键S(大写)来保存。
版图有非常多的物理规则约束,这是由Foundry的工艺决定的。在后面做设计规则验证(DRC)遇到错误时还要不断地回来查阅该设计手册。
06
序号 | 层名字 | 含义 | 含义 | 本实验所需要的 |
1 | AA | Active Area | 有源区 | √ |
2 | AR | Reverse Active Area | 无源区 | |
3 | KV | Alignment mark clear-out | 对准标记 | |
4 | NW | N-Well | N阱 | √ |
5 | PW | P-Well | P阱 | |
6 | DG | Dual Gate(thick oxide) | 双栅(厚氧) | |
7 | GT | Poly gate | 多晶硅 | √ |
8 | PLH | PMOS LDD implant for 3.3V | 3.3V下PMOS轻掺杂注入 | |
9 | NLH | NMOS LDD implant for 3.3V | 3.3V下NMOS轻掺杂注入 | |
10 | PLL | PMOS LDD implant for 1.8V | 1.8V下PMOS轻掺杂注入 | |
11 | NLL | NMOS LDD implant for 1.8V | 1.8V下NMOS轻掺杂注入 | |
12 | SP | P+implant | P注入 | √ |
13 | SN | N+ implant | N注入 | √ |
14 | ESD1 | ESD implant for Boron(B) | 静电放电注入 | |
15 | SAB | Salicide block area | 硅化物阻挡区 | |
16 | CT | Contact | 有效接触孔 | √ |
17 | M1 | Metal-1 | 第一层金属 | √ |
18 | V1 | VIA-1 | 通孔1 | √ |
19 | M2 | Metal-2 | 第二层金属 | √ |
20 | V2 | VIA-2 | 通孔2 | |
21 | M3 | Metal-3 | 第三层金属 | |
22 | V3 | VIA-3 | 通孔3 | |
23 | M4 | Metal-4 | 第四层金属 | |
24 | V4 | VIA-4 | 通孔4 | |
25 | M5 | Metal-5 | 第五层金属 | |
26 | V5 | VIA-5 | 通孔5 | |
27 | M6 | Metal-6 | 第六层金属 | |
28 | PA | Passivation/Pad | 焊盘 | |
29 | PI | Polyimide |
END
*著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。