STA-常见输入件

2022-07-20
4 min read

常见输入件

参考1附录,后端设计常用输入件如下(有修改):

格 式 名称 作 用 示例
VHDL / Verilog 硬件描述语言 电路的系统级、行为级、结构级描述语言
VCD Value Change Dump 仿真信号跳变信息,用于芯片动态功耗分析 RTL / Gate VCD
SDC 设计约束 逻辑综合与物理实施的时序/面积/功耗约束
GDSII 图像显示标准 描述版图层次形状,位置等信息
LEF2 物理库交换格式 用于自动布局布线的物理库文件
Liberty 时序库 用于综合,时序分析的库文件 ASAP7:NLDM / CCS
DEF2 设计交换格式 布局布线后的电路网表文件
SPEF DSPF / RSPF / SPEF 标准寄生参数文件3,用于 SI、STA routed xtalk
SDF 标准延时格式 描述布局布线后单元及互连线的延时 mac.sdf
SAIF SAIF 动态功耗分析 RTL / Gate SAIF
CPF 通用功耗格式 低功耗设计约束文件
TCF 翻转计数格式 功耗分析,功耗优化
TWF 时序窗格式 噪声对延时影响的分析
TF/TECHLEF Technology file tech-lef,工艺技术文件
TLU+/TLUPlus/nxtgrd
capTable/qrcTechFile
寄生参数文件 参考

Liberty

单元命名

不同制造场有不同的单元库,命名规则也不完全一致,下面以 TSMC 为例介绍其组合逻辑单元命名规则:

Combinational Elements Description Special Cells Description
AN AND Gate ANTENNA Antenna Diode
AO AND-OR Gate BHD Bus Holder, Bus Repeater Cell
AOI AND-OR-Inverter Gate CKBX Balanced Clock Driver
BUFT Non-Inverting Tri-State Buffer with High Enable CKLHQ Negative-edge Gated Clock Latch with Q Output Only
IAO Inverter-AND-OR Logic Function Gate CKNX Balanced Clock Driver with Inverted Output
IND NAND with 1 Inverted Input CKND2 Balanced clock cell for 2 input NAND type

时序逻辑单元命名示例如下:

DF D flip-flop
DFN Negative trigger D flip-flop
DFK D flip-flop with Synchronous Clear/Set
DFX D flip-flop with 2-inputs MUX
EDFK Enable D flip-flop with Synchronous Clear/Set
LH Latch with Active High Clock
LN Latch with Active Low Clock
SDF Scan cell for corresponding D flip-flop

单元延迟示例

随着制造技术的发展,新制程下单元切换速度更快。下面提供几个源自不同工艺库的门延迟信息,以作为对比。从下面数据可以看到,同类单元,130nm 制程最慢切换速度是数 ns,而 7nm 制程最慢切换速度大概为数百 ps,两者相差一个数量级(Delay&Slew 均如此)。从 Trans 数据可以看出,Slew 对 Delay 的影响也更为明显

首先是 sky130_fd_sc_hvl__ff_n40C_4v40.lib(时间单位为 1ns;电容单位为 1pf)

cell ("sky130_fd_sc_hvl__and2_1") {
        area : 13.6752;
        cell_footprint : "sky130_fd_sc_hvl__and2";
  pin ("B") {
       capacitance : 0.0025800000;
...
	timing () {
   	cell_fall ("delay_template11x26") {
      	index_1("0.00100, 0.01300, 0.02600, 0.07200, 0.21600, ...");
      	index_2("0., 0.00867, 0.01040, 0.01248, 0.01498, 0.01797, ...");
      	values("0.11698, 0.17161, 0.18065, 0.19120, 0.20355, 0.21801, \
      					0.23506, 0.25527, 0.27930, 0.30800, 0.34225, 0.38339, \
      					0.43275, 0.49197, 0.56294, 0.64815, 0.75024, 0.87289, \
      					1.02017, 1.19657, 1.40867, 1.66307, 1.96807, 2.33477, \
      					2.77427, 3.30057",
...
   	fall_transition ("delay_template11x26") {
       	index_1("0.00100, 0.01300, 0.02600, 0.07200, 0.21600, ...");
       	index_2("0., 0.00867, 0.01040, 0.01248, 0.01498, 0.01797, ...");
       	values("0.02819, 0.07613, 0.08520, 0.09612, 0.10932, 0.12531, \
       					0.14470, 0.16826, 0.19705, 0.23167, 0.27369, 0.32478, \
       					0.38657, 0.46072, 0.55011, 0.65722, 0.78610, 0.93986, \
       					1.12569, 1.34744, 1.61445, 1.93488, 2.31821, 2.78050, \
       					3.33420, 3.99630", 
...

ASAP7nm asap7sc7p5t_SIMPLE_SLVT_SS_ccsn_211120.lib 库示例如下(时间单位 1ps;电容单位 1ff):

cell (AND2x2_ASAP7_75t_SL) {
     area : 0.08748;
     pg_pin (VDD) {
     pin (A) {
     		capacitance : 0.482411;
     		rise_capacitance_range (0.38144, 0.482411);
...
       timing () {
				 ...
         cell_rise (delay_template_7x7_x1) {
           index_1 ("5, 10, 20, 40, 80, 160, 320");
           index_2 ("1.44, 2.88, 5.76, 11.52, 23.04, 46.08, 92.16");
           values ( \
             "17.7556, 21.4563, 28.1491, 40.8243, 65.7752, 115.541, 214.978", \
             "18.2906, 21.9713, 28.637, 41.3457, 66.2952, 116.06, 215.462", \
...
         rise_transition (delay_template_7x7_x1) {
           index_1 ("5, 10, 20, 40, 80, 160, 320");
           index_2 ("1.44, 2.88, 5.76, 11.52, 23.04, 46.08, 92.16");
           values ( \ 
             "13.4536, 20.184, 33.9348, 62.0793, 119.278, 234.598, 465.838", \
             "13.4983, 20.2335, 33.9576, 62.0902, 119.276, 234.581, 465.845", \
...

ASAP7nm asap7sc7p5t_SIMPLE_SLVT_FF_ccsn_211120.lib 示例如下(时间单位 1ps;电容单位 1ff):

cell (AND2x2_ASAP7_75t_SL) {
     area : 0.08748;
     pg_pin (VDD) {
     pin (A) {
     	capacitance : 0.587184;
     	rise_capacitance_range (0.476014, 0.587184);
...
     timing () {
...
         cell_rise (delay_template_7x7_x1) {
           index_1 ("5, 10, 20, 40, 80, 160, 320");
           index_2 ("1.44, 2.88, 5.76, 11.52, 23.04, 46.08, 92.16");
           values ( \
             "10.6721, 12.5006, 15.842, 22.0985, 34.2587, 58.5115, 106.97", \
             "10.9908, 12.8029, 16.1161, 22.35, 34.4904, 58.7189, 107.169", \
...
         rise_transition (delay_template_7x7_x1) {
           index_1 ("5, 10, 20, 40, 80, 160, 320");
           index_2 ("1.44, 2.88, 5.76, 11.52, 23.04, 46.08, 92.16");
           values ( \ 
             "7.23706, 10.5257, 17.2716, 31.0918, 59.268, 116.223, 230.675", \
             "7.3767, 10.6512, 17.356, 31.1394, 59.281, 116.231, 230.676", \
...

单元特征提取

K 库4(Library Characterization),就是芯片器件特征提取,用于提取 Cell 特征,例如 NLDM、CCS、CCSN、Power 等。开源工具有 libretto5 / AutoLibGen6 / charlib7。SiliconSmart 和 Liberate 是商业工具。Sis(Siliconsmart)是新思科技的 K 库工具。不同工艺下 K 库会因输入和配置参数不同直接影响时序精度。例如影响 K 库精度的原因有:Pre-driver 波形、Slew 阈值点的选择、表格索引大小和间隔(曲线不同位置斜率不同)。Liberate 是 Cadence 公司提供的 K 库工具,其基本工具集如下表所示

Liberate Characterization Liberate LV Library Validation Liberate Variety Statistical Characterization Liberate MX Memory Characterization Liberate AMS Mixed-Signal Characterization
Standard Cells and Complex I/Os Librar Validation Process Variation Modeling Memory and Custom Blocks Mixed-Signal Characterization

K 库比较复杂,开源工具较少,故网络上的教程也较少。俄克拉何马州立大学(okstate.edu)开源了一份 K 库流程8,并提供相关脚本,细节请参考官网。利用 Synopsys 的工具也可以自行 K 库,细节请参考官方手册等资料9

备注

tech-lef

Technology file used by Synopsys in technology information .tf file format and by Cadence with technology information in LEF format (.techlef). Both the file contains the same information

工艺技术文件(Technology file)是代工厂提供给设计者用于后端版图设计到技术文件,同时也是与 EDA 工具交互工艺信息常用文件。技术文件到内容一般包括徒刑定义以及显示信息、互联线和通孔工艺信息等1

  • 工艺名称 / 电特性单位和精度 / 不同层的颜色
  • 不同层和通孔的 DRC,例如宽度、距离、面积、节距和最大电路密度等
  • 除金属层信息外,还有扩散层和多晶硅信息
  • 掩膜信息,布局 Site 信息 / 金属开槽规则,天线效应定义

  1. 陈春章, 艾霞, and 王国雄. 数字集成电路物理设计. 科学出版社, 2008. ↩︎

  2. LEF/DEF 5.8 Language Reference Product Version 5.8 2017. ↩︎

  3. Bhasker J, Chadha R. Static timing analysis for nanometer designs: A practical approach[M]. Springer Science & Business Media, 2009. ↩︎

  4. 张国丽.面向22nm近阈值标准单元的时序库设计.2022.东南大学,MA thesis.doi:10.27014/d.cnki.gdnau.2022.003893. ↩︎

  5. 西澤真一. “libretto: An Open Cell Timing Characterizer for Open Source VLSI Design.” IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences (2022). ↩︎

  6. Rachit I K, Bhat M S. AutoLibGen: An open source tool for standard cell library characterization at 65nm technology[C]//2008 International Conference on Electronic Design. IEEE, 2008: 1-6. ↩︎

  7. M. Mellor and J. E. Stine, “CharLib: An open source standard cell library characterizer”, Submitted to DAC 2024. ↩︎

  8. Thapa, Rabin, Samira Ataei, and James E. Stine. “WIP. Open-source standard cell characterization process flow on 45 nm (FreePDK45), 0.18 µm, 0.25 µm, 0.35 µm and 0.5 µm.” 2017 IEEE International Conference on Microelectronic Systems Education (MSE). IEEE, 2017. ↩︎

  9. Kuo, Yao-Ming, et al. “Educational design kit for synopsys tools with a set of characterized standard cell library.” 2018 IEEE 9th Latin American Symposium on Circuits & Systems (LASCAS). IEEE, 2018. ↩︎