一、搭建反相器电路
我们可以建立一个私人的标准单元库"cell_lib_tsmc03",在此库里新建多种单元。在此以搭建一个反相器的原理图为例,供大家熟悉软件的使用。
1.创建库文件:
重新打开一个终端,输入命令“icfb &”,即后台启动 icfb。(详情见前两篇配套文章)
代码:
csh
cd digital_IC
vi cds.lib
icfb &
如图:
启动后将弹出如下图1所示的 Command Interpreter Window(命令解释窗口)和 “Library Manager”,在"Library Manager"中可以看到我们配置成功后的"ncsu-cdk-1.5.1"的若干库。
点击 CIW(命令解释窗口)中"File"->“New”->“Library”,弹出对话框如下图2所示,输入"Name"为:“cell_lib_tsmc03"注意在右侧 “Technology File"处选择第二项"Attach to an exiting techfile”。
点击 OK,将弹出如图4所示对话框,在弹出的"Attach Design Library to Technology File"中,“Technology Library"处选择 “NCSU_TechLib_tsmc03”。
2.建立反相器原理图:
点击"CIW”(命令解释窗口)中"File”->“New”->“Cellview”,弹出对话框如下图5所示,输入名称"inv"。点击"OK",弹出对话框如图6所示。
添加器件:在"Composer"窗口选择"Add"->“Instance”,或直接点击键盘"i"快捷键,弹出对话框如
图6所示。
点击 Browse,在 library 一栏中选择 NCSU_Analog_Parts,库中包含组成反相器的所有 cell,如 pmos4、nmos4、vdd 和 gnd。如图7:
选择 nmos4 时弹出如图8所示对话框,在 Width 处设置为 2.7u,至于其他参数,库会自动生成
同理在设置 pmos4 的参数时,将其Width 设置为 4.5u。
当然,也可以直接将器件添加到Composer 窗口的空黑色屏幕中,再选中器件,点击键盘“q”来修改尺寸。
连线:“Add”->“Wire(narrow)”,或直接点击字母"w",若要离开连线模式,可以直接点击“Esc”。
加 Pin:点击"Add"->“Pin”,或直接点击"p",弹出窗口如图10所示,在"Pin Names"处填写端口名字,如"in"和"out",在"Direction"处分别选择"input"和"output"。
最终形成反相器的电路图,如图12所示:
**注意:**在该电路图中必须使用in和out端口作为输入输出端,而不能用vdc代替,因为这是个模块,必须有接口。
3.建立反相器符号图
建立反相器符号图是为了之后方便直接调用。点击"Composer"(电路编辑)窗口中"Design"->“Create Cellview”->“From Cellview”,如图13:
弹出"Cellview From Cellview"窗口,如图14:
点击 OK,将弹出 Virtuoso Symbol Editing 窗口,如图15:
保证端口输入引脚"in"、输出引脚"out"不被删掉,在绿色方框内画出如下图所示的"symbol"。其中连线或圆圈可以在"Add"->“Shape"中选择,示如图16:
注:
①符号图本质上是画画,画的好坏不影响电路的电气性质。但为了方便读写和维护,应该画成约定俗成的形式并符合规范,尽量美观;
②在绘画过程中,最好把符号全部画入红框内,绿框可以删掉;
③符号图中insuranceName是具体一个器件的名称,partName是器件种类名称,在布局时这两个名称的位置要尽量贴近画的符号;
④由于符号图中最小的圆仍然很大,所以如果按比例把三角部分也放大了,便会使得整个反相器符号很大,不利于绘图;
⑤为解决④中的大小不能操作的问题,我探究了解到可以通过修改最小更改距离的方式更改图像的最小大小。点击Options->Display,进行如图17所示的设置:
最主要的参数为Snap Spacing。修改这个参数可以更改符号的最小大小和每次增加的大小(由于符号的大小是离散化的,修改这个值使得这个离散的距离变小,因此可以画出更小的符号)。Spacing 参数表示图上两个暗点的间距,Multiple参数表示两个亮点的间距为多少个暗点的间距。为了便于使用,Snap Spacing参数和Spacing参数最好相等或呈整数倍关系。
在此处我将Spacing和Snap Spacing修改为原来的0.1倍,Multiple的值不变,然后可以画出较小的反相器符号。
记得"save”!
二、反相器仿真测试原理图搭建和反相器仿真
建立一个仿真库 testbench_tsmc03,在此库里新建多种单元。这里以搭建一个反相器的仿真图为例,供大家熟悉软件的使用。
1.建立新库:
我们点击"CIW"(命令解释窗口)中"File"->“New”->“Library”,因为在这个测试库中我们不需要进行版图的绘画,所以在"Technology File"中选择最后一项即可,弹出对话框如下图17所示。
2.搭建仿真电路图 test_INV:
点击"CIW"(命令解释窗口)中"File"->“New”->“Cellview”,弹出对话框如下图19所示。
在新建的 testbench_tsmc03 里面创建 test_INV 单元,并按照图20所示内容进行电路图的搭建。
在"test_INV"电路图里面,我们需要像画反相器的电路图一样,来画出反相器的测试电路。其中需要用到的"vdd"、“vdc”、“gnd”、“vpulse”、“cap” 器件均从"Cadence"自带的库"analogLib"中调用,而反相器是调用之前在"cell_lib_tsmc03"库下面的"INV"的 symbol 视图。
“vpulse"参数:
——Voltage 1:0 V
——Voltage 2:2.5 V
——Delay time:500p
——Rise time:50p
——Fall time:50p
——Pulse width:5n
——Period:10n
——DC voltage:vin V
“Vdc"参数:
——DC voltage:2.5V
“cap"参数:
——Capacitance:50f F
导线可添加"Label”,将其命名为“”in“”和“”out“”。具体做法是点击“”Add”->“Wine Name…”,或直接点击键盘“l”,并在弹出的对话框"Add Wire Name"中的"Names"处依次填写"in out”(中间有空格),再点击 Hide,将标记"in"和"out"分别放置在电路图中相应的导线上。
点击界面左上角"Tools"下方的对号,即"Check and Save"。
3.对反相器进行直流仿真和瞬态仿真:
“Tools”->“Analog Environment”,弹出对话框"Analog Design Environment",即"ADE"仿真窗口。
a.在"ADE"中,点击"Setup"->“Simulator/Direction/Host”,弹出对话框,在"Simulator"处选择"spectre";
b.在"ADE"中,点击 “Setup”->“Model Libraries…”,弹出对话框,点击"Browse…“,找出"ncsu-cdk-1.5.1/models/spectre/standalone/tsmc25N.m"和"ncsu-cdk-1.5.1/models/spectre/standalone/tsmc25P.m”,并将其添加进入 Model Library File。并点击 “OK"退出。
d.在 ADE 中,点击 Variables→Edit,弹出对话框如图21所示,在 Name 处填写电路图中 V1 的 DC voltage 项 vin,并在 Value(Expr)处填写 2.5,点击"Add”,最后点击 OK 退出。
f.选择瞬态仿真:点击"Analyses"->“Choose”,在Analysis处选择"tran"做瞬态仿真,如图22所示,仿真时间设置为20n。
g.选择DC仿真:点击"Analyses"->“Choose”,在"Analysis"处选择"dc",做"DC"仿真,按照图23所示内容进行修改,即进行直流扫描分析。
h.点击"Outputs"->“To Be Plotted”->“Select On Schematic”,选中电路图中命名为"in"和"out"的导线,选中后这两条导线将变颜色,并且在"ADE"窗口中"Outputs"处将出现出"in"和"out"。如图24所示。
i.点击"Simulation"->“Netlist and Run”,弹出如下图25所示的仿真图。
大家可以选择图形化的快捷键左边第四个 Strip Chart Mode 将两条曲线分开显示。
三、测试反相器的电容
我们点击"CIW"命令解释窗口"File"->“New”->“Cellview”,弹出对话框如下图26所示。在新建"testbench_tsmc03"里面创建"TestC_of_INV"单元,并按照图27进行电路图的搭建。
其中用到的"vdd"、“vdc”、“gnd”、“vpulse”、“res"器件均从"NCSU_Analog_Parts"中调用。反相器需要调用之前在"cell_lib_tsmc03"库下面的"INV"的"symbol"视图。其他器件参数设置:
R=1k
vpulse :Voltage1: 2.5 V
Voltage2: 0 V
Delay time: 1p
Rise time: 1p
Fall time: 1p
Pulse width: 5n
Period: 10n
vdc : DC voltage: 2.5V
其中给导线添加"Label”,将其命名为"in0"和"in",如图27。具体做法是点击"Add"->“Wine Name…”,或直接点击字母"l",则在弹出的对话框"Add Wire Name"中的"Names"处分别填写"in0" “in”,再点击"Hide",将标记"in0"和"in"分别放置在电路图中导线上。
“Check and save”,保证没有错误。点击"Tools"->“Analog Environment”,弹出"ADE"窗口。在"ADE"窗口中,点击"Setup"->“Simulator/Direction/Host”,在"Simulator"处选择"spectre"。
在"ADE"中,点击“”Setup"->“Model Libraries…”,点击"Browse…“,找出:
“ncsu-cdk-1.5.1/models/spectre/standalone/tsmc25N.m"和
“ncsu-cdk-1.5.1/models/spectre/standalone/tsmc25P.m”,并将其添加进入"Model Library File”。并点击 OK 退出。
在"ADE"中,点击"Analyses”->“Choose…”,选择"Analysis"中"tran",即进行瞬态分析,在"Stop Time"处设置为:20n。 在"ADE"中,点击"Output"->“To Be Plotted”->“Select On Schematic”,选中电路图中命名为"in0"和"in"的导线,选中后这两条导线将变颜色,并且在"ADE"中"Outputs"处将出现出"in0"和"in"。 在"ADE"中,点击"Simulation"->“Netlist and Run”。仿真结果如图28:
根据仿真结果计算:
T=0.69RC,其中:T=5.014-5.003=0.011p;R=1000欧,得C=15.942fF 。
四、测试反相器的传输延时
我们点击CIW(命令解释窗口)中File->New->Cellview,弹出对话框如图29所示。在新建的 testbench_tsmc03 里面创建 Delay_of_INV 单元,并按照图30进行电路图的搭建。
等会儿再写。。。
五、设计反相器版图
1、建立新文件
我们点击 CIW(命令解释窗口)中 File→New→Cellview,弹出对话框如下图32 所示。在新建的 cell_lib_tsmc03 里面创建 INV 单元,在 Tool 下选择Virtuoso,那么在 View Name 中自动生成 layout。
2、绘画INV版图
建立完版图文件,将弹出 LSW 和 Virtuso Layout Editing 窗口。在 LSW 中点击 Edit→Set Valid Layers…,将弹出 Set Valid Layers 窗口,点击 All Valid,即将所有层选中。
在 Layout Editing 中点击 Options→Display…,在 Grid Controls 处按照下图34进行修改,即在 Minor Spacing 填写 0.075,Major Spacing 填写 0.15。
画 pmos 管,如图35所示。先放大 layout editing 桌面,即一直按着鼠标右键在界面里画矩形;若缩小,可按着 shift,并一直按着鼠标右键在界面里画矩形,或点击键盘“f ”适中显示。在 LSW 中选择 pactive (选择后缀为 drw,即 drawing绘图,其它层类似,选 drw)作为输入层,再选画矩形的命令(即键盘“r”),在屏幕中央画有源区矩形。竖直距离(W)设置为 4.5um,可用直尺命令(左下角Ruler,或按键盘“k”,去除直尺可用“shift+k”)进行测量,水平距离(L)设置1.8um。 若不小心画多了,可按键盘“s”,进行修剪。(这里 w 设置为 4.5um 为先前设计反相器电路图中 pmos 的尺寸,这里可以根据自己的实际情况画图。)
画多晶硅栅极。多晶硅位于有源区中部,即离有源区左边 0.75um,也为矩形。栅长为 0.3 um。可用直尺命令(点左下角 Ruler)进行测量。多晶硅伸出有源区不小于 0.3 um,如下图36所示。注意,要严格按照设计规则来画,不然做 DRC 时会报错。
在有源区外画 P+注入的矩形。即选择 pselect 层,为满足最小包围,它离多晶硅栅极要至少 0.3um,如图37所示:
在 P+注入区外再画 nwell 的矩形,为满足最小包围,nwell 要离 pselect 边界0.6um。如图 38所示。到此为止,除了金属连线和接触孔,pmos 基本完成。
绘画 nmos。因为 nmos 和 pmos 差不多,可将 pmos 管包括 pselect 以内的层复制过去,然后稍作修改即可。
1、修改有源区竖直宽度Width 为 2.7um;
2、并将 pselect和 pactive 边界向上移动(点击键盘“s”,将边界向上移动);
3、将拷贝后的 pselect改为 nselect,pactive 换成 nactive(选中设计层,点击键盘“q”,进行修改并点击OK);
4、将 poly 向下延伸出 nactive 边界 0.3um,和 nselect 边界齐平,如图39所示:
绘画衬底接触。在 pmos 的 nwell 处添加 nselect 和 nactive,在 nmos 的底部添加 pselect 和 pactive。其中 pselect 和 nselect 高度设置为 1.2um。如图40、41、42所示:
进行连线:用metal1 在 pmos 上方画矩形作为电源 vdd,用 metal1 在 nmos下方画矩形作为零电位 gnd。然后用 metal1 进行连线,将 pmos 和 nmos 的漏极连接起来作为反相器的输出。将 pmos 的源级和 vdd 连接作为反相器输入,并将nmos 的源级和 gnd 连接起来。如图43所示:
画接触孔。在 metal1 和 active 接触处添加接触孔 cc,注意 cc 为正方形,边长 0.3um。如图44所示: