Pcell也就是参数化单元,可以看作是一种可编程单元,允许用户通过定义参数创建实例。 在调用Pcell的过程中为参数赋不同的值,可以创建不同的Pcell实例。
比如,可以在版图中调用PDK中的MOS器件,然后根据设计参数修改MOS器件的W、L、是否添加Gate过孔、是否添加源漏连接等,这些都可以通过Pcell实现。
可以使用skill程序创建Pcell,也可以使用Virtuoso Pcell应用程序以图形方式创建Pcell.
使用skill程序创建Pcell更加灵活,也是Cadence推荐的Pcell创建方式,使用Virtuoso Pcell应用程序以图形方式创建Pcell更加方便,并且需要很少的skill编程基础,适合初学者,往往也能满足大部分的设计需求,以下内容都是以图形化方式创建Pcell.
首先了解几个概念,可以认为Master cell就是PDK中提供的Pcell, 它所包含的各个参数信息已经保存,可以打开PDK中的Pcell, 查看包含的参数信息。
Submaster cell是通过调用Master方式生成,在调用Master cell时对不同的参数赋值不同也就产生的不同的Submaster cell,其中Submaster cell的信息保存在内存中。
Pcell的设计环境与版图设计环境基本一致,所有操作也都是在版图设计基础之上完成,在版图设计界面:Launch->Plugins->Pcell, 即可开始Pcell设计。
简单的Pcell MOS管 可以完成以下功能:
Pcell设计的plugin包含的命令在上图中可以看到,每一个命令对应不同的参数化功能,Pcell的所有功能都是利用上面不同功能的组合实现。
Stretch: 与版图中拉伸工具实现相同的功能,可以对部分版图进行拉伸,其中Pcell的很多尺寸改变都是通过这一命令实现,比如:W、L值的改变。
Conditional Inclusion: 根据设置的条件包含或者去除某些对象,比如:当W大于某一值时自动增加finger数。
Repetition: 复制对象参数,比如实现在MOS管的W参数改变的同时,可以自动增加或者减少源、漏接触孔数量。
Compile:定义完参数的版图一定需要通过编译才可以作为Pcell使用,可以选择直接编译成Pcell或者生成相应的skill脚本。
对于refernece dimension很多初学者都不容易理解,其中有一种方法可以很好记住:这个值就是当前版图中你想要stretch对象的尺寸,也可以认为为Pcell中该参数的默认值。
stretch direction:是指拉伸的方向,一般习惯使用两个方向同时拉伸,这样更改参数时器件中心坐标不会改变。但是为了方便设置Repetition命令,可经常定义单方向的拉伸。
完成stretch control line的相关定义之后可以选择:Compile->To Pcell, 将设计编译为Pcell, 然后新建版图view, 调用自定义的Pcell,并打开属性对话框,观察改变参数时器件的相应变化。
按照同样的方法,定义一条沿Y轴的Stretch命令,用来改变MOS管的Width参数,注意这里reference dimension值应该和此时版图中MOS管的宽度对应,如下图所示。
保存好设置,然后编译为Pcell, 再次调用并改变参数,观察器件变化是否和预期一致,如果不一致再返回修改参数设置。
为Stretch命令指定对象:从上面的演示结果可以看到,contact尺寸会随着Width参数改变,这个是不希望的。
在定义完Width命令的时候可以选择:Stretch->Qualify, 然后根据窗口左下角提示信息依次选择:Stretch control line, Stretch shapes. 比如在MOS设计中选择除contact之外的所有形状,然后再次查看结果。
关注创芯人才网,搜索职位