本文始于2024年11月,主要讲解virtuoso(v6.1.8)中自动放置pin功能。其在版图layout过程中,手动放置pin可以说是再普通再普遍的操作了。在小的block中还好,pin数量不多(几个到几十个左右),我们通常手动放置就好。但到顶层或者处理pin数量很多的模块时(如,level_shift等模块),pin的数量多达几百个,此时想要手动放置显然费时又费力,又容易出错。可能有一些人会通过相关的skill脚本来实现pin自动放置,但现在virtuoso软件会自带这些功能。想要了解此功能,请参考本文内容。它真的可以让你”如释重负”!!!
1. 简述Pin与Label
Pin:是用于定义信号接口或连接点的对象,通常在设计模块中起到功能接口的作用,并且标识了层次之间的逻辑连接,有其对应的物理位置信息。
Label:仅仅是逻辑概念,用于标识信号名称或其他信息的文本标注,通常没有功能意义,但对设计文档化和可读性非常重要。
存在的意义:
当你使用calibre做相关验证时,calibre输入对象为gds,而gds中没有pin这种概念,只有label,所以在做lvs时,必须加入label来识别相关net名称。至于label所在的层次,就需要看lvs rule中的相关定义。而Pin只有在Virtuoso工具内才被识别。
2. Creat Pin和Label的相关操作
3. 自动放置Pin(飞Pin)相关操作详解
自动放置pin的一些操作和演示,以下将”自动放置pin”统一简称为“飞pin”。
飞pin常见的几种方式:
分两大类:
第一大类:对当前层的pin,进行“飞pin”的相关操作;
方式1:当前层的pin,自动飞到当前层对应的走线上;
方式2:当前层的pin,自动飞到次当前层对应的pin处;
第二大类:对次当前层的pin,进行“飞pin”的相关操作;
方式3:次当前层的pin,自动对齐到当前层对应的走线处;
方式4:次当前层的pin,自动对齐到次当前层对应的走线处;
注意:”当前层”可以理解为:Display Level 0;”次当前层”可以理解为:Display Level 1
飞pin前的几个注意事项:
- 保证layout处于XL 状态;
- 保证layout cell 被P&R Boundary包围(涉及次当前层的飞pin时,次当前层也需要有对应P&R Boundary);
- 对应的走线上应具有对应pin上的net名称,否则无法飞pin;
- 需要飞的pin,请提前生成,并放置在layout版图中;
- P&R Boundary应包围所需要飞pin的走线,又,P&R Boundary的边缘与对应走线平齐飞pin效果最好(影响飞pin的位置);见下图。
开始对上述4个飞pin方式逐个介绍:
方式1:当前层的pin,自动飞到当前层对应的走线上;(这里介绍2种方法)
方法1:选中layout中已生产的pin,然后CIW窗口输入”_vfpPlacePin()”,即可实现飞pin。
方法2:相关设置:layout xl 界面,菜单栏Place—Pin Placement…在对应弹出的对话框中,按如下设置;
值得注意的是:飞过去的pin和Label,都会自动匹配对应的层次,而且pin 的大小会保持和对应的线宽一致。
方式2:当前层的pin,自动飞到次当前层对应的pin处;
相关设置:layout xl 界面,菜单栏Place—Pin Placement…在对应弹出的对话框中,按如下设置;
值得注意的是:飞过去的pin和Label,都会自动匹配对应的层次,而且pin 的大小会保持和次当前层的pin的大小一致。
下面开始介绍次当前层pin相关的飞pin操作:
在进行次当前层飞pin的操作前,请先将对应block的cell type类型设置成”softMacro”,并在Objects栏选中Soft Blocks。
对于block的cell type类型的设置,有如下三种方法,请参考:
(1)”x”进入对应blcok,然后按Shift+q,在弹出的对话框中设置即可;
(2)Layout xl 界面,菜单栏Launch—Configure Physical Hierarchy,在弹出的对话框中按如下设置;
(3)在CIW窗口,点击Tools—Set Cell Type…,按如下图设置。
方式3:次当前层的pin,自动对齐到当前层对应的走线处;
相关设置:layout xl 界面,菜单栏Place—Pin Placement…在对应弹出的对话框中,按如下设置;
需要注意的是:次当前层的cell,也需要有P&R Boundary包围。
方式4:次当前层的pin,自动对齐到次当前层对应的走线处;
相关设置:layout xl 界面,菜单栏Place—Pin Placement…在对应弹出的对话框中,按如下设置;
4. 问题与讨论
4.1 什么是Soft Block,它有什么作用?
Ans:Soft Block是一种可以调整内部参数的模块,包含:boundary、pin、blockage等参数的调整,方便在布局和布线阶段的动态优化。相对的Hard Block是固定的模块,其内部参数不可改变。
4.2 这些飞pin 操作一般在什么场景下使用呢?
Ans:方式1和方式2正常做过功能模块的都可以遇到,至于方式3或方式4多在顶层和数字配合上遇到。
4.3 LVS rule中哪些语句定义了Label使用的层次呢?
Ans:请见如下图片,其中的数字代表的层次,请参考对应工艺的layermap文件。
4.4 那么除了上述4种飞pin方式外,”次当前层的pin,可以自动对齐到次当前层对应的pin处”吗?和”当前层的pin,可以自动飞到次当前层对应的走线上”吗?
Ans:”次当前层的pin,可以自动对齐到次当前层对应的pin处”吗?——笔者有测试过,发现次当前层的pin会无规则的飞,暂未找到问题。建议使用上述4种方式,大多数需要飞pin的场景都能实现。
“当前层的pin,可以自动飞到次当前层对应的走线上”吗?—— 此飞pin 方式无效。软件会提示让你选择方式2。