在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1439|回复: 11

[求助] 用SKILL创建PCELL,怎么创建函数并且调用

[复制链接]
发表于 2024-6-19 12:38:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
各位大佬好,问题是这样的,我在用SKILL创建PCELL,现在要创建坐标,需要多个不同的图层,每一个图层相似,坐标不一样。我现在写了一个代码,计算坐标的,比较长,我要画N个图层,就要复制N个坐标的代码,所以我想把这段代码弄成一个函数,在不同的代码块里面直接调用就可以了,但现在遇到的问题是,PCELL在跑drc的时候,报错,说没有那个函数,然后我又把函数放进了pcdefincepcell里面,但是生成的pcell有marker,error的图层,并且提示function redefined,解决这个问题有什么思路吗?
发表于 2024-6-19 14:12:00 | 显示全部楼层
尝试在libinit.il中load
 楼主| 发表于 2024-6-19 14:46:03 | 显示全部楼层


YuSHL 发表于 2024-6-19 14:12
尝试在libinit.il中load


我写了的那个函数,我单独load了一次,还是提示没有那个函数,还是提示“undefined ... function”,我想现在在这里解决了再看看,因为改libinit.il还比较麻烦
 楼主| 发表于 2024-6-19 15:09:31 | 显示全部楼层


YuSHL 发表于 2024-6-19 14:12
尝试在libinit.il中load


这是我的代码,我是不是写错了,已经load了,还是提示undefined function

procedure(coordinate_O_function(Width Length Corner)

                 

                let(()

                scale = 1.0e6

                ; Define the layers


                w = evalstring(Width ) * scale

                l = evalstring(Length) * scale

                cor = evalstring(Corner) * scale


                x = 0

                y = 0

                 

                a = w/2 - cor

                b = l/2

                c = w/2

                d = l/2 - cor  


                p1 = list(x+a y+b)

                p2 = list(x+c y+d)

                p3 = list(x+c -(y+d))

                p4 = list(x+a -(y+b))

                p5 = list(-(x+a) -(y+b))

                p6 = list(-(x+c) -(y+d))

                p7 = list(-(x+c) y+d)

                p8 = list(-(x+a) y+b)

                         

)         

                )


发表于 2024-6-19 18:33:46 | 显示全部楼层


danalog 发表于 2024-6-19 15:09
这是我的代码,我是不是写错了,已经load了,还是提示undefined function
procedure(coordinate_O_functi ...


我也看不出问题在哪,对这个了解少
发表于 2024-6-20 16:17:26 | 显示全部楼层
你这个方向不对,具体查查不是这个。
发表于 2024-7-4 14:25:36 | 显示全部楼层
你这种情况肯定是因为重载的时候,pdk不读函数导致的。pcdefine中的代码会产生虚拟内存,dm文件。但是函数不会自动产生,所以需要额外用load加载的,一般load语句可以写在libinit文件中,启动pdk都会先读这边的代码。
发表于 2024-7-4 14:41:52 | 显示全部楼层
学习了
 楼主| 发表于 2024-7-6 16:19:37 | 显示全部楼层


yesoili 发表于 2024-7-4 14:25
你这种情况肯定是因为重载的时候,pdk不读函数导致的。pcdefine中的代码会产生虚拟内存,dm文件。但是函数 ...


老哥,我问过cadence的Andrew了,那老头有问题是真给你回答,就和你说的一样
发表于 2024-7-9 14:12:55 | 显示全部楼层


danalog 发表于 2024-7-6 16:19
老哥,我问过cadence的Andrew了,那老头有问题是真给你回答,就和你说的一样
...


你这种情况很常见,所以多半是因为这个原因导致的现象,理解底层原理就很快推出来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-18 19:52 , Processed in 0.025938 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表