489315174的个人空间 https://blog.eetop.cn/carlliu [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Step by Step 教你使用UDD做Pcell

热度 1已有 598 次阅读| 2023-12-2 14:46 |个人分类:日记|系统分类:芯片设计| pcell, parameter, cdf

遇到很多需要定制pcell的场景,例如为了更方便的做电源连接网络,方便调整metal宽度间距等。敏感区域的对称dummy metal fill,或一些定制device等。使用pcell的方案要比实际layout更加方便。Udd 就像一个模板一样可以很快porting到其他工艺制程上。先介绍下UDD 是什么,UDD 是提供给用户图像界面的方式来创建pcell的功能,用户可以将layout中需要参数化的地方转换成pcell的parameter来对应.

下面介绍在custom compiler (以下简称cc)里如何使用UDD (use define devices) 功能创建pcell.

1.首先创建UDD cell,在cc里创建udd 开头的viewType类型.如下图views 对应为udd.

图片

2.创建完udd view后打开即可在layout窗口左侧出现UDD Assistant的工具栏,udd的部分定义操作都是在此窗口中定义的。这里分成三类,第一栏为Objects:这里是UDD使用的基础layers是用户实际画的layer信息。第二栏为Operations:这里是对基础layers可以进行的一些操作,例如 做Align Size 布尔运算等,后面会有部分介绍。

第三栏是parameters:这里是定义pcell的cdf 参数有哪些,cdf 参数的数据类型等信息,以及pcell 中需要定义成变量的信息。如下图:    

图片

3.定义parameter,从udd assistant中打开Parameter Definition Editor界面添加对应的参数与默认值等信息如下图:

图片

回到UDD Assistant 界面会更新出添加的CDF parameter信息,这里只定义一个简单的mos所需要的length width 和finger如下图:    

图片

4.先在layout窗口中画出需要的基础layer,然后在Objects 栏中定义此object 所对应的attribute信息。如下图所示对应的layer的宽度长度以及layer属性均可以参数化,同时支持数学运算python语法。未来方便此demo部分数值没有参数化。    


图片

图片

5.UDD 每一步操作均可以使用preview 功能查看所定义是否生效。如下讲定义好的poly 和diff 进行添加中心点align操作后preview即可看到下面右图效果。两个图层已经按中心点进行Align的效果。    

图片

6.下面添加源漏区域的metal1,以便确定需要填充contact的区域位置。这个metal的宽度也是可以参数化的。

图片

7.我们把这个metal1 跟mos的左边界进行Align对齐,这里对齐的space设成了0.也可以根据需要自己定义。如下图:    

图片

8.此时mos 左边界的Metal 位置就确定好了,这时即可对metal的区域进行填充了,在fill的功能,这里补充一句对每一步操作进行有意义的命名,方便后面进行引用。下图fill 中定义需要填充的layer 和size 间距等信息。    

图片

9.定义完成后使用preview 功能查看是否符合预期。填充时可以定义自适应space 还是使用min space。下图箭头位置下拉option.

图片


10.接下来使用copy的功能把左边的metal 和contact copy到mos的另一边.这里需要注意的时contact 是通过fill 操作得到的,所有copy时选择fill那步的operation 名称。对应的pitch 可以通过运算得到。    

图片

11.重复copy contact的动作,可以把metal也copy过去。

图片

12.接下来完成finger相关的功能,这里finger的数值改变对应这gate的数量变化。那我们也可以使用copy的功能把gate copy出去。如下图:    

图片

13.重复上一步操作把需要的layer 都对应copy到finger上。

图片

图片

14.接下来我们给这个mos添加衬底layer。这里使用size的功能,沿poly和diff 的边界进行size 动作。首先把finger下diff 和poly 做个“或”操作.得到merge的效果。这里需要注意生成的层次并非mos中所需要的,所有使用完这个templayer 后需要进行remove 动作。    

图片

15.通过Size的操作将上一步的临时层进行涨size的动作即可得到扩充的NPLUS layer 如下图    

图片

16.此时通过preview 看到基础mos的形状了。

图片

17.在确认一切符合预期后,通过compiler udd 的功能生成对应的pcell。如下图执行完console 中显示编译完成。    

图片

18.调用制作的pcell 进一步验证。改变三个参数都能正确对应其行为。

图片图片

19.如前面所说,我们可以把以后可能需要改变的地方均用参数代替,例如poly 伸出diff的长度,源漏边界到gate的space等,都可以在user parameter定义,在Objects 和Operation中引用对应的变量。

图片    

图片


1

点赞

刚表态过的朋友 (1 人)

发表评论 评论 (5 个评论)

回复 杨原仪 2023-12-5 11:08
大佬能请教一下 用skill写pcell 用打孔函数导出GDS会报错这个问题怎么解决吗
回复 489315174 2023-12-6 09:04
杨原仪: 大佬能请教一下 用skill写pcell 用打孔函数导出GDS会报错这个问题怎么解决吗
不写skill的,不是很了解
回复 489315174 2023-12-6 09:04
杨原仪: 大佬能请教一下 用skill写pcell 用打孔函数导出GDS会报错这个问题怎么解决吗
不写skill的,不是很了解
回复 489315174 2023-12-6 09:04
杨原仪: 大佬能请教一下 用skill写pcell 用打孔函数导出GDS会报错这个问题怎么解决吗
不写skill的,不是很了解
回复 489315174 2024-1-20 12:29
杨原仪: 大佬能请教一下 用skill写pcell 用打孔函数导出GDS会报错这个问题怎么解决吗
这个了解了下,好像没有办法解决,导gds 不识别那些函数导致evolution fail

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 8

    月排名
  • 0

    总排名
  • 4

    关注
  • 112

    粉丝
  • 58

    好友
  • 116

    获赞
  • 49

    评论
  • 1105

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 15:38 , Processed in 0.013331 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部