从功能上来看,就像一个Buffer。
下面描述的是level_shifter的Liberty格式:
cell(level_shifter) {
is_level_shifter : true ; #定义为true,则该Cell被认为是lever
shifter cell
level_shifter_type : HL | LH | HL_LH ; #定义电平转换方向,HL
表示高电平转低电平,LH直低电平转高电平,HL_LH表示都可
以用
input_voltage_range (<float>, <float>); #输入电压范围,指该Cell
输入连接的电路,电压工作范围,EDA工具会根据Operating
Condition的选择,检查该Cell是否满足电路需要,可以在功能
pin中进行定义,如果在cell主体定义,则必须与
output_voltage_range同时存在
output_voltage_range (<float>, <float>);#输出电压范围,指该
Cell输出连接的电路,电压工作范围,EDA工具会根据
Operating Condition的选择,检查该Cell是否满足电路需要,可
以在功能pin中进行定义,如果在cell主体定义,则必须与
input_voltage_range同时存在
…
pg_pin(<pg_pin_name_P>) {
pg_type : primary_power;
std_cell_main_rail : true; #该primary_power连接在Cell设计中
的主rail
…
}
pg_pin(<pg_pin_name_G>) {
pg_type : primary_ground;
…
}
pin (data) {
direction : input;
input_signal_level : “<voltage_rail_name>”; #输入信号电压环名
input_voltage_range ( <float> , <float>);
level_shifter_data_pin : true ; #数据功能Pin
13 / 26
…
}/* End pin group */
pin (enable) {
direction : input;
input_voltage_range ( <float> , <float>);
level_shifter_enable_pin : true ; #使能Pin,如果level shifter还作
为isolation cell的时候,使能信号会在电源关闭时停止level
shifter功能,仅仅作为isolation cell存在
…
}/* End pin group */
pin (output) {
direction : output;
output_voltage_range ( <float> , <float>);
power_down_function : (!pg_pin_name_P + pg_pin_name_G);
…
}/* End pin group */
…
}/* End Cell group */
3.2.
4.2. Liberty PG Pin格式
Liberty PG Pin格式,就是在传统的Liberty格式文件中,加上与Power有关的信息。在工艺尺寸较大的时候,逻辑单元基本上只工作在一个电源系统中,但在使用多电压设计的小工艺尺寸库文件中,则需要告诉分析工具,该Cell的电源和地是接在哪里的,每个pin所处的电压域在哪里?(实际上IO设计中应该已经有类似的数据,但因为不涉及到多电压设计的方法,在传统的IO Liberty中也很少见到PG Pin的格式)
下面所示是PG Pin格式的描述
library(slow) { #library “slow”描述开始
…
voltage_map(vdd, 1.2); # 有一个1.2V的驱动电压,名为“vdd”
voltage_map(vss, 0.0); # 有一个0V的驱动电压,名为“vss”
…
operating_conditions(slow_12V) { #Operating Condition
“slow_12V”定义开始
…
voltage : 1.2; #使用1.2V作为该condition的电压条件
…
} #Operating Condition定义结束
…
default_operating_conditions : slow_12V; #default使
用”slow_12V”
cell(BUFFX1) { # BUFFX1 Cell描述开始
pg_pin (“VDD”) { # BUFFX1有一个Pin “VDD”,定义为pg_pin
voltage_name : “vdd”; # Pin “VDD”电压是接在
voltage_map ”vdd”上的,即1.2V
pg_type : “primary_power” # Pin “VDD”是”primary_power”类型
的
}
pg_pin (“VSS”) { # BUFFX1有一个Pin “VSS”,定义为pg_pin
voltage_name : “vss”; # Pin “VSS”电压是接在voltage_map ”vss”
上的,即0V
pg_type : “primary_ground” # Pin “VSS”是”primary_ground”类
型的
}
14 / 26
…
leakage_power() { #leakage_power定义开始
related_pg_pin : VDD; # VDD Pin供电时的leakage power
…
}#leakage_power定义结束
…
pin (A) { #有一个功能Pin ”A”
direction : input ; #”A”是一个输入
related_power_pin : VDD; #”A”是VDD供电电压域的
related_ground_pin : VSS; #”A”是VSS供地的电压域信号
…
}# “A”申明结束
…
pin (Y) { #有一个功能Pin “Y”
direction : output; #”Y”是一个输出
power_down_function : (!VDD + VSS) ; #当VDD关断,VSS开着
的时候,输出被关断
related_power_pin : VDD; #”Y”是VDD供电电压域的
related_ground_pin : VSS; #”Y”是VSS供地的电压域信号
internal_power() { #internal_power申明开始
related_pg_pin : VDD; #internal power由VDD供电引起
…
} /* end internal_power group */
…
}/* end pin group*/
…
}/* end cell group*/
…
}/* end library group*/
在PG Pin格式中,有一个pg_type的属性,下表描述该属性的含义:
pg_type简单描述具体描述
primary_power 主电源一般功能信号使用的电源,可以关断
primary_ground 主地一般功能信号使用的地,可以关断
backup_power 备用电源Always-on的电源,主要用于always-on logic cell的常开电源backup_ground 备用地Always-on的地,主要用于always-on logic cell的常开地
internal_power 内部电源主要用于Power Switch cell的内部电源
internal_ground 内部地主要用于Power Switch cell的内部地
3.2.
4.3. 电压和频率的Scaling分析
有的时候,IP提供商可能无法提供足够的单元库,例如提供商可能提供了1.4V的单元库和1.0V的单元库,但我们希望提供一个1.2V的电压,则需要进行电压的Scaling。