以从st02库制作06BICDDBC库为例说明制作PDK的过程。
1)拷贝原始库文件夹(st02)到新库(06BICDDBC)文件夹。
2)查看新库的仿真文件(例如s06bicddbc01v20.scs).找出所有的mos,res,cap的model
类型,以及最大/最小长/宽,温度系数TC1,TC2的值。对于电阻,找出dl和dw(注意,仿真文件中的dw和dl和CDF中的dw,dl是正负数的关系)。
3)把旧的cell名称改为新库中的cell名称。拷贝cell的“symbol”view到“auCdl”、“spectre”。
这两个view决定了参数怎么传递给网表和仿真程序ADE。
4)改变CDF中的参数,使用“Base”级别,保证修改可以被保存。主要的改变是“Component
Parameters”,它决定了器件的model名字,默认长度/宽度,温度系数TC1,TC2的值,dw,dl(与scs文件正负数关系)。“Simulation Information”部分包含“auCdl”“auLvs”
“spectre”。可以参照st02库看相应的器件类型的写法。对于以pcell形式制作的电阻的schematic不需要spectre信息,因为它会调用子电路,相应仿真信息在子电路器件中给出。
5)每个器件文件夹下有pdk.dat文件,这个文件包含很多重要信息,大部分pdk.dat中的参
数将会重写CDF中的同名参数。此文件也包含layout的版图层间距参数,详情需看layout 的pcell脚本文件。在创建pdk时,pdk.dat包含最大|最小长度|宽度|M值。应该对照model文件设置相应的宽度长度limit。每次改变pdk.dat需要重启cadence才能生效。st02的pdk.dat不能直接查看。使用以下的skill脚本可以看到pdk.dat文件的信息。
cvid=dbOpenCellViewByType(“st02”“mp”“schematic”) //得到cvid值
dpt=PasGetDeviceProps(cvid) //dpt中就是pdk.dat的信息
dpt~>?? //显示dpt内容
pdk.dat文件应该以skill中列表的形式书写,更多信息参考本路径下的pdk.dat文件。6)电阻为便于仿真被设置为参数化的schematic。只拷贝源器件改变不了子电路的model
名字。所以应该使用以下的skill代码:
cvid=dbOpenCellViewByType(“06BICDDBC”“rhr”“schematic”“”“a”) //rhr是cellname cvid~>parameters~>model=cvid->cellName
dbSave(cvid)
dbPurge(cvid)
7)改变库文件夹下的”libInit.il”文件。改变libName为新库名字,这里是”06BICDDBC”。APPEND
1)可以使用以下skill代码查看pcell的skill源代码,以下例子将pcell写入test.il文件
cvid=dbOpenCellViewByType(“libName”“cellName”“viewName”)
dbWriteSkill(cvid “~/dump_pcell/test.il”“w”“4.4”) //test.il就是目标文件