时序分析基本概念介绍——时序库Lib,除了这些你还想知道什么?

今天主要介绍的时序概念是时序库lib,全称liberty library format(以• lib结尾),
用于描述物理单元的时序和功耗信息的重要库文件。lib库是最基本的时序库,通常文件很大,分为两个部分,
第一部分定义了物理单元库的基本属性,它包括:
1)单元库名称,文件版本,产生日期及单元的pvt环境等。
2)定义电压,电流,电容,时间等基本单位。
3 ) 定义电路传输时间和信号转换时间的电压百分比。
我们来看一个基本的lib时序库:
library(xxx18) { #库名称
delay_model : table_lookup; #采用查表延时模型计算延时
revision : 1.0; #库的版本
date : sat mar 2 15:37:50 2012; #库的创建时间
time_unit : 1ns; #定义时间基本单位
voltage_unit : 1v; #定义电压基本单位
current_unit : 1ua; #定义电流基本单位
pulling_resistance_unit : 1kohm; #定义电阻基本单位
leakage_power_unit : 1pw; #定义功耗基本单位
capacitive_load_unit (1.0,pf); #定义负载基本单位
nom_process : 1; #定义时序库工艺
nom_temperature : -40; #定义时序库温度
nom_voltage : 0.72; #定义时序库电压
operating_conditions(fast) { #定义互连线模型
process : 1;
temperature : -40;
voltage : 0.72;
tree_type : balanced_tree
}
/* threshold definitions */
slew_lower_threshold_pct_fall : 10.0; #定义信号转换模型
slew_upper_threshold_pct_fall : 90.0;
slew_lower_threshold_pct_rise : 10.0;
slew_upper_threshold_pct_rise : 90.0;
input_threshold_pct_fall : 50.0; #定义延迟模型
input_threshold_pct_rise : 50.0;
output_threshold_pct_fall : 50.0;
output_threshold_pct_rise : 50.0;
第二部分是每个单元的具体信息,包括单元的延迟时间,泄漏功耗,内部功耗等。它们以lookup table的形式来表示,这里一个非常重要的概念就是lookup table,它是一种三维数据查找表,整个lib文件都是通过该种查找方式来得到所需要的信息。例如延迟时间作为输出信号负载(output load)和输入信号转换时间(input transition)的函数列表。
我们来看一个look up table的查找方式:
lu_table_template(delay_template_2x2){
variable_1:total_output_net_capacitance;
variable_2:input_net_transition;
index 1(1000.0,1001.0);
index _2( 1000.0, 1001.0 ) ;
}
rise_transition (delay_template_2x2) {
index_l( 0.01,0.4532 ) ;
index_2( 0.01,1.2 );
values (0 .131455 , 0.131036 , \
4.19211,4.13413) ;
}
上诉语句定义了一个名字叫为delay_template_2x2的lookup table,可以理解为一个模板,有两个变量variable_1和variable_2组成。variable_1代表total_output_net_capacitance,variable_2代表input_net_transition。每个变量是两个断点组成。lookup table的名字是任意的,而变量可以是一个,两个或三个,每个断点的数量一般没有限制。
lookup table的第二部分则描述了具体哪个功能调用了上述模板,rise_transition描述的是单元输出信号的上升时间。它调用的就是由lu_table_template 定义的名为delay_template_2x2的模板。rise_transiton 中 index_1和 index_2是与上升时间相关的两个变量,如果想知道它们分别代表哪个一个变量就需要到delay_template_2x2的模板中查找,这里我们知道index_1代表输出pin的连线负载电容,index_2代表输入信号transition。
values与index可以表达为value=f(index_1,index_2)。当输出端线负载为0. 01,输入斜率为0. 01时,输出上升时间为0.131455。当输出线负载为0.01,输人斜率为1 .2时,输出上升时间为0.13036。同理,当输出端线负载为0.4532,输入斜率分别为0.01和1.2 时,对应另外两个上升时间。如下图所示:
接着在cell描述部分,我们会看到以下内容:
cell (bufx1) {
cell_footprint : buf; #定义引脚名称,进行优化时具有相同引脚名称的单元才可以交换
area : 13.305600; #定义单元面积大小
pin(a) {
direction : input; #定义端口a为输入端口
capacitance : 0.002357; #定义端口a的电容
}
pin(y) {
direction : output; #定义端口y为输出端口
capacitance : 0.0; #定义端口y的电容
function : a; #定义端口y是同a的操作
internal_power() { #定义单元内部功耗
related_pin : a; #定义相关输入信号
rise_power(energy_template_5x5) { #定义端口y上升所消耗的功耗
index_1 (0.025, 0.08, 0.3, 0.7, 1.2);
index_2 (0.00035, 0.021, 0.0385, 0.084, 0.147);
values ( \
0.013041, 0.010646, 0.010132, 0.008511, 0.006121, \
0.015728, 0.012869, 0.012227, 0.010567, 0.008178, \
0.023086, 0.020760, 0.019879, 0.017596, 0.014946, \
文件太长,只截取部分,rise_power的index_1和index_2的内容可以在文件前面的lookup table模板中查找得到,该cell的剩余其他时序和功耗参数也是类似描述,不一一解释了。

三相调制逆变电路的基本工作
如何在Ubuntu 22.04安装Java
AMS推出全球超小多区dToF模块 科沃斯摘亚洲最具影响力品牌
为什么天气一冷iPhone就关机
诺基亚即将发布的诺基亚8、S8两款新机将会颠覆你以往对于它的认知
时序分析基本概念介绍——时序库Lib,除了这些你还想知道什么?
研华嵌入式无风扇工业电脑 助力设备自动化升级
探讨在移动边缘计算成功部署前所需要面临的挑战
Facebook全面转战增强现实,去年专利数量大增
虹膜识别领域热点事件汇总
基于ClearEdgeTM技术的低功耗版HDMI发射机
工业平板电脑的维护需要注意什么
特斯拉和宝马等获批欧盟 35 亿美元电池项目援助
Yapf:一个格式化 Python 代码的好帮手
人工气候室的作用及功能
联想搭载高通骁龙855芯片 推出全球首款5G手机
彭博社:廉价智能手机在中国已死,高端市场竞争加剧
简单介绍定向耦合器的基础知识
深耕数字办公,华为云桌面怎样带来高效办公体验?
电磁线制造商长城科技发布2022第一季度报告