(原创)基本标准单元的全定制设计--以与或非门(AOI221)为例
基本门电路—与或非(AOI221)门设计
l 基于Cadence工具的full custom 设计流程概述
Full custom 设计流程
Cadence定制设计工具包—DFII可以进行定制原理图输入,电路仿真和版图设计。
在本设计中主要用到
l Virtuoso Schematic Composer,用于原理图设计;
l Virtuoso Layout Editor,用于版图设计;
以及集成到Cadence中的:
l HSPICE工具,用于前仿真和后仿真;
l Calibre工具,用于设计验证;
Cadence工具的定制流程
l AOI的CMOS组合逻辑
l AOI组合单元的种类及命名
AND-OR-INVERT (AOI) 门和OR-AND-INVERT (OAI)逻辑单元在CMOS基于单元库的设计中非常有效率,下图显示了AOI221和OAI321逻辑单元。指数“221”和“321”是指在AOI单元中,第一级与门中的输入信号的个数,“2”表示AOI第一级第一个与门有两个输入,“1”表示直接连到第二级单元。它们按从大到小排列,如Z = (A.B.C + D.E + F)'表示成AOI321,而不能用AOI123或其它的方式表示。类似的Z = (A.B + C + D)'可表示成AOI211等。
复杂AOI组合单元的命名方法
Cell type 1 |
||
The AOI family of cells with three index numbers or less.
l 推气泡法把AOI221设计成单级逻辑门单元
推气泡法设计单级AOI221
l 用Virtuoso Schematic Editor工具设计原理图
l 启动Cadence 设计软件
先进行软件环境设置,主要包括:
.cshrc 文件的设置
.cdsenv 文件设置
.cdsinit 设置
cds.lib 文件的设置
可把具体的设置过程写成脚本,每次启动时运行此脚本即可。
然后启动Cadence,在cshell中运行:
icfb &
(icfb stands for Integrated Circuit Front to Back design,后缀&的作用:表示后台运行)
关掉“What’s New”窗口。
出现“icfb-log:/…”窗口(CIW:Command Interpreter Window)。
l 建立新库、新单元以及新视图(view):
在 CIW 中,File->New->Library,
在弹出的“New Library”窗口,Name 栏中:assignment
选中右下方:* Compile a new techfile
OK
查看 CIW窗口:Tools->Library Manager,在 Library中单击 std_cell。
在 Library Manager 窗口,File->New->Cellview,
在弹出的“Create New File”窗口 Cell Name 栏中,aoi221
Tool 栏中,选 Composer-Schematic
OK
l 添加元件(实例 instance)
在弹出的“Virtuoso Schematic Editing:…”窗口中,左边为工具栏,选instance图标(或 i)
单击“Add instance”窗口Library栏最右侧 Browser,
弹出“Library Browser-…”窗口,Library选 analogLib,Cell 选nmos4, View选 symbol
鼠标回到“Add instance”窗口,Model name 栏:nch, width: 1.2u , Length: 400n,Hide
在“Virtuoso Schematic Editing:…”窗口, 鼠标左键单击一次,间隔一定距离再单击4次,
这样就增加了 5 个nmos4 元件,ESC。
仿照上述方法,增加 pmos4 元件。在“Add instance”窗口,Model name 栏:pch,
width: 400n , Length:400n;放置 5 个pmos4,ESC。(热键功能 fàfit,[à放大,] à缩小)
l 添加管脚(PIN)
选“Virtuoso Schematic Editing:…”窗口左边工具栏中的 Pin 图标(或 p)
在“Add Pin”窗口中,Pin Names:A,Direction 选 input, Usage 选 schematic,Hide
以同样的方式放置 4 个输入 PIN,B, C, D, E
p,在“Add Pin”窗口中, Pin Names: out, Direction选 output, Usage选 schematic,在“Virtuoso
Schematic Editing:…”窗口放置输出 PIN,
l 添加电源和地:
i , (或单击instance 工具图标)
弹出“Add instance”窗口,Browse,Library选 analogLib,Cell栏:vdd, View选 symbol
在“Virtuoso Schematic Editing:…”窗口放置 vdd,
回到“Add instance”窗口,Browse,Cell 栏:gnd, 在“Virtuoso Schematic Editing:…”窗口放置 gnd, ESC , Cancel掉“Add instance”窗口。
l 摆放元件并加网线:
参照下图放好元件(symbol):(移动用 m键,删除用 Delete键,取消命令用 ESC 键)
选“Virtuoso Schematic Editing:…”窗口左边工具栏中的 Wire(narrow),连好网线,ESC
AOI221原理图
为防止连线过于凌乱,A,B,C,D,E 输入与各MOS管间用label连接。
l 层次化设计——symbol 生成
进入“Virtuoso Schematic Editing:std_cell aoi221 schematic”窗口。
Design -> Create Cellview->From Cellview
在 Cellview From Cellview窗口,From View Name 栏为:schematic,Tool / Data Type 栏为
Composer-Symbol。
OK
在“Symbol Generation Options”窗口,单击 Load/Save 按纽,OK
出现“Virtuoso Schematic Editing:std_cell aoi221 symbol”窗口,Design->Check and Save
AOI221 Symbol
l HSPICE Pre-Simulation
l 创建激励信号电路模块
在 CIW 窗口(icfb-Log:/…):Tools->Library Manager,弹出 Library Manager 窗口,在
Library中应有 std_cell,点击它。
File->New->Cellview,
在弹出的“Create New File”窗口 Cell Name 栏中,aoi221_test
Tool 栏中,选 Composer-Schematic, OK
在“Virtuoso Schematic Editing:…”窗口中,按下图加入单元(Instance)、Pin并连线。
AOI221仿真激励
l 编写仿真文件
设置仿真环境。点击 Tools->Analog Environment
设置仿真模型文件路径。在弹出的“Analog Design Environment” (ADE)窗口,点击
Setup->Simulator/Directory/Host… 选HSPICE
Setup->Model Libaries…将TSMC035->models->fp1_hspice->mm0355v.l 加入,Section:tt
关于tt的含义:typical model for 3.3V device
以下摘自mm0355.l
Analysis->choose ;Analysis 选tran(瞬态分析),step1:1n,stop1:320n
Simulate->netlist and run
l 修改生成的王表文件input.ck
添加POST=2 选项。
POST选项的意义:ASCII format
l 运行仿真
hspice inputckt
生成input.tr0
l 观察仿真波形
cscope &
Aoi221前仿真波形
l 分析
从逻辑out=(A.B + C.D + E)’中分析得知,所设计的aoi221在逻辑上是正确的。
l 用Virtuoso Layout Editor工具设计版图
l 035最小尺寸要求
一下是以INVTER反向器为例,介绍035库的各种最小尺寸。
l 熟悉Layout Editor环境
Layout Editor的快速指令
l 在CIW窗口中,选择 File->new
Library Name std_cell
Cell Name aoi221
View Name layout
OK。
l 插入M1_N 与 M1_P
l 布局,重点参考下图
一种aoi221门的版图
读懂其中的并联和串联关系,串联式可以重叠contact,当没有引线连接时可以省去contact。
l 画diff层
(LSW 上方有一栏提示,画任何层之前必须将该层设为当前层。当前层必须可见。LSW 提示:AV:全可见,NV:全不可见;AS:全可选,NS:全不可选。对于某一层,鼠标中键:可见/不可见,鼠标右键:可选/不可选)
l 布线
画poly与path。Poly线宽400n m;path线宽700n m。poly=2λ,path当时设计时主要是想与M1_P和M1_N中的金属层相等。
l 添加引脚
用metal1 pin层,添加引脚,并填上label:A,B,C,D,E,out,vdd!,gnd!
最终得到版图如下:
Aoi221版图
l 建立子目录calibre_drc、拷贝CM35P5_4M.23a.2到此目录
l 将Calibre载入Virtuoso:在CIW窗口中输入load("/opt/calibre/lib/calibre.skl")或者在.cdsinit中包含此行,Virtuoso菜单上就会有calibre的选项了
l 建立*.gds文件:在CIW中将aoi221的layout转到aoi221.gds,并将aoi221.gds存放到之前建立的calibre_drc文件夹中
l 执行calibre DRC:
l 配置Rules
l 配置Inputs
l Run DRC
l 运行结果
l Calibre LVS验证
l 建立子目录calibre_lvs、拷贝cali035pMM5V_2P4M.lvs到此目录
l 建立*.netlist文件:在CIW中将aoi221的schematic转到netlist,并将netlist存放到之前建立的calibre_lvs文件夹中。修改netlist中的NM/PM为N/P。
l 执行calibre LVS:
l 配置Rules
l 配置Inputs
l Run LVS
l 运行结果(如果没有错误的话)
l Calibre PEX提取
l 建立子目录calibre_pex、拷贝TSMC352P4MCalibre.pex2到此目录
l 执行calibre PEX:
l 配置Rules
l 配置Inputs,同calibre_lvs
l Run PEX
l 运行结果: 生成网表文件
l HSPICE post-simulation
l 修改网表文件
把前仿真的网表中aoi221的subckt去掉,添加上PEX生成的网表aoi221.pex.netlist。再者修改aoi221的调用端口的顺序。修改结果如图所示。
l 运行仿真
hspice input.ckt.post
l 用cscope观察波形
l 分析
上图中下面的波形是前仿真的波形,上边是后仿真的波形。其它的输入信号ABCDE,与前仿真中的波形相同。由图中可以看到后仿真产生了比较严重的失真。这主要是由于在画版图时MOS管的W/L比设计的不够好。修补如下
仿真波形如下
由上图可以看到,后仿真的波形已经有了很大的改善,但是效果还不够好,修要继续修改,可惜的是,我现在不具有这种功力与时间去完成这些工作了。
l 报告总结
熟悉了ASIC设计中,full-custom的设计流程。
掌握了Cadence设计工具基本组件的基本用法。
学习了VLSI课程。
很遗憾没有足够的精力严格按最小尺寸来画aoi221的版图;MOS管的宽长比也调得不尽如人意;报告写得比较仓促。
下学期,会试着做一下流程更为完整和复杂的数字IC设计。