第三章 工艺文件准备:理解.lib模型、.tch技术文件、.sp SPICE网表、工艺角(PVT)定义

好,咱们进入正题。这一章要聊的是工艺文件准备,说白了就是给SiliconSmart喂的“食材”。你想想看,特征化工具再厉害,没有准确的工艺文件,出来的结果也是垃圾。

我个人习惯,拿到一个新工艺库,第一件事就是把这四样东西理清楚:.lib模型、.tch技术文件、.sp网表、还有PVT定义。缺一个,后面跑流程就会卡住。

3.1 .lib模型——时序和功耗的“字典”

.lib文件,全称是Liberty库模型。它描述的是标准单元的各种时序、功耗、噪声特性。你可以把它理解成一本“字典”,里面查每个单元的延迟、转换时间、功耗是多少。

我遇到过刚入行的同事,以为.lib是工具自动生成的。其实不是。.lib是我们要提供给SiliconSmart的输入参考,工具会根据它来生成最终的特征化结果。

一个典型的.lib片段长这样:

cell (AND2X1) {
  area : 9.8;
  pin (A) {
    direction : input;
    capacitance : 0.003;
  }
  pin (Y) {
    direction : output;
    function : "A & B";
    timing () {
      related_pin : "A";
      timing_sense : positive_unate;
      cell_rise (delay_template_7x7) {
        index_1 ("0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0");
        index_2 ("0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5");
        values ( \
          "0.012, 0.015, 0.021, 0.032, 0.054, 0.098, 0.187", \
          ...
        );
      }
    }
  }
}

这里要注意几个关键点:

  • cell area:单元面积,单位通常是um²
  • pin capacitance:输入引脚电容,单位pF
  • timing table:延迟查找表,横轴是输入转换时间,纵轴是输出负载
我的小技巧: 拿到.lib后,先检查一下查找表的维度。7x7是常见配置,但有些工艺会用9x9甚至更大。维度不匹配,SiliconSmart会报错。

3.2 .tch技术文件——工艺的“身份证”

.tch文件,全称Technology File。它定义了工艺的物理参数,比如金属层、通孔、设计规则等。SiliconSmart用它来理解单元的物理结构。

说白了,.lib告诉工具“这个单元延迟多少”,.tch告诉工具“这个单元长什么样”。

一个.tch文件里通常包含:

  • 金属层定义(M1, M2, ...)
  • 通孔类型(V1, V2, ...)
  • 最小线宽、最小间距
  • 单位电阻、单位电容

我记得有一次,项目组给的.tch文件里金属层厚度写错了,结果特征化出来的功耗比实测高了30%。排查了两天才找到原因。嗯,这里要提醒大家:.tch文件一定要和foundry提供的PDK版本对应上。

3.3 .sp SPICE网表——电路的“骨架”

.sp文件,就是SPICE网表。它描述了标准单元内部的晶体管级连接。SiliconSmart通过仿真这个网表,来提取时序和功耗数据。

一个反相器的.sp网表大概长这样:

.SUBCKT INVX1 A Y VDD VSS
M1 Y A VSS VSS NMOS W=0.5u L=0.13u
M2 Y A VDD VDD PMOS W=1.0u L=0.13u
.ENDS INVX1

这里要注意:

  • W和L:晶体管的宽度和长度,直接影响驱动能力
  • M1和M2:分别是NMOS和PMOS
  • 节点命名:VDD和VSS是电源和地,A是输入,Y是输出
避坑指南: 我曾经遇到一个案例,.sp网表里晶体管的模型名写错了,比如用了"nch"而不是"nmos"。SiliconSmart仿真时直接报错,说找不到模型。检查网表时一定要确认模型名和工艺库一致。

3.4 工艺角(PVT)定义——仿真的“环境条件”

PVT是Process、Voltage、Temperature的缩写。说白了,就是芯片在不同制造偏差、电压、温度下的表现。

常见的工艺角组合:

工艺角名称 工艺 电压 温度 典型应用
TT_1.2V_25C Typical 1.2V 25°C 典型条件
SS_1.08V_125C Slow 1.08V 125°C 最差时序
FF_1.32V_-40C Fast 1.32V -40°C 最佳时序
SF_1.2V_25C Slow NMOS, Fast PMOS 1.2V 25°C 特殊偏差

你想想看,为什么要有这么多角?因为芯片制造出来,不可能每一颗都一模一样。有的快,有的慢。我们要保证在最差情况下,芯片也能正常工作。

在SiliconSmart里配置PVT时,我建议:

  • 至少跑三个角:TT、SS、FF
  • 如果项目对功耗敏感,再加一个SF或FS角
  • 温度范围要覆盖-40°C到125°C
核心要点: PVT定义不是越多越好。每个角都要跑仿真,时间成本很高。一般项目选5-7个角就够了。我见过有人一口气定义20个角,结果跑了一周还没跑完。

3.5 四者的关系——一张图说清楚

最后,我用一句话总结这四者的关系:

  • .lib:告诉工具“要测什么”
  • .tch:告诉工具“工艺长什么样”
  • .sp:告诉工具“电路怎么连”
  • PVT:告诉工具“在什么条件下测”

缺了任何一个,SiliconSmart都没法正常工作。就像做饭,缺了盐、缺了油、缺了火候,都做不出好菜。

嗯,这一章就到这里。下一章我们聊聊怎么把这些文件喂给SiliconSmart,开始第一次仿真。