恒裕 发表于 2023-8-3 13:36:33

数字标准单元库cdl网表转成原理图

本帖最后由 恒裕 于 2023-8-3 13:41 编辑

本文目的在于将工艺厂提供标准单元库的cdl网表转成对应的原理图。通常cdl网表中器件参数如下。如果直接使用原始网表,转成原理图后器件的symbol参数和器件的属性参数不对应。因此需要使用程序在原始网表后面添加一项参数fw,添加后的网表如下。
MM41 net115 xo net78 VPW N15LL W=200.00n L=130.00n(原始参数)
MM41 net115 xo net78 VPW N15LL W=200.00n L=130.00n fw=200.00n(添加后)
需要将整个原始的cdl网表都做转换,新建个空白文件,命名change_cdl,转换程序如下:
%%工艺厂提供的标准单元库中,电源和地使用了全局变量使用程序如下
$read_in = "./origin.cdl"; #原始网表
$write_out = "./output.cdl"; #生成网表
open (IN, "< $read_in") or die "Can't open original file: $!\n";
open (OUT, "> $write_out") or die "Can't open output file: $!\n";
while (<IN>) {
if (/^\.subckt/) {
    chomp;
    $_ .= " VDD VSS";   #VDD和VSS为电源和地名
    print OUT "$_\n";}
elsif (/^M.*W=(\S+)/) {chomp;
   $_ .= " fw=$1";
   print OUT "$_\n";
   }
   else {
   print OUT $_;
   }
}
close IN;
close OUT;
open (TEST, "<$write_out") or die "can not open the file: $!\n";
while ( <TEST> ) {
       print;
}
close TEST;
打开终端,输入./change_cdl,就生成了可以转换的cdl网表。之后
cadence主界面 file—import—spice
1、第一个界面有四个位置修改
(1)新生成的cdl库位置
(2)选择cdl
(3)参考库选择pdk对应的基本库
(4)将device mapping 打对号

2、第二个界面有一个位置要修改
(1)添加输出库,其余默认。

3、第三个界面默认
4、第四个界面
(1)file导入写好的映射文件如下,因为我们不要使用二极管和电阻,因此此处没有研究二极管和电阻写法。将新生成的output.cdl 网表中的 NMOS名字(N15LL)替换成nfet,PMOS名字(P15LL)替换成pfet。
devSelect := nfet n15ll (n15ll是PDK库中对应的器件名称)

propMatch := subtype N

propMap := L l W w Fw fw M m (参数对应,如果顺序有问题去查cdf文件
                              中的promap,主界面tools—cdf--edit)

addProp := model n15ll
devSelect := pfet p15ll (n15ll是PDK库中对应的器件名称)

propMatch := subtype P

propMap := L l W w Fw fw M m

addProp := model p15ll
(2)可以通过面板修改参数
(3)实在不懂,可以help文件。


5、第五个界面默认。之后OK开始转换,一定注意报告的log文件

populaa 发表于 2023-12-19 10:15:10

谢谢分享
页: [1]
查看完整版本: 数字标准单元库cdl网表转成原理图