Virtuoso的Layout操作与Calibre DRC&LVS
Virtuoso的Layout操作与Calibre DRC&LVS
很久之前写过一篇关于Virtuoso版图的基本操作以及怎么运行Calibre的DRC和LVS,但没有记录Virtuoso Layout的快捷键操作,也没有介绍怎么进行DRC和LVS的debug。在这两年的学习工作中,积累了一些经验,结合在b站上看到的一个很好的视频,做一些记录。
首先是Layout的基本流程,完成原理图是第一步。在进入版图时,使用Layout XL或者GXL是更好的选择,Layout L没有将原理图链接到版图绘制界面,提供很多高亮的辅助功能,比如instance和net的对应,还可以看到每个图形对应的Net的小图标(黑底白字),使用XL或者GXL可以更高质量的完成版图。在原理图界面Launch->Layout XL/Layout GXL即可。
快捷键大全还可以看这篇文章。
在Layout界面中,Option->Display Options中(快捷键按E),右上角Gird Controls中可以选择的网格间距,将X Snap Spacing和Y Snap Spacing设置到0.005是常见的操作(也看具体的PDK,例如TSMC28的DRC检查时,会查图形是否在0.005的Grid上,如果出现了偏离0.005倍数,比如0.006这种坐标会报off-grid的DRC错误)。
直接用Connectivity->Generate->Generate Layout中勾选Instance和I/O Pins,I/O Pins标签页中可以选择将Pins要放置的Layer(根据版图出Pin的需求选择),勾选Create Labels As Label,选择Label所生成的层次,一般会选择Same As Pin(与LVS相关,因为Calibre LVS并不看Virtuoso Layout的Pin,只会看Label,根据Label Attach到的图形将其对应识别出Pin)在Schematic中选中的线和Instance会在Layout中跟随高亮。
通过Shift+f快捷键将Layout从Instance View(红框状态)变成显示版图细节的状态,用Ctrl+f快捷键则可以恢复红框状态(可以减少版图渲染显示的时间,在看大版图要进行拖动时很常用),通过Connectivity->Incomplete Nets->Show All...高亮出所有要连接的线,重复这个操作可以关闭。通过Connectivity->Define Device Correspondance查看版图和原理图的对应关系,有些情况下版图没有和原理图关联好的情况时,可以在这里重新Bind。选中窗口左右的两个对象然后点击左下角Bind按钮就能进行Bind。
按左键拖动框选多个对象,按右键拖动框选是自适应缩放到框选范围,单独在某个对象上右键会跳出一些复选框,例如刚才的Bind的操作也可以在某个版图中的Instance上右键后来操作。滚轮本身是放大和缩小,按住Shift或Ctrl再滚轮分别是水平和垂直滚动。按住Shift单击左键可以多选目标,按住Ctrl是取消选择。如果开了大写锁定会默认成Shift+x。单独按F是自适应缩放整个版图。Shift+Z是一个步进放大,Ctrl+Z是步进缩小,按Tab后点击某个位置会将整个版图中心移动到点击处。
通过I键可以插入Instance,但是不会和原理图建立Bind关系。选中对象后按Q可以进去编辑属性界面,可以调整诸如宽长比等。Ctrl+D或者点击空白处可以取消选择。Shift+Q可以查看当前页面的属性。按U可以撤销前一步操作,按Shift+U可以还原前一步操作。按M后可以拖动Instance,按Esc可以退出拖动状态。
Layout XL下,修改了原理图属性后(例如更新了长宽比),可以用Connectivity->Update->Schematic Parameters来更新原理图参数。反之如果更新了原理图,可以用Connectivity->Update->Layout Parameters来进行更新。
按P进入连线状态,连线前在LSW中选中自己要走线的层次(一般会勾选Used,Routing来仅显示走向层次,主要是Metal层次),鼠标放置到要连接的边上时会出现一个高亮和自动连接,单击之后会开始连线,再次单击可以进行折线,在XL中Bind好的Instance之间会自动出现引导的虚线辅助连接。在连线状态时,按F3可以对当前走线进行设置,调整诸如Width等属性。如果勾选了Auto Terminate,那么在连到了目标上时走线会自动退出。如果没有,或者是想中途结束走线的话,双击也是可以的。在版图中出现Path短路时,XL会自动出现高亮的框。选中线之后按Del可以删除掉这根线。按Shift+P可以绘制多边形,按R则是绘制矩形。如果想要走斜线或者任意角度的线,可以按N,或者点左上角的小十字图标(代表只能垂直或者水平移动图形),变成斜线或者星型,对应45度和任意角度。按住某个元素按C,是复制功能,按F3可以进行一些设置操作。还有一个常见的操作是选中某个对象后按H,然后设置复制后自动偏移的坐标(如果需要移动角度,则要通过N或者图标改变可以移动的方向)然后Apply后按句号.,就可以重复操作,这个操作用来处理阶梯走线是比较好用的。按K可以创建标尺,按Shift+K取消全部标尺。
按S是拉伸操作,可以选中某个单边后进行拖动(或者线的中心)。选中某个图形后Shift+C可以进行裁剪(通过拖选框),按F3可以进入高级选项。Shift+O后选中图形可以进行旋转操作。
对其操作可以通过Align的图标操作(在功能栏右键后,Align打勾后开启)通过勾选第一个小勾可以设置对齐后的X间距,第二个小勾设置对齐后的Y间距。也可以通过两个都开来快捷的实现阶梯状图形。按A点击要对齐的两个边可以实现快速对齐。
按O来创建通孔,在界面中选择是从哪一层到哪一层的通孔。
可以通过组合图标(虚线圈包裹几个图形)来将几个图形进行组合,旁边带小叉的取消组合(也可以通过Create->Group和Edit->Group->Ungroup来操作)。
通过属性栏可以观察是全选择(F)Select模式,直接整个图形,按F4可以切换到(P)Select的部分选择模式。部分选择模式也可以用于选择多个对象,再按F4回到(F)Select。按G可以进入自动吸附模式(在连线多时可能反而麻烦)。选择某个区域后按T可以显示重叠图形中的所有层次,也可以在LSW中通过取消勾选V和S来设置是否可见和是否可选。多选几根线后按M可以将这几个线组合成一个对象。Ctrl+S后,从上到下切割,可以对切割线右侧的线进行移动,从下到上可以对左侧的线进行移动。
Connectivity->XL Probe可以去高亮各种要看的对象。按E后取消勾选Enable Dimming可以退出高亮模式。通过Connectivity->Net Tracer->Add/Remove可以把一条Net上相关连接到的图形都高亮。Connectivity->Net Tracer->Remove All退出这个模式。
按X后点击某个Instance可以进入到这个Instance的层级中修改版图,按Shift+B返回原来的层级。按Shift+X可以进入这个Instance的层次,且只显示这个Instance的版图,隐藏其他的。
按Ctrl+Shift+X可以创建总线,按F3可以对齐属性进行编辑。
此外还有一些小工具很常用,例如Tools中的Create Pins From Labels。按L可以创建Label。操作的作用可以见我这篇博客。少数情况下为了解决DRC中的Density问题还会用到Tools->Area and Density Calculator。
掌握上述内容基本上就可以搞定大部分的版图编辑需求了。有大佬有其他经验的话欢迎补充。
在进行Layout时,首先完成Placement(布置Instance的位置)再去做走线(Routing),和数字Flow有异曲同工之处的是,Placement阶段需要考虑好诸如匹配,走线是否会阻塞等一系列问题。并且走线时发现问题,需要回到Placement做一些迭代。但模拟Layout中还需要考虑匹配等更复杂的问题。这块就是版图艺术层面的经验之谈了,我也没有啥心得,就不露怯哈哈。
接下来聊聊DRC和LVS Debug的操作。Run完DRC后会弹出RVE窗口,在RVE窗口中选中报的DRC,可以看到下面文本框中出现对DRC的描述,比如属于哪个层次,间距过大过小,密度不足等。有的DRC通过文本的简单描述看不懂的情况下,可以去找PDK的Design Rule文档,会有和DRC条目匹配的详细规则描述。此外通过点击右侧的小数字,可以对应的跳到版图中出现DRC的位置,并对报DRC的图形进行高亮,这是重要的辅助分析的手段。可以多选条目,或者对整个DRC条目右键后Highlight看整体的位置。取消高亮通过RVE中Hilight->Clear Highlight来完成。
LVS的Debug更加复杂一些。首先通过Setup->LVS Option中开启Option选项,常见的包括在Supply中勾选Abort LVS on power/ground net errors然后再Power nets和Ground nets中填写自己设计的电源和地net的名字,在Gates中Gate Recognition选成Turn off然后下面勾选AB,RC,用来不识别dummy,可以见我这篇博客。一般LVS在进行Debug时,主要是查潜在的短路或者断路,电源短路这种严重问题可以在Extraction Results中直接报出来。而Comparision Results中,会比较Nets,Instances,Ports数量,Ports的问题往往是版图上少标了Label,是好查的,Nets和Instances可能会复杂一些,这是因为LVS检查中存在耦合的问题,有时Nets的匹配错误会导致Instances出现数量错误,但实际上数目是对上的,这个是Calibre LVS内部机制的问题了。一般我会从数量不匹配的Nets着手做检查,左边的是Layout抽取的Netlist,右边是Schematic抽取的Netlist,如果Layout中的Net比Schematic中的少,那应该就是短路问题,比Shematic的多就应该是断路问题,对应的可以将出错的Net在版图中高亮之后来进行检查。此外也可以通过选中Net之后在Calibre LVS中显示出来的网表和原理图来辅助分析。
偷懒+手边没有很好的case(之前流片的时候火急火燎的,也没有来得及做完善的记录),所以就只能憋出这么一篇纯文字的来,等以后有机会了可以弄个图文并茂的版本(挖坑)。