Synopsys Liberty
File
-Richa Gupta
Agenda
Liberty File Structure
Deriving the Functional Information
Deriving the Timing Information
Deriving the Power Information
Structural Info
Each cells connectivity to
the outside world including
cell bus pin description
Functional info
Describe logical functional
of every output pin
Timing Info
Parameters for pin-to-pin
timing relationship and
delay calculation for each
cell
Environmental info
Describes manufacturing
process, operating
temperature, supply
voltage
Deriving Functionality
Combinational Functionality of an
output/inout pin
function : "Boolean expression" ;
three_state : "Boolean expression" ;
x_function : "Boolean expression" ;
Pin Attributes
library (lib_name) {
...
}
cell (cell_name) {
...
bus (bus_name) {
... bus group description ...
}
bundle (bundle_name) {
... bundle group description ...
}
pin ( name | name_list ) {
... pin group description ... capacitance :
valuefloat ;
}
}
Defining IO Delay
Pin() attributes
To define the condition that causes the pin to go
to high-impedence : Three_state
Deriving Propagation
delay
timing () {
cell() {
timing_sense : negative_unate;
pin(A) {..}
timing_type : three_state_disable;
pin(En) {.}
related_pin : "En";
pin(Y) {
cell_rise(d_5x1) { values( " ... " );
direction : output;
rise_transition(d_5x1) { values( " ... " );}
function : "A'";
cell_fall(d_5x1) { values( " ... " );}
three_state : "En'";
fall_transition(d_5x1) { values( " ... " );} } } }
timing () {
timing_sense : negative_unate;
related_pin : "A";
If a 1 on the control pin of a causes a Z value
cell_rise(lu5x5) { values( " ... " );}
on the output pin, then:
rise_transition(lu5x5) { values( " ... " );}
timing_sense is positive_unate for the
cell_fall(lu5x5) { values( " ... " );}
three_state_disable timing type and
fall_transition(lu5x5) { values( " ... " );} }
negative_unate for the
three_state_enable timing type.
timing() {
timing_sense : positive_unate;
If a 0 on the control pin causes a Z value on the
output pin, then:
timing_type : three_state_enable;
timing_sense is negative_unate for
related_pin : "En";
cell_rise(delay_5x5) { values( " ... " );} the three_state_disable timing type and
rise_transition(delay_5x5) { values( " ..." );}positive_unate for the three_state_enable
timing type.
cell_fall(delay_5x5) { values( " ... " );}
fall_transition(delay_5x5) { values( " ... " );} }
Simple arcs
Edge Sensitive arcs
State dependant
arcs(conditional)
Power
leakage_power ( ) {
when : "Boolean expression";
value: float;
}
Internal_power(){
Related_pin :
When :
Fall_power(){}
Rise_power(){}
Reading a memory
cell () {
memory() {
type : ram/rom;
address_width : 10;
word_width : 8;
column_address : "0:4 5";
row_address : "6:9";
}
Bus(){
memory_write() {
address : ram_addr;
Clocked_on : WR;
}
bus(data_out){
memory_read() {
address : ram_addr;
}
pin (WR) {
}
}