今天主要介紹的時(shí)序概念是時(shí)序庫 lib ,全稱 liberty library format (以? lib結(jié)尾),
用于描述物理單元的時(shí)序和功耗信息的重要庫文件。lib庫是最基本的時(shí)序庫,通常文件很大,分為兩個(gè)部分,
第一部分定義了物理單元庫的基本屬性,它包括:
1)單元庫名稱,文件版本,產(chǎn)生日期及單元的PVT環(huán)境等。
3 ) 定義電路傳輸時(shí)間和信號(hào)轉(zhuǎn)換時(shí)間的電壓百分比。
我們來看一個(gè)基本的lib時(shí)序庫:
library(xxx18) { #庫名稱
delay_model : table_lookup; #采用查表延時(shí)模型計(jì)算延時(shí)
revision : 1.0; #庫的版本
date : "Sat Mar 2 15:37:50 2012"; #庫的創(chuàng)建時(shí)間
time_unit : "1ns"; #定義時(shí)間基本單位
voltage_unit : "1V"; #定義電壓基本單位
current_unit : "1uA"; #定義電流基本單位
pulling_resistance_unit : "1kohm"; #定義電阻基本單位
leakage_power_unit : "1pW"; #定義功耗基本單位
capacitive_load_unit (1.0,pf); #定義負(fù)載基本單位
nom_process : 1; #定義時(shí)序庫工藝
nom_temperature : -40; #定義時(shí)序庫溫度
nom_voltage : 0.72; #定義時(shí)序庫電壓
operating_conditions(fast) { #定義互連線模型
process : 1;
temperature : -40;
voltage : 0.72;
tree_type : balanced_tree
}
/* threshold definitions */
slew_lower_threshold_pct_fall : 10.0; #定義信號(hào)轉(zhuǎn)換模型
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;
第二部分是每個(gè)單元的具體信息,包括單元的延遲時(shí)間,泄漏功耗,內(nèi)部功耗等。它們以lookup table的形式來表示,這里一個(gè)非常重要的概念就是lookup table,它是一種三維數(shù)據(jù)查找表,整個(gè)lib文件都是通過該種查找方式來得到所需要的信息。例如延遲時(shí)間作為輸出信號(hào)負(fù)載(output load)和輸入信號(hào)轉(zhuǎn)換時(shí)間(input transition)的函數(shù)列表。
我們來看一個(gè)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") ;
}
上訴語句定義了一個(gè)名字叫為delay_template_2x2的lookup table,可以理解為一個(gè)模板,有兩個(gè)變量variable_1和variable_2組成。variable_1代表total_output_net_capacitance,variable_2代表input_net_transition。每個(gè)變量是兩個(gè)斷點(diǎn)組成。lookup table的名字是任意的,而變量可以是一個(gè),兩個(gè)或三個(gè),每個(gè)斷點(diǎn)的數(shù)量一般沒有限制。
lookup table的第二部分則描述了具體哪個(gè)功能調(diào)用了上述模板,rise_transition描述的是單元輸出信號(hào)的上升時(shí)間。它調(diào)用的就是由lu_table_template 定義的名為delay_template_2x2的模板。rise_transiton 中 index_1和 index_2是與上升時(shí)間相關(guān)的兩個(gè)變量,如果想知道它們分別代表哪個(gè)一個(gè)變量就需要到delay_template_2x2的模板中查找,這里我們知道index_1代表輸出pin的連線負(fù)載電容,index_2代表輸入信號(hào)transition。
values與index可以表達(dá)為value=f(index_1,index_2)。當(dāng)輸出端線負(fù)載為0. 01,輸入斜率為0. 01時(shí),輸出上升時(shí)間為0.131455。當(dāng)輸出線負(fù)載為0.01,輸人斜率為1 .2時(shí),輸出上升時(shí)間為0.13036。同理,當(dāng)輸出端線負(fù)載為0.4532,輸入斜率分別為0.01和1.2 時(shí),對(duì)應(yīng)另外兩個(gè)上升時(shí)間。如下圖所示:
接著在cell描述部分,我們會(huì)看到以下內(nèi)容:
cell (BUFX1) {
cell_footprint : buf; #定義引腳名稱,進(jìn)行優(yōu)化時(shí)具有相同引腳名稱的單元才可以交換
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() { #定義單元內(nèi)部功耗
related_pin : "A"; #定義相關(guān)輸入信號(hào)
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的內(nèi)容可以在文件前面的lookup table模板中查找得到,該cell的剩余其他時(shí)序和功耗參數(shù)也是類似描述,不一一解釋了。
-
信號(hào)轉(zhuǎn)換器
+關(guān)注
關(guān)注
0文章
78瀏覽量
13890 -
時(shí)序分析
+關(guān)注
關(guān)注
2文章
127瀏覽量
22551 -
負(fù)載電容
+關(guān)注
關(guān)注
0文章
137瀏覽量
10428 -
時(shí)序分析器
+關(guān)注
關(guān)注
0文章
24瀏覽量
5270
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論