数字IC后端物理实现
- 概述
-
- 实现工具
- TYPICAL FLOW
- ENVIRONMENT SETUP
概述
本篇文章仅供入门参考和个人的一些浅薄见解,不做任何问题上的深入讲解,因为本人也是一名初学者。
实现工具
主流工具:Cadence Innovus/Synopsys ICC&ICC2
TYPICAL FLOW
自动布局布线流程主要分为:读入设计、布局、标准单元布局优化、时钟树综合、时钟树综合后优化、布局布线、布线优化以及验收。
实际项目中,为了达到最终的验收目的,中间的流程需要反复迭代,并不能一步到位,比如时钟树综合或者优化后,如果发现时序有违例,或者布线存在拥塞,那可能最有效的方法就是调整布局,甚至重新综合。在大规模以及先进工艺的设计中,在布局布线工具中直接达到验收标准级别的时序收敛通常是比较困难的,因为布局布线工具毕竟只是一个实现级的工具,也许随着以后技术的不断改进,可能徽兼顾验收级别工具的功能,但目前任然需要借助PT这类验收级别的工具来反复的迭代验证才能达到快速的收敛。
ENVIRONMENT SETUP
布局布线工具的环境建立从库来看可分为三个:逻辑库、物理库、设计库:
1.逻辑库:用于描述单元的时序和功耗特性的文件格式,Liberty Library Format(.lib),是由Synopsys公司研发。根据工艺的复杂度以及设计要求,现阶段普遍应用三种模型
NLDM:非线性延时模型
CCSM:复合电流模型
ECSM:有效电流模型
CCSM和ECSM不仅包含了时序和功耗属性,还包含了噪声信息,所以与Spice模型的误差可以控制在2%~3%以内,而NLDM则一般与Spice模型的误差在7%左右,在相同工艺条件下描述相同电路结构,采用CCSM的Liberty文件大小一般是NLDM模型Liberty文件的8-10倍。
大多数情况下,半导体厂商在提供(.lib)文件的同时,也会提供二进制格式的(.db)文件。(.lib)文件和(.db)文件是一种文件的两种不同表达方式。ICC使用的逻辑库数据类型必须是(.db)格式的库文件。因此,若只有(.lib)文件,则需要使用Synopsys工具用命令将其转换成(.db)文件,DC、LC、PT、ICC均可
write_lib library_name -format db -output xxx.db
2.物理库:描述了工艺层次,工艺规则以及标准单元等IP的形状大小,端口位置信息,目前业内标准是(.lef)格式,但是Synopsys的ICC使用Milkway格式的数据库,其中的fram view就是物理库,其本质和lef一样,ICC2放弃了Milkyway,使用(.db)和(.lef)生成的ndm作为参考库创建ndb。通常情况下,IO单元和标准单元的Milkyway库由IP提供商提供,而宏单元(Macro)的Milkway需要后端设计人员用Synopsys专门的EDA工具Milkyway根据宏单元的GDS文件或lef文件生成。
对于每一个工艺的参考库,都有专门的技术文件(Technology File)来说明其工艺的参数信息,技术文件简称(.tf)文件,产生Milkyway物理库和ndb时需要用到此文件。
技术文件通常由工艺厂提供,文件主要包含了每层掩膜层的层号,连接层信息,子啊EDA工具中显示的颜色与线条,最小宽度,最小面积等信息。ICC就是根基技术文件中的描述的金属层和通孔层的设计规则进行布局布线的。
ICC的mdb创建方式
set top topname
set sdc_phase prects
#library_setup
source -e -v /library/library_tech.tcl
#Extends Milkyway database layer number support from 255 to 4095 layers
extend_mw_layers
#$lib_tech(tech,mdb) is technology file
cerate_mw_lib -technology $lib_tech(tech,mdb) topname.mdb
set_mw_lib_reference -mw_reference_library Milkyway topname.mdb
open_mw_lib topname.mdb
source -e -v $lib_tech(tech,ant)
report_antenna_rules
set_mw_technology_file -alf $tech(tech,em) topname.mdb
close_mw_lib
ICC2的ndb创建脚本
set top topname
#library setup
source -e -v /library/library_tech.tcl
if {[file exist ${top}.ndb]} {sh rm -rf ${top}.ndb}
#$lib_tech(tech,mdb) is technology file
#$lib_tech(physical_lib.ndb) is ICC2 ndm file
create_lib ${top}.ndb -technology $lib_tech(tech,mdb) -ref_libs $lib_tech(physical_lib.ndb)
source -e -v $lib_tech(tech,ant)
report_antenna_rules
save_lib
3.设计库:包含网表和约束文件,其中网表一般是Verilog格式,如果使用dc综合,推荐使用ddc格式的网表;约束一般是sdc格式,对整个设计的工作频率,时钟关系,输入输出延迟等进行了相关的约束。
4.Tluplus文件:一种二进制文件,无法用编辑器阅读或编辑,它包含了从多晶硅层到顶层金属各层的电阻电容相关参数。ICC通过Tluplus文件计算电路中每个节点的寄生电阻和寄生电容,从而得到连线上的延时,随着工艺节点的不断降低,电路延时中连线延时所占的比例也越来越高。
Tluplus文件是由工艺厂商提供,但有些情况下工艺厂商仅提供了itf文件,通过EDA工具StarRC将itf文件转换成Tluplus文件
grdgenxo -itf2TLUPlus -i <itf_file> -o <tluplus_file>
Environment Setup
#搜索路径设置,后续文件的调用就可以不指定路径
set search_path "./ \../data/lib/aa \../data/lib/bb \"
#目标库设置,指定工具优化时采用哪些标准单元
set target_library "std_ss_1p08v_125c.db"
#链接库设置,指定逻辑单元库,解决链接关系,第一个库必须是标准单元库
set link_library "$target_library \RAS1024x8_ss_1p08v_125c.db \RAS2048x32_ss_1p08v_125c.db \"
#电容查找表设置,指定电容查找表文件,用来快速计算寄生RC
set_tlu_plus_files -max_tluplus smic28_cmax.tluplus \-min_tluplus smic28_cmax.tluplus \-tech2itf_map mw2itf.layermap
#打开之前建好的mdb或者ndb
#open_mw_lib ${top}.mdb
open_lib ${top}.ndb
#读入网表和约束文件
#read_verilog -top $top ../data/netlist/top_scaned.v -design place
#import_designs -format verilog -cell floorplan \
# ../data/ddc/yourdesign.dft.v
import_designs -format ddc -cell floorplan \../data/ddc/yourdesign.dft.v
source ../data/sdc/yourdesign_func.sdc
current_block place
link_block