Virtuoso 版图小技巧

本连载文章首次于2023年06月,发布于个人微信公众号(LSTK_LAY)上,后于不定时进行更新,现于2024年5月搬于个人博客上。同样以连载的方式持续更新文章内容,主要是以Virtuoso 6.1.8-64b版本讲解在版图中使用的相关操作技巧。

2024-06-06:翻转顺序列表,将最新更新的内容放在最前面,并以红字标注最新更新内容,以增加阅读性;

2024-11-13:更新第48个小技巧,增加相关限制条件;

2024-12-09:

  • 更新第28个小技巧,增加靠谱并直观的隔库检查方法;
  • 加粗每个小标题,让看起来更直观;

2024年11月

2024年09月

2024年07月

2024年06月

2024年05月

2024年01月

2023年10月

2023年08月

2023年06月


1、激活“ALT”键,使它能被用户自定义成快捷键

有两种方法:

(1)在.cdsenv文件中加入如下代码语句即可:

ui enableMenuShortcuts boolean nil

相关文章:Virtuoso配置文件“.cdsenv”介绍和使用

(2)在CIW窗口,Options—User Preferences中,不勾选Menu Shortcuts即可。

2、快速移动多个合并器件

在移动命令下,鼠标右键选择:Chain Mode,选择不同模式,可以快速移动多个合并器件。

3、过孔局部选择

layout界面菜单栏,Options—Selection-Via Partial Selection 勾上,按”s”,方便快速拉伸增加孔数量。

4、Shape直角变斜角或圆角的操作

layout界面菜单栏,Edit—Advanced—Modify corner,然后按下快捷键“s”(strtch),选中(可以多选)需要改变的直角,点击Apply即可。

5、Layout XL下,网络net名显示

Virtuoso默认net名显示是白色比较亮,看久了感觉眼睛比较难受。

菜单栏点击Options—Net Name Display 可以自定义颜色,也可以将net名颜色改为和Metal颜色一样(笔者习惯做法),另外大小和字体类型粗细均可以更改。

6、设置多个layout 窗口中对层操作同步或不同步显示

打开任意两个或多个layout文件窗口,当我们对其中一个layout进行层显示或隐藏操作后,然后鼠标切到另外一个layout窗口,会发现另外一个layout窗口对应的层也会同步显示或隐藏。

点击下图红框图标,可切换窗口同步/不同步显示功能。

7、Layout XL状态下,飞线显示不全

在layout xl连接正确的情况下,有时我们点击电路图中的某个net时,发现有一部分net没有飞线连接,有一部分又有飞线连接,但相关的pin都是高亮状态。(多出现在电源或地net上,但如果信号连接较多也会出现此类情况)

解决办法:在layout xl界面里,菜单栏Options—Layout XL…—Connectivity—Limits—Annotation Limits—Maximum number of opens:By net 中数值改大点即可(默认100,比如:改成500、1000……都可,自己根据需要修改。)然后Update Binding下即可。

8、快速查看层面积和相关密度大小

layout界面中,按如下图片操作。

9、标尺删除

Cell在测量后自动删除标尺。

按下”k”键,然后按”F3″,在弹出的对话框中把”Savable Measurement”去掉勾选即可。然后cell在保存关闭后,cell中没有删除的标尺都会自动删除。

10、Layout XL状态下几种原理图net和版图net同步高亮的方法

(1)在原理图界面,按下快捷键“9”,然后按“F3”,勾选layout,可实现在原理图中高亮net,对应的版图中的net也同步高亮;

(2)在原理图界面中点击对应net,版图中net自动高亮;要想在版图界面中点击对应net,原理图中的net也自动高亮,需要按如下设置即可;

(3)在layout界面中,鼠标放在net上会自动高亮,对应原理图中的net也会自动高亮,按如下图片设置即可。

11、快速选择多个器件

在画版图时,有时需要选中几组左右跨度很长的器件,但很容易又选到其他东西,可以按如下操作;

鼠标左键按住不放,先拖动一小段距离后,再单击一下鼠标右键,然后鼠标左键放开,此时可以看到一个可以使用滚轮任意缩放的方框。此方法可以用在Move、Copy、Align、Stretch等命令下。

12、避免共源或共漏出现Contact孔和Metal消失情况

在virtuoso开启自动吸附功能(Options-Editors-Editor Controls-Abut Server)后,如果进行共源或共漏的net未连接到其他地方,这种情况下就会出现Contact孔和Metal消失情况。

如何避免:在layout界面,菜单栏Options-Layout XL 在弹出的对话框中找到Generation选项在Auto Adjustment 栏下勾选上Preserve terminal contacts即可。

13、准确选择器件

版图中一堆东西不知道怎么快速选中,鼠标放在此区域中右键选择(De)Select Under cursor,这样鼠标下面所有的objects都会弹出来,然后选择想要的即可。

14、Pcell 编辑

在layout界面,菜单栏Options—Display中勾选Stretch Handles,可以调整pcell 器件的S/D的contact孔数及调整其他参数。

15、自动弹出命令Options

在CIW(Cadence Interaction Windows)窗口,Options—User Preferences—Command Controls—勾选Options Displayed…即可实现按下命令自动弹出对于编辑窗口,省去再按“F3”键。

16、在原理图中高亮同一个net相连的器件

在CIW(Cadence Interaction Windows)窗口中,执行如下代码;然后再点击原理图中的net,会看到所有与net相连的器件都被高亮了。

auProbeAddDevsForNet()

17、Layout XL 下打开飞线和隐藏飞线

当schematic和layout一一对应后,此时可以使用飞线功能方便连线;在layout窗口中菜单栏,找到Connectivity-Incomplete Nets-Show/Hide Selected,然后在schematic界面或者layout界面点击想要显示的net,按shift可多选。

18、复制底层对象

大家肯定知道复制的快捷键”c”,但这个功能只能复制本层的对象,要想复制底层的对象需要用到Yank功能,如下图。

19、检查layout中单孔的方法

我们知道一般模拟版图中都要求两个孔,但有时候画图的时候也会出现单孔的地方,我们可以用如下方法来检查出layout中单个孔;

Layout窗口中,按“Shift+s”,打开搜索框,按如下图设置即可。

20、一次打多个lable

在layout窗口中,按“L”快捷键,调出对应窗口,按如下图设置即可。

21、子cell查看

Layout窗口中,按如下图设置,这样每次按“x”查看子cell时,电路图对话框中就不会总是弹出单个窗口,而是在一个窗口中弹出多个tap。这样查看多个子电路也不怕混乱。

22、你动我也动,Copy Family功能

Layout 窗口下,按快捷键“c”,再按“F3”,然后按如下图蓝框勾选即可;

23、器件保护

在layout设计的时候,总是有时候会不小心动一下其他器件,在virtuoso里面可以将某一个cell或者几个cell变成位置固定,不可移动。按如下图设置即可。

24、关闭线自动吸附

按如下设置即可;

25、Layout XL中产生pin和lable的两种方法

(1)在layout窗口中,左下角点击相关图标,如下蓝色框,然后点击原理图中对应的pin,再回到layout窗口中按”F3”,进行相关设置,具体请参考视频。

(2)首先生成lable,然后再根据对应的lable自动生成对应的pin。

按下快捷键“L”,在弹出的对话框中进行相关的设置,并在对应的器件或net上生成label。最后在layout菜单栏中选择Tools—Create Pin From Lable……,然后在弹出的对话框中做相应的设置即可。具体操作请参考视频。

26、在原理图中高亮同一器件所有相关的net

在CIW(Cadence Interaction Windows)窗口中,执行如下代码;然后再点击原理图中器件,会看到所有与器件相连的net都被高亮了。

auProbeAddNetsForDev()

27、调整virtuoso标题栏显示

当我们打开多个virtuoso项目时,我们会发现每个项目的标题栏显示的都是一样的,很难区分项目名,对能准确找到想要的项目造成了很大的困难。

解决办法:可以在.cdsinit文件中增加如下代码即可将项目名顺序放到最前面;

envSetVal("designEditor.window" "windowNameFormat" 'string "Cell:%c Lib:%l - %v %a %m")

其中:

%c 代表cell name

%l 代表labrary name

%v 代表view name

%a 代表应用名称,如:Virtuoso Layout Suite XL

%m 代表编辑状态,reading或editing

单个virtuoso项目调整后标题栏顺序:

28、隔库检查(3种方法)2024-12-09更新增加”方法2″和”方法3″

方法1:避免测试库或其他库中cell被调用,在完成模块后需做隔库检查。按如下图操作,在得出的summary文件中 “instance statistics”栏查看即可。(请注意:此方法只能检查当前层调用库的情况,底层的隔库无法查出)

方法2:请按如下图操作即可。

方法3:(最直观)

在Library Manager界面,请先在View栏选中需要检查隔库的Top_Layout,然后依次点击 Edit—Copy Wizard—Exact Hierarchy,再请按如下图操作;

更多详细操作请参考本站文章:“Copy”的进阶之路(Virtuoso)

29、修改库中最大可包含的cells数量

当我们导入较大的gds文件时,会发现设置的目标库会自动变成多个,这是由于每个库中的cell数受限,需要修改。如下图:

30、快速查看版图中相关信息

做版图的应该都会知道,在画版图的过程中会建立各种group和一些层次的blocks,做起来的时候确实方便,但可能过段时间查找的时候却感觉比较混乱,按如下图可以快速清晰查看版图中你需要的信息(例如:cell name、group name…)。赞一个

31、Bus线直角变45度角

菜单栏Edit—Wiring—Wire to 45,如下视频;

32、添加virtuoso内置logo工具

在.cdsinit文件中写入如下代码:

envSetVal("layout" "enablePGTextAndMaskLogo" 'boolean t)

或在.cdsenv里写如如下代码:

layout enablePGTextAndMaskLogo boolean t

重启virtuoso,打开layout会发现在菜单栏Tools下出现Mask Logo选项;点击弹出对应对话框,进行相关设置即可。

生成的logo会以cell 的形式出现。

33、导出Pad坐标

打开对应layout文件,菜单栏Tools—Pad Opening Info…,相关说明如下图:

点击Apply,可以看到相关pad坐标已导出。

34、器件翻转(Flip)和旋转(Rotate)

在Virtuoso中,默认翻转和旋转都是以选中objects的组合中心去执行相关命令,按如下图设置可以让选中的objects以各自的中心去执行相关命令。

35、连续多次测量距离

按下快捷k,然后“F3”,按下图选择相关功能,可实现连续多次测量。

36、 减少换层的数量

可以看到下图中的层数量只有使用的layer,其他的层将不显示。

37、删除版图中空白区域

在CIW中运行以下命令即可:

foreach(st geGetEditCellView()~>steiners dbDeleteObject(st))

38、copy器件时,保持和原器件相同的连接关系

39、Creat Wire中开启自动吸附Pin、Via功能

40、查看层级schematic时直接进入下层,无对话框确认

快捷键e,然后按F3,选择use viewNameList项

可在菜单栏Options—Editor,Commands栏View Name List指定view的顺序。

相关view类型 :

schematic symbol vhdl functional abstract layout synthesis

也可在cdsenv文件中对应设置为默认项:

schematic descendTarget string "use viewNameList"

41、Layout XL 自动创建底层cell layout

Top layout 界面中,菜单栏Launch—Configure Physical Hierarchy..

选中对应cell 右键Create/remove VLGen

42、保持float net name名不被取消

菜单栏Connectivity—Layout XL Options;

43、取消shape的sticky property

当手动给某个shape 赋予自定义net name 时,会发现此shape连接到其他net name的shape时,不会自动变成其他shape的net名,需要按如下方式设置,才可以。(勾选Remove….)

44、Creat Via时,自定义增加或较少via的数目及via排列的形状

45、一次性画出不同层次组合的metal

菜单栏Create—Wiring—Bus,然后按”F3″,按下图蓝色框中对应设置进行设置即可。

(1)一次性画出3层重叠的metal;

(2)一次性画出不同层并错开的metal;

结合”Number of Bit”栏与”Custom Layer Pattern” 栏中的内容,请根据需要自行调整,以达到想要的效果。

46、修复Layout XL 状态下调出的电阻值与原理图中电阻值的误差

原理图中电阻值精确到小数点后两位,当我们Layout XL调出对应的电阻时会发现调出的电阻值只精确到小数点后一位,导致最终LVS时报错。

请在调入前进行如下图设置即可:

Layout XL 界面,菜单栏Options-Layout XL…;

47. Stretch 拉伸时,使金属线上的过孔和金属线一起移动

按下快捷键“s”,然后按F3,按如下图设置即可。

48. 任意形状的Poly或metal,转化为pin(对象需要具有polygon属性)

如果属性不是polygon,请先进行属性转换操作:菜单栏Edit—Convert—To polygon。(2024-11-13_update)

Layout界面,菜单栏Create-Pin…,在弹出的对话框中按如下图设置,然后双击对应需要转化的对象即可。

49. Layout_XL下,不调用cell,只调用管子

在配置好Configure Physical Hierarchy情况下,请按如下图操作。

50. Layout_XL 下,实时查看版图中剩余未放置的instance和pin

菜单栏 Connectivity—Generate—Selected From Source…,在弹出的对话框中,按如下图查看即可。

51. 选择模式中”Enclosed“与”Crossed“的区别

菜单栏Options—Selection…,弹出对应的对话框,”Area Selection Controls“为相关命令的区域;

选择”Enclosed Figures“:表示按住鼠标左键,然后拖动,需要全部框选住相关的对象,对象才能被选中,这也是软件默认的设置;

选择”Crossed Figures“:表示只要按住鼠标左键滑过相关对象(不需要全部被框住),对象即可被选中;典型的应用场景如下:

当需要切断一组有多层金属重叠的长线时,使用”Crossed Figures“设置,可以很快选中需要切割的对象;而”Enclosed Figures“设置不易一次性选中。

52. Virtuoso窗口与鼠标指针的交互(本质是linux系统对window的控制)

打开linux(CentOS) 系统window 设置,Applications—Settings—Window Manager,弹出对应对话框。

Focus model:控制鼠标指针移到对应窗口时,是否需要再次单击鼠标左键才识别对应窗口。

Click to focus:表示鼠标指针需要再次点击才能识别对应窗口;

Focus follows mouse:表示鼠标移到哪个窗口,对应的窗口就会被识别到。

New window focus:表示当有新的窗口打开时,鼠标指针会自动跳到对应新的窗口中。

Raise on focus:表示当鼠标指针移动到哪个窗口(无需再次点击),对应的窗口就会被显示到屏幕的最前面。

Raise on click:表示当鼠标指针点击哪个窗口时,对应的窗口就会被显示到屏幕的最前面。

Short——Long: 表示识别的反应时间的长短,可自行调节。

以上建议读者自行操作体验。

53. 版图亮度调整(护眼)

菜单栏Options—Display Options,按如下图设置即可。

54. 在原理图中查看各个库中使用的cell情况或使用的器件类型

打开对应原理图(需要有编辑权限),按如下图操作即可。

55. 版图中尖括号“<>”替换方括号“【】”的两种方法

方法1:在CIW界面,菜单栏File—Import—Stream…,在弹出的对话框中,点击More Options选项,按如下图操作即可;

方法2:在版图界面中,Shift+s, 调出对应对话框,按如下图设置即可。

56. 调整lvs rule中的器件匹配精度

一般lvs rule中默认原理图器件和版图器件要完全匹配才能过lvs,但在实际案子中,可能会存在调整匹配精度的情况。比如:版图中存在dnw时,寄生出来的diode大小(如下图所示)。

请打开对应lvs rule 找到,如下图语句,规则默认完全匹配(0),可以自己根据需要调整对应参数;

57. 指定导出网表的pin顺序

在CIW窗口,按如下图设置即可。

最后在导出cdl时,请注意以下图片设置。

58. 在layout界面快速替换库名称

在layout界面shift+s,调出对应Find/Replace对话框,然后按如下图设置即可;

59. 鼠标指针快速跳转到指定坐标处

在layout界面先按下”k”或者”p”快捷键,然后在菜单栏对应的X和Y栏处,填写想要调整的坐标,最后按下Enter即可。

60. 使用Align功能(快捷键“A”),额外设置一个对齐Spacing距离,使其在”No Spacing”之间可以快速切换

步骤1:设置快速切换的快捷键”x”,并写入对应的skill语句,如下;

hiSetBindKey("Layout" "<Key>x" "leSetEnv(\"quickAlignspacingType\" if(leGetEnv(\"quickAlignSpacingType\" )==\"user\" \"none\" \"user\"))")

步骤2:返回layout界面,按”A”,然后按”F3″,在”User Spacing”一栏设置一个想要的距离,最后在按下步骤1中设置的快捷键”x”,尝试多次按下”x”后,可以发现能快速切换。

连载中…

发表评论