STA-常见输入件
常见输入件
参考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 信息 / 金属开槽规则,天线效应定义
-
陈春章, 艾霞, and 王国雄. 数字集成电路物理设计. 科学出版社, 2008. ↩︎
-
LEF/DEF 5.8 Language Reference Product Version 5.8 2017. ↩︎
-
Bhasker J, Chadha R. Static timing analysis for nanometer designs: A practical approach[M]. Springer Science & Business Media, 2009. ↩︎
-
张国丽.面向22nm近阈值标准单元的时序库设计.2022.东南大学,MA thesis.doi:10.27014/d.cnki.gdnau.2022.003893. ↩︎
-
西澤真一. “libretto: An Open Cell Timing Characterizer for Open Source VLSI Design.” IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences (2022). ↩︎
-
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. ↩︎
-
M. Mellor and J. E. Stine, “CharLib: An open source standard cell library characterizer”, Submitted to DAC 2024. ↩︎
-
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. ↩︎
-
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. ↩︎