1.逻辑库的建立
在Cadence系统启动后,选择CIW界面中的File菜单,选择New选项中的Library,弹出图2-2所示新建一个库的界面。
图2-2 新建一个库的界面
在图2-2所示界面中,需要输入新建立的库的名称以及这个库在文件系统中所存放的目录,另外还要选择工艺技术文件(TechnologyFile)。这个TechnologyFile一般是指工艺库,由半导体加工线(Foundry)提供。如果设计的电路是需要画出版图的,就必须要有工艺库,这时可以选择链接到一个已经存在的工艺技术文件上(Attach to an existing techfile),或者编译一个新的工艺技术文件(Compile a new techfile)。如果不需要画Layout,原则上可以不需要工艺库,可以选择Don't need a techfile,但为今后进行逻辑编辑时显示方便,也可以选择链接到一个已经存在的工艺技术文件上。
注意:关于工艺技术文件的选择也可以在版图库建好之后,在CIW界面中选择Tools菜单中的Technology File Manager选项,进行相关的设置。关于这些内容将在本章后续部分中作具体描述。
在图2-2界面中,Name一栏填入库名D508SCH,选择路径为/home/angel/cds/,选择Attach to an existing techfile,单击“OK”按钮后,出现图2-3所示链接到一个已有的工艺文件的界面。
图2-3 链接到一个已有的工艺文件界面
选择New Design Library为D508SCH,而Technology Library可以选择Cadence中自带的sample,这样就在/home/angel/cds/目录下新建了一个名为D508SCH的库。
注意:/home/angel/cds/是一个Cadence设计系统中最常见的目录路径,其中/home是一个Cadence系统安装的默认目录,通常都会取这个名字,或者类似的名字,如home1等。angel是进入Cadence系统的用户的名字,是在安装Cadence系统的时候预先设置好的,不同的用户名称不同,如asic01等;cds是在angel这个用户名下使用者自己建立的一个工作目录,有些使用者不习惯建这样的工作目录,也可以在angel或者asic01等用户下直接进行逻辑输入、版图设计等各种操作。本章及后续章节相关内容介绍时都基于/home/angel/cds这个工作目录;而在这个工作目录下,除了上面产生的D508项目的逻辑库D508SCH之外,随着项目的进行会产生各种用途的目录。
库是Cadence设计系统中的一个重要概念,任何一个电路或者项目都是以一个库的形式存在的。每个用户可以引用这台工作站或者PC上任何一个该用户具有读取权限的库,同时,每个用户创建的库也将可以被任何具有读取权限的其他用户所引用。为了引用其他的库必须要设定这个库的路径,并选定这个库的名称。设定新引用库的名称及路径方法如下:选择图2-1 CIW界面中的Tools菜单,并选择Library Path Editor选项,出现图2-4所示的库路径编辑器界面。
在图2-4界面中,可以看到刚才新建的D508SCH库,即在Library一栏中的名称为D508SCH,在Path一栏中路径为/home/angel/cds/D508SCH。如果D508SCH不是通过以上方法新建的,而是从其他用户或者其他路径复制过来的,那么只要在图2-4中的Library栏中填写D508SCH,在Path栏中填写/home/angel/cds/D508SCH,然后保存、退出,就完成了设置工作。在图2-4界面中,除了刚新建的D508SCH库外,还有很多其他的库,如Cadence自带的basic库、analoglib库和sample库等,因此D508SCH库可以引用其他这些库中的内容,而其他库也可以引用D508SCH中的内容了,当然在引用或者被引用之前,先要打开库管理器。
图2-4 库路径编辑器界面
库管理器负责对Cadence设计系统中各种库进行“管理”。具体管理方式是:选择图2-1CIW界面中的Tools菜单,并选择Library Manager选项,出现图2-5所示的库管理器界面。
图2-5 库管理器界面
在图2-5中,可以看到左边第一栏当中有很多的“库”,包括刚建的D508SCH库,这些库出现在Library Manager当中,也就意味着可以在逻辑图(schematic)输入或者版图(layout)输入中引用了。另外库管理器还可以进行库的复制、重命名和删除等工作。
其实图2-5中这些库的路径信息是由一个名为cds.lib的专门文件来保存的,这个文件就放在启动Cadence的目录下,如/home/angel/cds下面有一个cds.lib。用Vi编辑器打开cds.lib这个文件,如图2-6所示,可以看到所有库的路径信息都保存在这个文件当中。因此如果要新增一个引用库,就直接在cds.lib中增加一行,如DEFINE D508SCH/home/angel/cds/D508SCH,那么下次启动icfb之后,就会出现刚增加的D508SCH这个库。相反如果要去除一个引用库,可以在cds.lib文件中把这个库所在的那一行删除就可以了,或把这个库所在的那一行注释掉(见图2-6中加“#”的库就是被注释掉的),但实际上这个库的内容还在,只是这样操作后不能引用这个库而已。从这里可以看出在哪一个目录中启动icfb很重要,关系到库的引用路径问题,这个对于新学习者一定要注意。
图2-6 一个cds.lib文件示例
此外Cadence还会在启动目录下面产生一系列的Log文件,用来监控Cadence执行过程中的信息,这个就是在2.1.1节中所提到的信息界面的内容。为了能够准确看到这些Log文件,一定要注意目录的设置,通常在根目录(如上面提到的/home/angel)下建一个自己的目录(如上面提到的/cds),以后每次都先进入这个目录再启动icfb。
观察图2-5中的D508SCH库,发现这个库跟其他库相比在其名称上有阴影部分,表示这个库已经选中,但在Cell一栏以及View一栏中没有任何内容,表示在这个库中还没有建任何的逻辑图或版图,因此接下去就可以进行逻辑图的输入了。
2.传输门逻辑图的输入和参数设置
(1)逻辑图输入界面
选择Library Manager中File菜单中的New选项,选择Cellview一栏,弹出图2-7所示的新建单元图形界面。
图2-7 新建单元图形界面
图2-7中,Library name(库名),也就是正在建传输门这个单元所在的库的名称,选择D508SCH;Cell name(单元名称)(注意:输入单元名称时尽量要避免使用数字开头的名称,特别是如果要对所建单元进行hspice仿真的情况。因为hspice的命名规范是对数字开头的字符串忽略后面的字符,只保留数字),输入TRAN。
View name(视图名称),这里要输入的是TRAN单元的逻辑图的视图格式,输入schematic;Tool(工具),选择Cadence系统中的逻辑图输入工具Composer-Schematic。完成以上输入后,单击“OK”按钮,弹出图2-8所示的逻辑图输入界面。
图2-8 逻辑图输入界面
首先浏览这个逻辑图输入界面。
1)最顶部界面栏显示为:Virtuoso Schematic Editing:D508SCH TRAN schematic,显示当前正在输入的是D508SCH这个库中的TRAN这个单元的逻辑图(schematic)。
2)顶部第二行为状态栏(Status Bar),显示输入的命令(Cmd)和所选择逻辑图编辑元素的个数(Sel)。
3)顶部第三行是菜单栏,从左到右为:Tools(工具)、Design(设计)、Window(界面)、Edit(编辑)、Add(添加)、Check(检查)和Options(选择)等。
①Tool菜单提供Cadence系统跟逻辑设计相关的一些工具。比如仿真工具NC—Verilog、Spectre、Diva等。
②Design菜单提供的是跟设计相关的一些选项,如保存、新建一个设计、打开一个设计等;其中Hierarchy(层次)选项非常重要,它用于逻辑输入过程中采用嵌套的方法,在简单逻辑单元基础上生成逻辑较复杂的设计。
③Window菜单中的各选项有调整界面的辅助功能。比如,Zoom选项对界面放大(Zoom in)与缩小(Zoom out),Fit是将界面调整为居中,Redraw为刷新。
④Edit菜单实现具体的编辑功能,主要有取消操作(Undo)、重复操作(Redo)、拉伸(Stretch)、复制(Copy)、移动(Move)、删除(Delete)、旋转(Rotate)、属性(Properties)、选择(Select)和查找(Search)等子菜单。
⑤Add菜单用于添加编辑素材,如元件(Instance)、输入/输出端点(Pin)和线(Wire)等。
⑥Check菜单主要是用来检查当前正在编辑的单元的正确性、层次性等。
⑦Options菜单主要是设置一些编辑界面的基本特性,如显示的格点和分辨率等。
4)逻辑图的输入主要是用图2-8界面左方一排图标栏工具,包括为Check and Save(检查并存盘)、Save(存盘)、Zoom out by 2(放大两倍)、Zoom in by2(缩小两倍)、Stretch(延伸)、Copy(复制)、Delete(删除)、Undo(取消)、Property(属性)、Component(添加元件)、Wire(Narrow)(画细线)、Wire(Wide)(画粗线)、Pin(添加引脚)、Cmd options、Repeat(重复),这些图标栏工具也分别可以在上面介绍的菜单中找到相应的菜单项,并且在菜单项中显示其快捷键(关于逻辑图输入的快捷键会在本书附录中详细列出)。
(2)传输门的逻辑图输入
1)元件的放置。
传输门由两个MOS管组成,一个PMOS管,一个NMOS管。传输门的这两个MOS管的衬底电位不一定就是整个电路的电源和地,因此要采用四端器件pmos4、nmos4,这点跟普通的数字门单元不同,普通的数字门中管子的衬底电位就是整个芯片的电源和地,因此通常只要采用三端器件pmos、nmos就可以了。pmos4和nmos4在Cadence自带的analoglib库中都已经定义好了,可以调用(Instance),但为了今后逻辑库数据传递方便,可以将analoglib库中的这两个单元复制到D508SCH库中(如果是选用三端器件pmos/nmos,可以从Cadence自带的sample库中将这两个单元复制到D508SCH库中)。具体方法:
选择Library Manager中的analoglib库,找到PMOS4这个cell(单元),选中该单元,单击鼠标右键,选择Copy命令,弹出图2-9所示的两个库之间的单元复制界面。
图2-9 两个库之间的单元复制界面
填写目的库为D508SCH,需要复制的单元pmos4,然后单击“OK”或者“Apply”按钮,出现图2-10所示的两个库之间的单元复制选项界面。
图2-10 两个库之间的单元复制选项界面
在图2-10中,单击“Overwrite All”按钮,那么在该图中的Action一栏就从原来的Don’t Copy变成Overwrite,表示所复制内容将覆盖库D508SCH中的相同内容,然后单击“OK”按钮,就完成了从analogLib库把pmos4这个单元复制到D508SCH这个库中的动作。同样把nmos4也从analogLib库复制到D508SCH库。
完成以上单元复制后可以进行元件的放置。在图2-8所示的逻辑图编辑界面中,选择Add菜单栏中的Instance,出现图2-11所示的添加元件界面。
图2-11 添加元件界面
单击该图中的“Browse(浏览)”按钮,出现图2-12所示库和元件浏览界面。
选择D508SCH库中的单元pmos4,并选择视图symbol,按<Enter>键,在逻辑图输入界面中用鼠标单击任何一个地方,将会出现一个pmos4管,如图2-13所示。
在图2-13中左上角的Cmd可以看到当前使用的是Instance,即调用元件命令。(www.xing528.com)
用同样的方法调用一个nmos4进来。这样传输门的两个元件就放置好了。
图2-12 库和元件浏览界面
2)元件之间的连线。
在元件放置完成后可进行连线。先用鼠标选择左边工具栏中的Wire工具,再单击一下器件的连接点A,然后单击另一个器件的连接点B,就可用Wire把两个器件连接起来了,照此方法把两个MOS管按照传输门的接法连接起来。连好线的传输门逻辑图如图2-14所示。
图2-13 放置PMOS4管子
图2-14 连好线的传输门逻辑图
3)添加引脚。
选择Add菜单中的Pin选项可以给传输门添加引脚,弹出的界面如图2-15所示。设置Pin names为VI,Direction为input,Usage为schematic;单击“Hide”按钮,然后在逻辑图编辑界面空白处单击一下鼠标,会出现引脚VI。
图2-15 添加输入引脚
使用同样的方法添加输入引脚CP、CN和输出引脚VO,只不过针对输出引脚VO,Direction要改成output。针对图2-14中的两个MOS管的衬底,使用同样的方法添加双向引脚VP和VN,其中Direction改成inputoutput。
以上工作完成后,传输门的逻辑图输入就基本完成了,得到图2-16所示的传输门逻辑图。
图2-16 传输门逻辑图
(3)传输门中元件的参数设置
选中图2-16中的pmos4,然后选择Edit菜单中的Properties选项,选择Objects,弹出图2-17所示的器件参数设置界面。在该图中可以设置pmos4的属性,以下为该元件的主要参数。
图2-17 器件参数设置界面
1)Model name:器件模型名称。
2)Multiplier:乘数因子。
3)Width:沟道宽度。
4)Length:沟道长度。
5)Drain diffusion area:漏区面积。
6)Source diffusion area:源区面积。
7)Drain diffusion periphery:漏区周长。
8)Source diffusion periphery:源区周长。
9)Drain diffusion res squares:漏区电阻方块。
(4)传输门逻辑图输入完成后的检查
在以上步骤完成后,从Design菜单中选择Check and Save,弹出图2-18所示的传输门逻辑图检查结果界面,其中显示了错误(errors)或者警告(warnings)的数量。若有错误或者警告,则会在逻辑图上相应的地方显示一个黄色的叉号,并且高亮(HighLight)显示,如图2-19所示。
图2-18 传输门逻辑图检查结果界面
图2-19 错误或者警告在逻辑图中的高亮显示
查看错误或者警告的方法是选择Check菜单中的Find Marker选项,会弹出图2-20所示的“错误警告”对话框(也可以在CIW界面中的信息界面中查看错误信息)。按照图2-20中的提示进行必要的修改(修改的时候先要删除黄色的叉号,然后再在对应的位置进行改正)。图2-20显示的例子中3个警告信息分别是VN的pin是悬浮的;节点VN是悬浮的;调用名称(instance name)为M0的MOS管的B的pin是悬浮的。造成以上警告信息的原因是有一根线没有连好。
图2-20 “错误信息”对话框
按照错误或警告的提示修改逻辑图,直到没有提示信息,那么这个传输门的逻辑图就完成输入了。
3.传输门符号的建立
在传输门的逻辑图输入完成后需要对它创建一个符号,即symbol view,具体操作如下所述:
在已经完成传输门逻辑图输入的编辑界面中选择Design菜单下的Create Cellview选项,然后选择From cellview,弹出图2-21所示的产生符号界面。
图2-21 产生符号界面
其中库名为D508SCH,单元名为TRAN,From View Name选择schematic,To View Name选择Symbol等均已经自动设置好,直接单击“OK”按钮,弹出图2-22所示的产生符号选项界面。
图2-22 产生符号选项界面
以上界面中库名、单元名、视图名都已经自动设置好了,CP等6个Pin的位置是根据图2-19中这几个Pin的位置自动选择的,如CN、CP、VI放在左边,VO放在右边等;这些位置可以进行调整,依据是将要建立的Symbol中这些Pin所摆放的位置,这个位置跟通常的习惯如左边输入、右边输出等相关;这些Pin摆放的位置合适的话也会使所建的Symbol比较美观且能够直观显示Pin的输入/输出属性。在图2-22中进行相应的设置后单击“OK”按钮,出现图2-23所示的自动生成的传输门符号界面。
图2-23 自动生成的传输门符号界面
通常自动生成的单元符号都是图2-23所示的矩形框图。为了直观地表示单元的一些特征,并且跟其他场合通常所见的该单元符号保持一致,需要对以上矩形框图进行修改。修改前首先要把图2-23中的绿线框删除,但红线框保留,另外[@partname]是在schematic中显示的该传输门的名称;而[@instanceName]是在schematic中显示的该传输门的调用名称,这两项需要保留。然后选择Add菜单中的Shape选项,添加所需的形状,形成图2-24所示的形状修改完成的传输门符号图。
图2-24 形状修改完成的传输门符号图
选择Add菜单中的SelectionBox选项,提示输入矩形框的两个角,确保图2-24中所有的Pin都在该矩形框上,出现图2-25所示最终的传输门符号图,跟图2-24相比,最终的传输门符号图比较美观。
图2-25 最终的传输门符号图
然后选择Design菜单中的Check and save选项,检查以上传输门的符号图是否有错误,并且存档,传输门符号检查信息输出界面如图2-26所示。
图2-26 传输门符号检查信息输出界面
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。