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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
123
返回列表 发新帖
楼主: zhumingzhu

[求助] 请问做pcell时,怎么使W和L等变量带有单位u?

[复制链接]
发表于 2016-9-5 18:42:14 | 显示全部楼层
本帖最后由 abby118 于 2016-9-5 18:43 编辑

试了很多次,终于成功了。
when(stringp(w) W=cdfParseFloatString(w)
if (W<0.001
then W=W*1e6
else  W=W))

上面这段话应该放在let函数运算W语句的前面!不是后面!
发表于 2017-1-1 14:57:06 | 显示全部楼层
回复 8# whyarthur


  您说的对!  楼主,这位的是正确做法。
发表于 2020-7-27 14:48:06 | 显示全部楼层


abby118 发表于 2016-9-2 10:19
按17楼步骤做完,load skill文件不成功,报错*Error*difference : can't handle (nil - 1)
这个是哪里不对 ...


不知道能不能看见,不知道还记得不,我也遇到了一样的错误提示,不知道你是怎么解决的??我的PCELL是用VIRTUOSO带的PCELL制作工具做的,是图形界面做完,生成的SKILL文件,对这个SKILL文件做的修改,然后就遇见了这个错误提示
发表于 2020-8-3 09:33:17 | 显示全部楼层
插眼学习大神们的操作
发表于 2021-6-8 16:55:44 | 显示全部楼层
此贴非常受用,我找样画瓢,终于搞成
发表于 2021-7-5 10:46:17 | 显示全部楼层


abby118 发表于 2016-9-5 18:42
试了很多次,终于成功了。
when(stringp(w) W=cdfParseFloatString(w)
if (W


pcDefinePCell(list(ddGetObj("smic18ee_pcell") "nlv50e2r_SKILL" "layout")
    ((l string "0.6u")
        (w string "0.7u")
    )
     when(stringp(l) L=cdfParseFloatString(l)
        if (L<0.001
        then L=L*1e6
        else  L=L))
              when(stringp(w) W=cdfParseFloatString(w)
        if (W<0.001
         then W=W*1e6
         else  W=W))
    let((L L0 L0offset W W1
            W1offset pcMember pcStretchGroup stretchOffsetX stretchOffsetY
            pcLib pcMaster pcInst pcTerm pcPin
            pcPinName pcNet pcTermNet pcNetName pcTermNetName
            pcMosaicInst pcParameters pcParamProp pcStep pcStepX
            pcStepY pcRepeat pcRepeatX pcRepeatY pcIndexX
            pcIndexY pcLayer pcPurpose pcLabelText pcLabelHeight
            pcPropText pcParamText pcCoords pcPathWidth pcPolygonMargin
        )
        (pcLib = (pcCellView~>lib))

        (pcParameters = ((pcCellView~>parameters)~>value))

        (pcParamProp = car(exists(prop pcParameters
                    ((prop~>name) == "L")
                )
            ))
        )
        if(((pcParamProp~>valueType) == "boolean")
            (L = (L == "TRUE"))
        )
        (pcParamProp = car(exists(prop pcParameters
                    ((prop~>name) == "W")
                )
            ))  
        if(((pcParamProp~>valueType) == "boolean")
            (W = (W == "TRUE"))
        )

        (L0 = l)
        (W1 = W)
        (L0offset = (L0 - 0.6))
        (W1offset = (W1 - 0.7))
        dbReplaceProp(pcCellView "function" "string" "transistor")
        dbReplaceProp(pcCellView "_pcCompiledCounter" "int" 452)
        dbReplaceProp(pcCellView "viewSubType" "string" "maskLayoutParamCell")
        (pcLayer = 84)
        (pcPurpose = "drawing")
        (pcInst = dbCreateRect(pcCellView
                list(pcLayer pcPurpose)
                list((-0.32:-0.15)
                    ((2.34 + L0offset)1.55 + W1offset))
                )
            ))
        (pcLayer = 40)
        (pcPurpose = "drawing")
        (pcInst = dbCreateRect(pcCellView
                list(pcLayer pcPurpose)
                list((0.0:0.0)
                    ((2.02 + L0offset)1.4 + W1offset))
                )
            ))
        (pcLayer = 30)
        (pcPurpose = "drawing")
        (pcInst = dbCreateRect(pcCellView
                list(pcLayer pcPurpose)
                list((0.71:0.0)
                    ((1.31 + L0offset)1.4 + W1offset))
                )
            ))
        (pcLayer = 10)
        (pcPurpose = "drawing")
        (pcInst = dbCreateRect(pcCellView
                list(pcLayer pcPurpose)
                list((0.18:0.35)
                    ((1.84 + L0offset):(1.05 + W1offset))
                )
            ))
    )
)
  请问具体是在哪里加呢?

发表于 2021-7-5 11:11:06 | 显示全部楼层


abby118 发表于 2016-9-5 18:42
试了很多次,终于成功了。
when(stringp(w) W=cdfParseFloatString(w)
if (W


能不能发一下完整的代码?
发表于 2023-11-28 17:23:17 | 显示全部楼层


zhumingzhu 发表于 2015-10-24 20:41
回复 15# songjinrong


非常感谢!解决了我的问题!
发表于 2024-1-8 17:48:53 | 显示全部楼层




  1. pcDefinePCell(ddGetObj(library_name) view_name  "layout"
  2. (D "string"  "1.5u")
  3. (........)
  4. let(()
  5. vD = unitString(D);
  6. ;use vD to do somthing
  7. )
  8. cdfCreateParam( cdfId
  9.                 ?name           "D"
  10.                 ?prompt         "distance(M)"
  11.                 ?units          "lengthMetric"
  12.                 ?defValue       "1.5u"
  13.                 ?type           "string"
  14.                 ?display        "t"
  15.                 ?editable       "t"
  16.                 ?parseAsNumber  "yes"
  17.                 ?parseAsCEL     "yes"



复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-22 04:53 , Processed in 0.027285 second(s), 6 queries , Gzip On, Redis On.

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