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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 49271|回复: 115

[原创] skill脚本 处理CDF属性值 callback

[复制链接]
发表于 2019-1-29 18:14:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 yanpflove 于 2019-1-29 18:20 编辑

callback.il.txt (1.5 KB, 下载次数: 646 )
skill脚本 处理CDF属性值 callback

附件内容和下方代码内容一致,我可以用这个求赏赐一些积分吗?

(帖子内容包含块注释符号后,就不能发表了?)
;*********************One library****************************
procedure(CallbackLib(lib)
    foreach(cellID ddGetObj(lib)->cells
        cell=cellID->name
        CallbackCell(lib cell) ;This function is defined below.
    );end foreach cellID
    printf(" ^_^ Library \"%s\" is finished. \n" lib)
);end procedure CallbackLib
;*********************One cell********************************
procedure(CallbackCell(lib cell)
    printf(" ^_^ Cell \"%s\" begins! \n" cell)
    when(cv=dbOpenCellViewByType(lib cell schematic "" "a")
        foreach(instID cv->instances
            cdfgData=cdfGetInstCDF(instID)
; We can add the CDF parameters here for callback.
            paramType=cdfFindParamByName(cdfgData"w")
            when (paramType~>callback evalstring(paramType~>callback))
            paramType=cdfFindParamByName(cdfgData"l")
            when (paramType~>callback evalstring(paramType~>callback))
            paramType=cdfFindParamByName(cdfgData"m")
            when (paramType~>callback evalstring(paramType~>callback))
            cdfUpdateInstParam(instID)
        );end foreach instID
        ;schCheck(cv)  ;check & save may output too many warnings.
        dbSave(cv)
        dbClose(cv)
    );end when cv
);end procedure CallbackCell
 楼主| 发表于 2019-3-1 10:50:51 | 显示全部楼层
订正:cdfgData 和后面的双引号之间应该有空格,这个错误是我的OCR导致的。




  1.             paramType=cdfFindParamByName(cdfgData"w")
  2.             when (paramType~>callback evalstring(paramType~>callback))
  3.             paramType=cdfFindParamByName(cdfgData"l")
  4.             when (paramType~>callback evalstring(paramType~>callback))
  5.             paramType=cdfFindParamByName(cdfgData"m")
  6.             when (paramType~>callback evalstring(paramType~>callback))


复制代码
发表于 2019-3-1 15:57:35 | 显示全部楼层
回复 2# yanpflove


   其实可以把参数写成   cdfgData~>parameters,然后再foreach每一个
 楼主| 发表于 2019-3-1 18:30:20 | 显示全部楼层
回复 3# huqy

哇哦,谢谢指点,通过遍历List来实现,真是方便简洁多了。 1.png

点评

所以还是建议用你开始的方法,根据实际情况看哪些parameter需要用callback更新,然后再callback相关的parameter.  发表于 2023-6-9 14:41
这样其实是有问题的,比如转工艺时,需要Update Wfg(Finger Width),当Wfg, Width同时都有callback时(***的工艺确实都有),如果先执行Wfg的callback,则Width值就不对  发表于 2023-6-9 14:39
发表于 2019-6-5 16:03:38 | 显示全部楼层
有注解吗?看不太懂呀
skill 是最糟糕的语言
 楼主| 发表于 2019-6-6 09:22:23 | 显示全部楼层


smilelddfy 发表于 2019-6-5 16:03
有注解吗?看不太懂呀
skill 是最糟糕的语言


您好,
请指出哪一句看不懂。
如果所有都看不懂,那么就没有解释的必要了,请先去阅读基本语法说明。
发表于 2019-6-6 09:35:11 | 显示全部楼层
楼主要不解释解释,这个skill脚本是用在什么情况下得?
并且, when (paramType~>callback evalstring(paramType~>callback)),这一行看不太懂啥意思啊?
发表于 2019-6-6 09:46:15 | 显示全部楼层


yanpflove 发表于 2019-6-6 09:22
您好,
请指出哪一句看不懂。
如果所有都看不懂,那么就没有解释的必要了,请先去阅读基本语法说明。


没有skill 基础,skill 语言和其他语言的风格差的远了点
 楼主| 发表于 2019-6-6 10:54:07 | 显示全部楼层


xxw9054 发表于 2019-6-6 09:35
楼主要不解释解释,这个skill脚本是用在什么情况下得?
并且, when (paramType~>callback evalstring(para ...


您好,
1,在需要通过skill脚本处理CDF属性的时候,直接修改这些变量的值,有时候并不能得到正确的结果。
    比如修改MOS管的W、L等。
原因是描述一个MOS需要很多属性,这些属性之间可能存在依赖关系,参见附图1。
    比如更改了finger width,那么由于total width等于finger width乘以m,所以total width的值也应该随之改变。
2,在CDF编辑窗口中可以清晰地看到一栏“callback”,是这些函数调用(callback)定义了属性之间的关系。由于通过skill命令修改属性值,并不能自动调用callback,所以需要skill使用者自行处理callback,而我这个脚本的目的就是调用callback。
3,附图2来自cadence help,说明了callback的作用和功能,以及注意事项,其中红框中明确说明了callback会在何时调用,而在何时不被调用。
4,when (paramType~>callback evalstring(paramType~>callback))
请见附图1中,有的属性存在callback,有的不存在callback,所以 when(paramType~>callback  ……)用来判断这个属性是否存在callback,如果存在,则“evalstring(paramType~>callback)”,执行callback中的内容。
附图1
cdf.png

附图2
cdf2.png
 楼主| 发表于 2019-6-6 11:01:22 | 显示全部楼层


smilelddfy 发表于 2019-6-6 09:46
没有skill 基础,skill 语言和其他语言的风格差的远了点


你好,还好啦,skill语言是基于LISP的,支持C语言风格的语法。
现在世界上有成千上万种编程语言的,虽有差异,但我想共性也会很多,要不然就太难学太难用了,就要消亡的。
skill.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-21 21:58 , Processed in 0.025886 second(s), 9 queries , Gzip On, Redis On.

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