【数字IC】——逻辑综合,物理数据的读入
1、概述
首先需要读入将会被综合的Design:Verilog、SystemVerilog、VHDL
逻辑综合通常包含两个库:逻辑库和物理库。
1.1 逻辑库【Logic Library(db files)】
本章节将不再对逻辑库进行赘述,大家感兴趣的话可以阅读我这两篇博客。
逻辑综合——Flatten
逻辑综合——Hierarchical
1.2 物理库【Physical Library】
说到物理库,大家的第一反应会是什么呢?是版图?是寄生参数?还是?请大家跟随我的脚步一起来揭开其神秘的面纱叭~
2、物理数据
物理数据——design library主要分为两大板块,design library相当于一个容器~~~
分别为 Reference library 和 Technology data
2.1 Reference library
Reference libraries 包括 Cell Size 和 pin location等信息。
Standard Cell Library |
---|
IP or macro Cell Library |
I/O pad Cell Library |
2.1.1 Standard Cell Library
标准单元库是先前设计好的逻辑门的layout,也就是GDS版图。
标准单元库有很多特征:一个库中的标准单元有着相同的高度,它们通常由ASIC vendor或者library group提供,如果我们采用12nm的工艺去做设计,我们所使用的Standard cell library是唯一的。
library中一般包含inverters、buffers、ands、ors、nands、nors、muxes、latches、flip-flops
---------------------------------【Layout Views】 vs.【Abstract Views】-------------------------------
Abstract Views 包含 P&R 需要的最小数据。
- Cell 的轮廓(size and shape of the cell)
- Pin 的位置以及layer
- 金属 blockage (多用在Macro中)
Standard Cell 的 Layout Views 和 Abstract Views 最初以标准格式 GDSII 构建。
后来转化为 tool-specific formats,比如被Synopsys tool使用的Milkyway database。
2.1.2 IP or macro Cell Library
IP or Cell Library 描述了IP以及macro的layout,上一章我已介绍了IP和macro的概念,大家点进以下链接即可阅读。
http://t.csdnimg.cn/cqMCe
2.1.3 IO pad Cell Library
IO pad Cell Library 描述了IO pad的layout,何为IO pad呢?下面做一个小小的补充。
补充:IO pad
IO pad是不仅仅是输入输出信号的连接点,它内部通常包含一定的电路结构,这些电路可以非常复杂,可以将芯片管脚的信号传入到芯片内部,又可以将芯片内部输出的信号经过处理传到芯片管脚。
2.2 Technology date
-
Technology file 包含以下文件:
2.2.1 Technology File
对于每个技术来说,technology file(.tf)是唯一的
其包含每个 metal layer的名字、物理和电学特征 以及 布线设计规则。
常见的 technology file 的格式如下所示
Technology {
units
operating_conditions
routing_rule_modes
}
PrimaryColor {
primarycolor_attributes
}
Color color_value {
color_attributes
}...
LineStyle "name" {
linestyle_attributes
}...
Tile "name" {
tile_attributes
}...
Layer "name" {
display_attributes
layout_attributes
parasitic_attributes
physical_attributes
}...
ContactCode "name" {
contactcode_attributes
}...
DesignRule {
layer_attributes
rule_attributes
}...
FringeCap value {
fringecap_attributes
}...
CapModel {
capmodel_attributes
}
CapTable {
captable_attributes
}
ResModel {
resmodel_attributes
}
PRRule {
prrule_attributes
}...
DensityRule {
densityrule_attributes
}...
SlotRule {
slotrule_attributes
}...
2.2.2 TLUPlus file
TLUPlus file包含了RC查找表。
TLUPlus实际上是一个二进制文件,是由“Interconnect Technology Format”(ITF)文件编译而来的。
什么是ITF文件呢?
ITF文件是Synopsys的工艺参数文件,包含了有关该技术的物理特征信息(层厚度、电阻率、介电常数和温度系数等)。
可以使用 StarRC tool 将 ITF 中的数据转换为RC模型,并输出为TLUPlus文件。
2.2.3 Layer Mapping file
顾名思义,Mapping就是映射的意思。那么是who映射到who呢❓❓❓
我们这步需要用到上述的两个文件:Technology File 和 TLUPlus file
Layer mapping file 用 TLUPlus 中 layer/via 的名字 匹配 Technology file 中 layer/via 的名字
2.2.3 Milkyway design library
我看到这里的小伙伴们,还记得开头那张容器图嘛❓
那就是Milkyway design library❗
我们需要把Reference library、Technology file 以及 TLUPlus file 进行打包,以供DC-topo使用。
3、加载物理数据的方法
- 如果是第一次加载物理数据,可以使用以下参考代码
set_app_var mw_reference_library $MW_REF_LIBS
set_app_var mw_design_library $MW_DESIGN_LIB
create_mw_lib \
-technology $tech_file \
-mw_reference_library $mw_reference_library \
$mw_design_library
open_mw_lib $mw_design_library
# CONSISTENCY CHECK betwwen logical and physical library
check_library > ../
set_tlu_plus_files \
-max_tluplus $TLUPLUS_MAX
-tech2itf_map $MAP_FILE
#CONSISTENCY CHECK between TLUPlus and technology files
check_tlu_plus_files
- 在综合的时候我们为了debug或者优化,可能会多次读入设计,如果想要RE-LOADING已经存在的设计,可以仅采用以下代码。
open_mw_lib $mw_design_library
set_tlu_plus_files \
-max_tluplus $TLUPLUS_MAX
-tech2itf_map $MAP_FILE
4、综合全流程
4.1 Defining Logical Libraries
dc_shell -topo > set_app_var search_path "$search_path mapped rtl libs cons"
dc_shell -topo > set_app_var target_library file_name.db
dc_shell -topo > set_app_var link_library "* $target_library"
dc_shell -topo > set_app_var symbol_library file_name.sdb
4.2 Loading Logical Data
UNIX% dc_shell -topo
dc_shell -topo > ...; # Load physical technology data
dc_shell -topo > define_design_lib WORK -path ./work
dc_shell -topo > read_verilog {TOP.v}
dc_shell -topo > current_design TOP
dc_shell -topo > link
dc_shell -topo > ...; # Load floorplan data
dc_shell -topo > check_design
dc_shell -topo > write -f ddc -hier -out TOP.ddc
dc_shell -topo > source -echo -verbose TOP.con
dc_shell -topo > check_timing
dc_shell -topo > compile_ultra
dc_shell -topo > report_constraint -all_violators
dc_shell -topo > change_names -rule verilog -hier
dc_shell -topo > write -f verilog -hier -out TOP.v
dc_shell -topo > write -f ddc -hier -out TOP.ddc
4.3 Loading Physical Data
dc_shell -topo > set_app_var mw_reference_library $MW_REF_LIBS
dc_shell -topo > set_app_var mw_design_library $MW_DESIGN_LIB
dc_shell -topo > create_mw_lib \
-technology $tech_file \
-mw_reference_library $mw_reference_library \
$mw_design_library
dc_shell -topo > open_mw_lib $mw_design_library
dc_shell -topo > check_library > ../
dc_shell -topo > set_tlu_plus_files \
-max_tluplus $TLUPLUS_MAX
-tech2itf_map $MAP_FILE
dc_shell -topo > check_tlu_plus_files
dc_shell -topo > read_verilog {TOP.v}
dc_shell -topo > current_design TOP
dc_shell -topo > link
dc_shell -topo > source DESIGN_NAME_phys_con.tcl
dc_shell -topo > read_floorplan MYDESIGN.fp
dc_shell -topo > extract_physical_constraints DESIGN_NAME.def