UDD (User Defined Device)即用户自定义的器件,可以生成像pdk lib中提供的device pcell一样参数化可调节器件。UDD给用户提供了GUI平台下的编辑设计pcell的方式。GUI的平台对设计者的脚本能力要求不是很高。UDD还可以提供了一种hierarchy的design,如果想要做一些复杂嵌套结构device也是非常方便的。目前Laker 和custom compiler 工具都有提供UDD这样的功能。
如果有参考的版图那就更简单了,可以直接使用import layout添加大量的Distance就可以满足参数化device的效果。
下面演示个Laker 种udd的使用,做了一个粗糙的电感来演示UDD的使用介于篇幅不展示细节laker的reference.pdf有操作详细解释内容,把下面这个位置做了参数化。
我们首先来完成下面cross connect的底层udd cell.
第一步先创建cross connect 必要的参数
第二步使用Distance的操作把交叉线的相对位置进行参数化
第三步使用Align的功能把需要对齐的边或中心进行对齐,有些像在版图种直操作一样。
最后一步把直角走线通过CutCorner的操作倒角成45°走线
这样cross connect的udd 就完成了。
下面看怎么生成电感并在电感种使用:
第一步一样生成需要的parameter,这里可以从cross connect的udd 种导入进来再进行进一步添加需要的。编辑窗口种先画出需要用到的layer 与形状,后续操作都是基于这些参考layer 进行运算和拉伸对齐得到。比如下图来控制调用的cross connect的udd 具体放在什么位置,这里通过Distance来控制上边距与左边距。下面那个白色长方形layer是用来后期切断ring的中间运算层使用,最后会remove掉。
这里双环是基于上面正方形进行grow 和shrink然后NOT的布尔运算得到生成下图中outR inR两圈。然后再通过白色中间运算层来切掉双环下部的中间位置,方便用cross connect来替换连接。上面单环切口也是使用相同的操作。方便进行电感的输入 输出连接。最后把不相干的中间运算层次进行remove就完成了这个电感udd.
这里只是简单的示例,如果需要复杂的操作做些复杂的callback.可以接入UDD Procedure script来处理一些操作或运算。
如果有用过udd的对此有些基础的可以尝试尝试如何生成多圈非螺旋的圆形电感
这个是在custom compiler 的UDD Assistant与Laker中UDD界面略微不同: