请问做pcell时,怎么使W和L等变量带有单位u?
想这么做的原因是做Layout XL时,对应的电路的参数是带有单位 u 的,如电路中W=5u,调出来的pcell的尺寸是W=0.000005,而不是想要的W=5,因此版图与电路的尺寸有1000000倍的差距,想问同行高手们怎么解决,拜托各位。
定义管子的cdl
请问具体定义哪项?怎么定义?
好高深的问题,没做过,是不是有个隐身的单位,你看我们平时抽取的aucdl file , w=1e-6,也就是cell尺寸属性里面的w=1u
看看cdf的帮助文档就清楚了。
你说的隐身的单位是指默认的单位吗?默认单位是M(米),我省略没写出来,电路中的尺寸是带有M单位的,如W=5u M。
而工艺厂提供的PDK中的pcell是可以对应上的,在版图上调用时,pcell也是带有单位 u 的。
只是自己做出来的pcell调出来时就跟电路中的尺寸单位对应不上了。
大侠,请详细指点下吧。 我对cdf不是很了解,通常我编辑cdf都只是对应改变电路单元的属性,没试过怎么改版图的pcell的属性,电路单元我是用工艺厂提供的PDK。Layout XL中用工艺厂提供的pcell调出来是没有问题的,而我用自己做的pcell调出来就遇到尺寸单位的问题了。同样的电路单元,所以我想应该是我做的pcell哪里没设置好。再次请求指点!
HELLO
我的理解是, CDF 中的值是 string, 若單位為 m, 比方說 "5" 指的是 5 m, "5u" 是 5e-06 m.
他會對應到 PCell SKILL 中 pcDefinePCell 裏的 formal parameters.
但是在 SKILL 程式內, 畫圖參數用的是 float or int,
所以寫個兩行把 string parse 成 float, 再 div 1e-06, "5u" 就變成 5.0, 接著畫 layout.
Good luck
嗯,电路中的值应该是string,版图中做的pcell的值是float,但是我问的是怎么把画图pcell中的float变成string,而不是把电路中的string变成float。
把 number 變 string 常用 sprintf .請看manual.
你说你开发的pcell,看起来不像pcell从CDF中拿到W、L 的值,而W和L在cdf中的类型是string,并不是float,pcell CDF中拿到WL的值以后,像8楼说的先parse成
float,然后除以1e-6,转化成多少u。
还有就是u并不是单位,u=1e-6,只是个数值而已。
高手们回答的都太抽象了,谁能说说具体怎么操作,在哪里操作?如果能有个详细的操作步骤,我定感激不尽!
问题已解决,谢谢各位,尤其感谢8楼和11楼的高手!
请问小编是这么解决的?
请问小编是这么解决的?非常感谢,希望不要成为断头贴。分享经验。谢谢!
学习了。
自己做一个pcell,参数W和L为大写,然后转出skill文件。在skill文件上修改,参数那里W改为小写w,float改为string,默认尺寸那加单位u,并加双引号,如10 改为 ”10u”;L同上。let函数后加上一段语句:
when(stringp(w)W=cdfParseFloatString(w)
if ( W<0.001
then W=W*1e6
elseW=W ))
L同上。
并把原文件中的 (w=(pcParamProp~>value))删除。L同上。
非常有用,在这个问题上挣扎了好久,现在终于能解决了。
11111111111111111111
按17楼步骤做完,load skill文件不成功,报错*Error*difference : can't handle (nil - 1)
这个是哪里不对啊?看不懂
试了很多次,终于成功了。
when(stringp(w) W=cdfParseFloatString(w)
if (W<0.001
then W=W*1e6
elseW=W))
上面这段话应该放在let函数运算W语句的前面!不是后面!
您说的对!小编,这位的是正确做法。