Virtuoso设计全定制版图
本文介绍利用virtuoso layout editor(以后简称le)创建全定制版图,以及vituoso le 的一些使用说明。全文将用一个贯穿始终的例子来说明如何绘制全定制版图,一个最简单的反相器的版图.设计过程采用chartered(csm25rf)库—标准CMOS工艺库。
具体内容包括:
1)如何打开virtuoso le和le 的一些设置; 2)使用LSW窗口; 3)使用le 创建一个版图; 4)使用快捷键—bindkey; 5)使用diva验证版图; 6)使用diva 进行LVS;
登陆以后,首先要先创建自己的工作目录,比如Work, cd Work.从csm25rf库所在文件夹下拷贝文件到自己的工作目录下,你的工作目录下必须有文件,不然在LSW窗无法显示绘制版图需要的各个图层。从/CDS_ROOT/tools/dfII/cdsuser目录下拷贝 .cdsinit文件到自己的目录下,该文件是Cadence 自带的软件相关设置的文件,里面有相关字体的设置,Bindkey设置等, 这里主要考虑Bindkey的设置,也可以设置自己的Bindkey,不过 Cadence默认的设置是足够的。当然也可以单单靠鼠标来进行操作,virtuoso le窗口有常用命令的工具栏,不过就我自己的感觉,用快捷键比鼠标要快很多。如果要运行Diva LVS 还得有.simrc文件。(不过这里有一个问题,服务器上的.simrc文件的设置跟csm25rf库有不一致的地方,运行Diva LVS 会出现目录LVS非法的错误。
运行vituoso le
要打开virtuoso le ,首先要打开CIW窗口。在shell 命令行下输入:icfb& 进入CIW 窗口,字符&使得cadence 在后台工作(即可以在shell命令行执行其它命令),也可以在shell 提示符下输入其它的命令来打开CIW窗口,如下图:(在这里也可以输入layout& 或者 layoutPlus&)
检查设计需要的相关库是否存在。在CIW窗口选择Tools->Library Manager 打开Library Manager窗口,如下:
确保csm25rf,basic和analogLib这三个库都已经存在,如果不存在就自己手动添加它们。 小技巧:如果在自己的Library Manager 中发现有的Library 的字的颜色是红色的,把该库删除掉,不然
它可能会引起一些奇怪的问题来.
一些相关的设置
在CIW窗口中,选择Options -> User Preferences ,在弹出的对话框中把Undo level 拖到最大 10,这样在画板图的过程中,如果发现有错误的操作,在还没保存的情况下就可以通过撤销命令(Undo)来撤销相关的操作,User Preference的设置窗口如下图。作为一个版图的新手,出现错误是无法避免的,virtuoso le 并不是很听话。当然如果还没保存,又发现有错误,但又撤销不了,或者是因为没有修改Undo
level值(默认为1),或者已经经过很多步的操作,这时也并不是一点办法都没有了,只要还没保存过,就可以在virtuoso le窗口中运行design->disguard change来返回到上次保存的状态,不过这个方法有时会浪费好长时间的工作。在Command Controls中把Option Displayed When Cammand Start 设置为on ,则每次执行一个命令时其相应的对话框就会出现,在这种情况下,就可以对命令的一些参数进行设置,也有利于更好了解一些常用的命令。
开始设计过程
假如现在有如下图所示的逻辑电路图,技术库为csm25rf,P管和N管采用相同的尺寸,W=600n,L=3u。
现在要先建立自己的工作库。
在CIW窗口中选择File-〉new-> new library 建立自己的库。在弹出的对话框中,在libraryname 中输入库的名字,比如guan;在Technology 选项选择Attach to an existing techfile,点击OK,弹出Attach Design Library to Technology File 的对话框,如下图:
在Technology Library 选项卡中选择csm25rf,按下OK ,两个对话框窗口消失。现在已经建立了自己的工作库guan,并且它与技术库csm25rf相关联。
在前面的New Library窗口Technology File选项中,如果没有现成的技术库,而有相应的技术文件(techfile),那么可以先选择Compile a new techfile来创建自己的技术库。如果该选项被选上,点击OK后会弹出一个输入ASCII码文件(techfile)的对话框,在对话框中输入技术文件的完整路径,点击OK,如果没有错误,一个自己的技术库就生成了。不过利用这种方法生成的技术库里面包含的器件数量一般比较少,可以自行添加,这里涉及库开发的问题,超出本文的讨论范围。
为了运行Diva LVS ,还要把前面的逻辑电路图添加到刚刚创建的工作库中。
下一步,创建相对于上图中的逻辑电路图的版图。
在CIW窗口中,File->new->new cellview,打开创建新cellview 的对话框。按照下图中的设置设置对话框,Library Name选择guan,Tool 选择Virtuoso, cellname 为inv.点击OK。
这时会弹出三个窗口,其中一个是le 的窗口,一个是le的说明窗口,另一个是LSW窗口。对于le和LSW窗口在后面的图片中会出现,在这里就省略了。下面的一段斜体字是Le和LSW窗口的相关使用说明及相关工艺,可以跳过去不看。
Le及LSW窗口相关 版图视窗(virtuoso le)打开后,掩模版图(le)窗口显现。视窗由三部分组成:Icon menu , menu banner , status banner. Icon menu (图标菜单)缺省时位于版图图框的左边,列出了一些最常用的命令的图标,要查看图标所代表的指令,只需要将鼠标滑动到想要查看的图标上,图标下方即会显示出相应的指令。 menu banner(菜单栏),包含了编辑版图所需要的各项指令,并按相应的类别分组。几个常用的指令及相应的快捷键列举如下: Zoom In -------放大 (z) Save ------- 保存编辑(f2) Undo ------- 取消编辑(u) Move ------- 移动(m) Rectangle -------编辑矩形图形(r) Zoom out by 2------- 缩小2倍(Z) Delete ------- 删除编辑(Del) Redo -------恢复编辑 (U) Stretch ------- 伸缩(s) Polygon ------- 编辑多边形图形(P) Path ------- 编辑布线路径Copy -------复制编辑 (c) (p) status banner(状态显示栏),位于menu banner的上方,显示的是坐标、当前编辑指令等状态信息。 在版图视窗外的左侧还有一个层选择窗口(Layer and Selection Window LSW)。 LSW视图的功能: 1)可选择所编辑图形所在的层; 2)可选择哪些层可供编辑; 3)可选择哪些层可以看到。 只要在刚才运行Icfb的目录中有正确的文件的拷贝,在LSW窗口就会显示我们设计中需要的所有图层。为了简单起见,以下仅列出绘制我们这个版图所需的最少版图层次。 层次名称 说明 Nwell Pdiff Ndiff CNT Met1 Via1 Met2 Text Poly2 N阱 P有源区 N 有源区 引线孔,连接金属与多晶硅/有源区 第一层金属,用于水平布线,如电源和地 通孔,连接metal1和metal2 第二层金属,用于垂直布线,如信号源的I/O口 标签 多晶硅,做mos的栅 使用LSW窗口
在LSW窗口的图层栏点击一个图层,比如metal1,则metal1为当前图层,在le 窗口就可以画出该层的图形来,编辑过程不会有影响。
如果想要只显示metal1层,那么请先选择metal1,然后在图层资源的上方选择NV,鼠标点击Le窗口,在键盘按下f 键,则le 视图窗口就隐藏其它的图层,这你可以只编辑该图层,而不受其它图层的影响。接着如果想要多显示另外一层,比如contact,用鼠标在LSW窗口点击contact,然后鼠标点击le窗口,按下f 键,看看是不是contact层也显示出来了。利用同样的方法,可以显示更多的图层或者任意的一层或几层。当编辑完之后,要回到全部显示时,在LSW窗口选择AV,切换到Le窗口,按下f 键,显示全部图层。
在建立相应的版图的图形后,如果需要编辑新建的图形,这时可能会遇到这样的一个问题,由于设计的版图比较复杂,多个图形叠加到一起,结果在想选择metal1的一个图形时,不小心选上了P管,而这时如果执行的命令是移动或者拉伸,就有可能造成先前管子的布局和位置的改变,如果是删除则可能会把管子删除掉,这会给的设计带来很大的不便。在这种情况下可以通过LSW窗口的来控制器具可选性,在LSW 窗口中比较靠上方处有两个选项,默认都被选上,如果不想让器件为可选,则取消inst前面的选上标志,同样也可以取消Pin的可选性。另外也可以控制那些图层可以被编辑,方法类似于如何控制图层的显示,其中的选项为NS和AS,通过设置可以选择任意的图层来编辑。
Le的相关选项设置
在le 菜单栏中,选择option->display (快捷键e)打开display options 对话框,如下图。在Display levels 中把from 0 to 0 改为 from 0 to 21(或者其它的大于零的数),该选项设置显示的深度,如果不改,将无法看到调用的器件的内部结构。在Minor Spacing 填入,Major Spacing:,X Snap Spacing:, Y Snap Spacing:。这些设置有利于编辑时候的图形对准,当然有时候会设置得更小。其它的保持默认。
还有一个需要更改设置的地方,选择option->layout editor(快捷键shift+e),在Layout editor option 对话框中 取消其中的gravity on 选项,点击OK。请务必保证gravity on为off.
添加器件
现在添加反相器N管和P管,在工具栏中选择addinstance 或者按快捷键(i),弹出添加器件对话
框(Create Instance),选择Browse,在Browse Library对话框中,Library选择csm25rf,Cell为pmos_tk(厚栅),view为layout 改变管子的栅长和宽为w=3u,l=600n,如下图。然后在le窗口中点击鼠标左键,添加一个P管。
用同样的方法添加一个N管,完成后的版图如下所示。图片的左边是LSW窗口,其结构:左上方为编辑菜单和帮助按钮,然后是当前选择的图层,接着下面是器件与Pin的可选性控制选项,再下来是全部可见与不可见,全部可选与不可选按钮,再下来是图层资源框。LSW窗口再过来就是le 窗口的工具栏,其中列出大部分常用命令的按钮。
添加矩形
在N管和P管之间需要用多晶硅来连接两个管子的栅。在LSW窗口中点击POLY2(在charter库中利用poly2作为管子的栅),切换到Le窗口,利用鼠标点击工具栏中的下方倒数第二个按钮或者按下r 键,放大到两个管子之间的地方,就可以开始画矩形了,选择的第一个点是P管的多晶硅的左下角,第二个点是N管的多晶硅栅的右上角。如下图所示,多晶硅矩形把两个管子的栅连接到一起。
利用同样的方法在输出端用金属1把两个管子连接起来,该软件的默认设置是重复命令,即在画完一个矩形后可以不执行任何其它命令继续画更多的矩形,按ESC键来可以取消当前命令。但一旦执行下一个命令后,前一个命令自动取消。
添加多边形
在LSW窗口中选择MET1作为当前图层,在Create菜单选择Polygon或者按工具栏上下方倒数第四个按钮(shift+p)进入添加多边形状态,如果在先前user preference 对话框中选上了option displayed when command start,则可以看到一个新建多边形的对话框,如下。
这里Snap Mode 为orthogonal 表示多边形的各边只能为垂直或水平方向,当然还有其它的选项,比如Anyangle(任意方向)。Net Name处可以不输入。
现在首先添加电源连线,用鼠标多次点击形成多边形的多个顶点,就可以构成一个封闭的图像,如下
图。
继续添加地线,得到如下所示的粗糙的版图,还需要编辑才能不致于有错误。
从图中可以看出,两个多边形和金属矩形连线都没有对准。
编辑版图
现在我们要通过拉伸来使得各个图形相互对准。在菜单栏Edit->stretch(s)或者按下工具栏的相应按钮,进入到拉伸状态。放大到要编辑的地方,选择要调整的边,不能把这个图形选上,拖动鼠标拉到合适的地方,如下图。
注意:在这里执行拉伸命令的时候请保证当前没有选中的器件或者图形。如果有选中的图形,则相当于执行移动命令。
一个小技巧:利用鼠标右键可以放大到自己需要的地方,先用鼠标右键点中要放大的区域的右下角,按住往左上角方向拖动,会有一个方形的边框表示选择的区域,如果看到该边框已经包围了需要放大的区域,放开鼠标右键,看看是不是如你所愿地放大了。如果鼠标往右下角拖动,则会起到缩小的作用。
调整后的版图如下所示.
现在还需要添加输入端,反相器的输入端应该为金属,所以要添加接触孔。在菜单栏Create->contact(o),弹出添加接触孔的对话框,如下。
在Contact Type 选项选择M1_POLY2,点击Hide,在le 视窗适当位置点击添加接触孔。于是我们得到一个漂亮的版图如下。接下来将对版图进行验证。
使用DIVA
DIVA 和dracula都是CADENCE的,而且集成到了virtuoso平台,一般说,dracula更精确,但是diva更加容易使用,况且学会DIVA了再学其它的验证软件会更容易。
DIVA DRC
现在我们将要对先前设计的版图进行设计规则的检查。
首先,我们还得先做一件事,检查我们的环境变量CDS_Netlisting_Mode,在shell提示符下输入:env | grep CDS_Netlisting_Mode,确保该变量的值为Analog,如果不是可能需要找管理员,因为如果这个值设置不当会引起一些很奇怪的问题,那时是根本无法从问题上找出原因来的。网上有很多通过把该变量改
为Analog就解决问题的说法。接下来就可以开始了。
在le窗口,选择verify-〉DRC 打开DRC对话框如下
在这里需要在Switch Names 处填上验证方法,可以通过键盘输入,如果已经很熟悉了。鼠标点击Set Switches按钮,弹出如下图所示的Set Switches对话框,在对话框中用鼠标点击,就可以选择相应的项,也可以通过在选择过程中按住CTRL键来选择多项,不过有些项是不能重复的,而具体每一项是干什么用的可以通过查询该技术库的说明文件,比如2P4M表示两层多晶硅四层金属,即金属4为顶层金属。
在该对话框点击OK后,所选择的项就在DRC对话框的Switch Names后面出现。在DRC对话框单击Ok,DRC对话框消失,开始进行DRC检查。检查完成后,在CIW窗口有检查结果的相关信息输出,在进行设计
的过程中可能要经常通过CIW窗口来获得相关信息。与此同时,在版图上有错误的地方会被一些专用的图层标出来,但有时由于版图太复杂了,无法很快从版图上直接找到一些错误。检查结束后的CIW窗口和le 窗口如下。
通过CIW窗口我们可知,版图中存在违反金属1的最小面积规则,金属1最小面积为:2,但是通过layout 窗口是不太好定位的。
现在要找出出错的地方,在layout窗口选择verify->marker->find,得到Find Marker对话框,在对话框中,把Zoom to Marker选上,其它的保持默认。
按下Apply后,layout窗口放大到相应的出错的地方,同时还有一个marker text窗口,其上面的信息解释当前的错误,如下。
取消掉FindMarker和解释窗口(Find Marker窗口按下Cancel键),缩小layout视图就可以确定出错的位置了,如下图,出错在多晶硅连接的接触孔处。
根据出错的提示信息,可以在接触孔出添加金属,使得金属1的面积不小于,保存后再运行DRC,结果如下图。
CIW窗口给出信息找到0个错误,就是说以上版图已经没有违背物理设计规则的地方了,虽然这个版图并不完整,比如版图上还没有N井和衬底的偏置连接。但我们还是用这个版图继续去完成下面的步骤,当然在下面的验证过程中我们会遇到一些错误。
版图的提取
现在我们可以将刚才那个版图进行提取,这一步是必须的,在LVS或者ERC时我们不再用刚才那个版图文件,即.layout文件,而使用.extracted文件。 Le窗口选择verify->extract,打开Extractor 对话框。
如同在DRC对话框,这里也只要在SwitchNames 中输入相关消息就可以了,其他的信息只要在建立库时指定正确的技术库,其中大部分内容都会被填充。对于提取方法(Extract Method)的设置,默认为Flat,是全新提取,会覆盖先前的提取。点击Set Switches按钮后得到如下SetSwitch 对话框,选择No_Soft_Checks(工艺说明文件上有相关选项的说明),点击Ok。
在Extractor对话框点击OK,开始版图的提取。运行完成后,查看CIW窗口,如下,没有错误,我们可以进行下一步验证,如果有错误,找到并改正它。
现在我们就可以通过design->open打开Open File对话框,如下,在View Name 选项选择extracted。
点击Ok打开提取过的版图,如下图,可以看到一些跟逻辑电路图上相同的管子符号,除了偏置端悬空外,管子的其它各个端点都已和特定的节点连接上,各个节点的命名由系统自动生成,当然也可以通过添加Pin来自定义各个节点的名字。
运行LVS
在菜单栏选择verify->LVS,打开LVS对话框,
按照上图在Create Netlist处进行填写,可以通过Browse按钮来填充。在View处分别为schematic和extracted,请不要在View上填入layout,这里只能是Schematic和Extracted的比较.在对话框的左下角的priority处填上20,默认值为0,改为20会看到更多的信息。其它的采用默认,点击Run按钮,开始LVS。LVS是后台运行的,在运行LVS 过程中可以干一些其它的事情,当LVS运行完成后,会弹出一个运行成功或失败的对话框,如下,显示运行成功。
现在可以查看运行结果了。如果弹出的对话框显示失败,则没有输出文件生成。从这里可以看出,虽然我们的版图上有错误,但LVS还是可以成功运行的,不过输出结果是肯定有Missmatch的。LVS过程出现
错误往往是由于软件设置不当造成的,可以通过LVS对话框的Error Display来查看信息,同样也可以通过CIW窗口,不过如果LVS运行出问题了,往往无法通过错误信息直接找到错误的原因,比如有时会看到像:LVS目录非法的信息。
在LVS窗口中点击Info按钮,打开Display Run Information对话框来查看信息,如下。
面板上有很多按钮,通过按钮上的标签就可以得到相应的运行信息,比如,点击Log File查看运行日志,在Schematic处点击Netlist可以看到逻辑电路图的网表输出,而点击Extracted的Netlist按钮则可以看到版图提取生成的网表文件,LVS就是通过先生成两个视图的网表,然后再比较两个网表文件的。点击Output来查看LVS的输出,如下图。
到此已经完成版图的LVS。祝贺你,这个使用说明结束了。
以上是在大学的时候写的,全部属于原创. 如有疑问请联系
因篇幅问题不能全部显示,请点此查看更多更全内容