Library Types
Logic Libraries(综合过程中,设置时序库)
- Link library (Design Compiler中的关键字,link_library,set link library为多少)
- Target library(Design Compiler中的关键字,target_library,set target_library为多少)
Symbol Libraries(表示图形的库,不用这个库,GUI打开电路图,cell都是用方块表示,不能通过形状判断与门或者或门)
DesignWare Libraries(工具把常用的单元做成标准的库,让工具分析代码自动选择)
Physical Libraries(物理信息。例如一个cell长什么样子,pin在哪里,位置在哪。依赖floorplan信息做综合是必不可少。还有其他信息,如,technology route要求,金属层多少,走线方向,线宽等等)
Logic library (时序库)
Logic libraries
由foundry厂维护和提供,依赖自身生产工艺,做出参数提取,抽取时序信息,给用户提供库文件。foundry 厂把cell的布局布线信息给用户,用户可以自己抽取库中的时序信息,自己创建library。
Logic libraries内容:
时序库包含两个主要内容:timing table和function信息。
logic libraries包含有关每个cell的特征和功能的信息,例如:
- cell names, pin names(每个foundry厂对cell、pin的叫法不一样)
- area, power 信息
- delay arcs(即timing arc,描述延时信息,描述延时检查检查类型)
- pin loading(例如input pin 和output pin load是多少)
- Constraints (logic DRC:max_transition / max_fanout / max_cap。库里面最大的transition不能超过某个值,如果cell超过这个值,说明这个库不适合用了。工具会依据库中定义的和人为定义的信息,进行检查,选择最悲观的,计算)
logic libraries实现设计功能(AND、OR、NAND、DFF…)(功能描述)
logic libraries计算时序值和路径延迟、功率(依据timing table计算)
logic libraries Resolving cell reference
logic libraries中不同type:
- NLDM
- CCS
Symbol Library
Symbol Library(( 由半导体供应商维护和提供))包含在设计原理图中表示库单元的图形符号的定义。
Design Compiler 使用Symbol Library来生成原理图。
使用 Design Vision 查看原理图。
Design Compiler 安装包括一个默认Symbol Library文件 generic.sdb,位于 $SYNOPSYS_ROOT/libraries/syn 目录中。
使用 symbol_library 变量指定
DesignWare Library
DesignWare定义:
DesignWare Library是一组可重复使用的电路设计构建块(组件),它们紧密集成到 Synopsys 综合环境中。 【Synopsys 针对常用的逻辑电路,做出模块,coding中有使用到匹配的逻辑电路,依据人为加的constraint做替换。工具依赖这些constraint 做选择。】
在综合期间,Design Compiler 从 DesignWare Library中选择具有最佳速度和面积优化的组件。(工具依赖加的constraint文件,自动做选择,匹配面积还是速度优先的模块。也可以人为定义变量,人为去选择designware。比如一些时序要求很高的模块,CPU,选择全部速度优先的,可能面积大一些,但是时序好收敛)
使用 DesignWare Library有很多DW_开头的module定义。(工具自动选择的一些Designware去替代设计中出现的运算器。)
DesignWare运算操作
DesignWare主要解决一些运算操作。在数字后端设计中,数字运算操作称为datapath。
实现许多由 Synopsys 提供的内置 HDL 运算符。这些运算符包括+, -, *, <, >, <=, >=, 以及由 if 和 case 语句定义的操作。
为什么关注这些运算符?
- 一般,运算类时序路径不太好收敛【操作复杂,路径长】
- 有比较多的datapath,等价性验证有时会很难比。【等价性验证通过算法遍历所有情况,看功能是否一致,如果逻辑锥上有很多datapath,而且datapath实现方式有很多,工具没有办法判断实现方式时,会通过大量运算去判断这部分功能是否发生变化。因为这部分运算十分复杂,会导致工具有可能算不出来,这在等价性验证中称为abort。】
综合过程中用什么变量定义 DesignWare: synthetic_library
DesignWare 组件使用变量synthetic_library设置:
- 您无需指定实现内置 HDL 运算符的标准综合库 standard.sldb。
- dw_foundation.sldb library会自动添加到synthetic library列表中。
不定义这个变量,工具没有办法使用 DesignWare 构建操作运算。
Physical Library
DCT和DCG这两代DC工具使用 Milkyway(这是Synopsys家的一个数据类型)
最新一代DCNXT ,支持 Milkyway、NDM类型。
用来存储physical信息的类型。
Milkyway reference library
Milkyway reference library包含 standard cells 和macros的物理信息【物理形状,memory多大,pin位置,同时包含做布局布线的基本信息。(综合过程中读入floorplan信息做综合,引入后端在布局过程中的一个引擎coarse placement,粗略的摆放)】。
在综合过程中,出现什么问题,导致physical库有问题?
- 做带floorplan信息的综合时,报出warning或error:有一个logic cell,但是找不到对应的physical cell信息。——有可能只读入logic libraries的.db文件没有引入physical libraries。
- 没有net上的resistance或capacitance一些信息——row文件引入有问题。做net延时预估就没有依据。有可能physical libraries定义有问题。
在topographical mode下, Milkyway reference library使用 FRAM 抽象视图来存储信息。 Milkyway reference library还定义了放置单元平铺(可放置 instance的最小宽度和高度以及布线方向)。
Logic Library -- Link library
用于解决mapping、 references(映射,参考)问题。
例如,在设计中去实例化某个cell,这个cell对应的库文件是什么,把这些东西全部定义到link library的变量里面。
link库中提供两输入与非门 ,如果设计中使用与非门,就要对NAND cell分别进行实例化,实例化名字U1 U2 U3。
Link library分类:
- standcell library
- IO library
- Hard macro library
- Block hierarchical implementation(采用bottom up方式,小模块做好,顶层通过link library引入小模块)
Link library – Hard macro library
Hard macro library:
- Memory
- Hard digital IP
- Hard mixed signal IP(模拟数字混合)
Link library – Memory
Memory library:
- SRAM(静态易失性存储区)
- DRAM(动态易失性存储区)
- ROM(非易失性存储区)
- Register File
Link library – Hard digital library
成熟的第三方IP
Hard digital library:
- CPU core
- DSP core
- Etc.
Link library – Mixed signal library
Mixed signal library:
- PLL
- OSC
- USB PHY
- PCIE PHY
- DDR PHY
- DigRF
- Etc.
Logic Library -- Target library
在综合过程中,涉及优化。不单解决mapping和reference问题,主要任务解决优化。
优化分为不同阶段:
- 构架上优化
- 映射到标准库单元上之后,依然会做优化【包括cell驱动能力够不够(选大还是小),对于选择器max既可以单独去选一个max,还可以通过与门加inverter搭建一个max。对于一个布尔运算,用不同的方式实现。为了满足时序要求,选择不同的logic cell进行优化。】
Target library:
- 实现设计功能。
- 在优化过程中映射到。
- 包含用于生成网表和设计操作条件定义的单元。
- 用于compile 或 translate设计的 link libraries 的子集。
- 包括performance library 和low power library
Target library -- Performance library
不同阈值电压的library:
- HVT:高阈值电压的库。(high)mos管导通需要更高的电压,延时更大,leakage更小
- SVT:标准阈值电压的库。(standard)(还有的foundry厂叫RVT,regular VT)
- LVT :低阈值电压的库。(low)
- ULVT:阈值电压更低,cell更快,leakage更大。(ultra)(一些foundry厂提供)
工艺为什么要提提供不同阈值电压的库?
涉及时序和功耗平衡问题。
在某一些高速运行的路径或设计中,只有满足低阈值电压库才会满足时序要求。
对于design,只有很小的一部分时序很严格,大部分不严格,当foundry厂提供不同阈值电压的library,用户或工具可以去选择。例如,对于高速端口,可以使用一小部分ULVT来解决时序问题,大部分逻辑,使用HVT,既满足要求又降低功耗,在时序和功耗之间得到平衡。这取决于芯片的种类和应用类型的不同,针对不同阈值电压的cell占比会有要求。
Performance library:
- 包含高速单元
- 具有低阈值电压
- 具有高泄漏电流
- 以关键时序路径为目标
Target library -- Low power library
Low power library :
- 具有高阈值电压
- 具有低泄漏电流
- 针对非关键时序路径以节省功耗
一个库是放在link library还是target library?
逻辑需要做优化的时候,这个标准库单元需要定义到target library里面。
通常,所有的hard marco、memory、第三方IP等等只有一个选择。只能放在link library里面去做映射、解决参考实例化。
standard cell有不同类型。数字逻辑部分通过布尔运算用不同的cell去搭建。定义到target library中。
不同阈值电压、不同沟道长度的standard cell,在时序和功耗上面做平衡。如果做综合过程中,希望工具依据时序要求选用不同阈值电压、不同沟道的库,就将这些库定义到target library里。
为了给后面的布局布线留更多的余量,在综合过程中,只使用高阈值电压的库,长沟道lib cell,就把高阈值电压的库定义到target library中,其他低阈值电压的库定义到link library中。