本文介绍用cadence quantus extraction(老点的版本叫Cadence EXT)从DEF抽spef的流程和方法,一次性可以抽取多个corner的spef。
〇、需要提前准备的文件
一、从innovus里导出最终的def。
defOut -floorplan -netlist -routing digital_top.def
二、为了编写脚本方便,新建一个文件夹test,把def、tech lef、stdcell lef、qrcTechFile拷贝或软链接到同一个目录下。假设test目录层次关系如下:
/home/user/test
|- digital_top.def
|- tech.lef
|- stdcell.lef
|- qrc_tech_file.defs (本文3.1介绍,手工编写)
|- QRC
|- rcmax
|- qrcTechFile
|- cmax
|- qrcTechFile
|- rcmin
|- qrcTechFile
|- cmin
|- qrcTechFile
|- typ
|- qrcTechFile
|- corner.defs (本文3.2介绍,手工编写)
三、编写抽取spef的脚本
3.1、定义qrc tech库
即用类似cds.lib的格式来定义qrctechfile所在路径,指定到rcmax、rcmin等所在目录,例如在工作目录test新建一个qrc_tech_file.defs
,内容如下:
# define tech name
DEFINE QRC /home/user/test/QRC
DEFINE
是关键词,QRC
是工艺库名字,后面跟路径。
3.2、定义多corner配置文件
在3.1指定的qrc库路径QRC
下,新建corner.defs
文件,也是采用cds.lib的格式,来定义每个corner的qrcTechFile
所在路径,具体内容如下,
# define corners
DEFINE rcmax /home/user/test/QRC/rcmax
DEFINE rcmin /home/user/test/QRC/rcmin
DEFINE cmax /home/user/test/QRC/cmax
DEFINE cmin /home/user/test/QRC/cmin
DEFINE typ /home/user/test/QRC/typ
注意:corner.defs文件名不要修改,quantus运行时会根据文件自动查找。
3.3、编写抽取spef的cmd文件qrc_cmd_multicorner.tcl
。
首先,定义def、top、spef前缀、log等文件名。
其次,定义qrc tech库,要抽取spef的corner和温度。
再定义,lef与qrc tech层的对应关系。前一列是lef(innovus)层的名字,后一列是qrc tech file(ict文件)的层的名字。
用input_db
设置lef和def文件。
用extract
和filter_coupling_cap
设置抽取spef的参数,其中电容阈值可以在innovus里利用setDesignMode -process 130
来取得)。
用global_nets
设置电源和地线的名字
用output_setup
和output_db
设置spef的名字和细节。
用log_file
设置抽取spef的log文件名和warning、error的数量。
完整脚本qrc_cmd_multicorner.tcl
如下:
set MYDEF digital_top.def
set top digital_top
set MYSPEF_PREFIX ${top}
set MYLOG qrc.log
process_technology \
-technology_library_file qrc_tech_file.defs \
-technology_name QRC \
-technology_corner rcmax cmax rcmin cmin typ \
-temperature 125 125 -40 -40 25
distributed_processing -multi_cpu 16
# first column is the layer name in APR/lef
# second column is the layer name in ict/qrctechfile
extraction_setup \
-technology_layer_map \
PO_L71 PO \
Cont_L92 CO \
M1_L111 M1 \
T1_L121 T1 \
M2_L112 M2 \
T2_L122 T2 \
M3_L113 M3 \
T3_L123 T3 \
M4_L114 M4 \
T4_L124 T4 \
M5_L115 M5
graybox -type lef_obstruction
input_db \
-type def \
-lef_file_list {tech.lef stdcell.lef} \
-design_file ${MYDEF}
extract \
-selection all \
-type rc_coupled
# note: the unit is fF
filter_coupling_cap \
-cap_filtering_mode absolute_and_relative \
-total_cap_threshold 0 \
-coupling_cap_threshold_absolute 0.4 \
-coupling_cap_threshold_relative 1
global_nets -nets "VCC VSS"
output_setup \
-file_name ${MYSPEF_PREFIX} \
-compressed true
output_db \
-type spef \
-subtype standard \
-output_incomplete_nets true \
-output_unrouted_nets true
log_file \
-file_name ${MYLOG} \
-dump_options true \
-max_info_messages 10000 \
-max_error_messages 10000 \
-max_warning_messages 10000
四、运行cadence quantus软件
在terminal里运行quantus -cmd qrc_cmd_multicorner.tcl
,在当前目录下即可生成多个corner的spef文件。
五、常见工艺节点的电容阈值的设置
节点 | total | relative | absolute |
---|
180~150 | 5 | 0.03 | 3 |
130~110 | 0 | 1 | 0.4 |
90 | 0 | 1 | 0.2 |
<55 | 0 | 1 | 0.1 |