blob: f1e226c022de7e0c8972337f12e6fa9cb1e1861f [file] [log] [blame]
library (sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C_lib){
delay_model : "table_lookup";
time_unit : "1ns" ;
voltage_unit : "1V" ;
current_unit : "1mA" ;
resistance_unit : "1kohm" ;
capacitive_load_unit(1, pF) ;
leakage_power_unit : "1mW" ;
pulling_resistance_unit :"1kohm" ;
operating_conditions(OC){
process : 1.0 ;
voltage : 1.8 ;
temperature : 25;
}
input_threshold_pct_fall : 50.0 ;
output_threshold_pct_fall : 50.0 ;
input_threshold_pct_rise : 50.0 ;
output_threshold_pct_rise : 50.0 ;
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 ;
nom_voltage : 1.8;
nom_temperature : 25;
nom_process : 1.0;
default_cell_leakage_power : 0.0 ;
default_leakage_power_density : 0.0 ;
default_input_pin_cap : 1.0 ;
default_inout_pin_cap : 1.0 ;
default_output_pin_cap : 0.0 ;
default_max_transition : 0.5 ;
default_fanout_load : 1.0 ;
default_max_fanout : 4.0 ;
default_connection_class : universal ;
voltage_map ( VCCD1, 1.8 );
voltage_map ( VSSD1, 0 );
lu_table_template(CELL_TABLE){
variable_1 : input_net_transition;
variable_2 : total_output_net_capacitance;
index_1("0.00125, 0.005, 0.04");
index_2("0.0017224999999999999, 0.006889999999999999, 0.027559999999999998");
}
lu_table_template(CONSTRAINT_TABLE){
variable_1 : related_pin_transition;
variable_2 : constrained_pin_transition;
index_1("0.00125, 0.005, 0.04");
index_2("0.00125, 0.005, 0.04");
}
default_operating_conditions : OC;
type (data){
base_type : array;
data_type : bit;
bit_width : 32;
bit_from : 31;
bit_to : 0;
}
type (addr){
base_type : array;
data_type : bit;
bit_width : 9;
bit_from : 8;
bit_to : 0;
}
type (wmask){
base_type : array;
data_type : bit;
bit_width : 4;
bit_from : 3;
bit_to : 0;
}
cell (sky130_sram_2kbyte_1rw1r_32x512_8){
memory(){
type : ram;
address_width : 9;
word_width : 32;
}
interface_timing : true;
dont_use : true;
map_only : true;
dont_touch : true;
area : 284538.474;
pg_pin(vccd1) {
voltage_name : VCCD1;
pg_type : primary_power;
}
pg_pin(vssd1) {
voltage_name : VSSD1;
pg_type : primary_ground;
}
leakage_power () {
value : 0.017726;
}
cell_leakage_power : 0.017726;
bus(din0){
bus_type : data;
direction : input;
capacitance : 0.006889999999999999;
memory_write(){
address : addr0;
clocked_on : clk0;
}
pin(din0[31:0]){
timing(){
timing_type : setup_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
fall_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
}
timing(){
timing_type : hold_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
fall_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
}
}
}
bus(dout0){
bus_type : data;
direction : output;
max_capacitance : 0.027559999999999998;
min_capacitance : 0.0017224999999999999;
memory_read(){
address : addr0;
}
pin(dout0[31:0]){
timing(){
timing_sense : non_unate;
related_pin : "clk0";
timing_type : falling_edge;
cell_rise(CELL_TABLE) {
values("0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529");
}
cell_fall(CELL_TABLE) {
values("0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529");
}
rise_transition(CELL_TABLE) {
values("0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016");
}
fall_transition(CELL_TABLE) {
values("0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016");
}
}
}
}
bus(addr0){
bus_type : addr;
direction : input;
capacitance : 0.006889999999999999;
max_transition : 0.04;
pin(addr0[8:0]){
timing(){
timing_type : setup_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
fall_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
}
timing(){
timing_type : hold_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
fall_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
}
}
}
bus(wmask0){
bus_type : wmask;
direction : input;
capacitance : 0.006889999999999999;
max_transition : 0.04;
pin(wmask0[3:0]){
timing(){
timing_type : setup_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
fall_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
}
timing(){
timing_type : hold_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
fall_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
}
}
}
pin(csb0){
direction : input;
capacitance : 0.006889999999999999;
timing(){
timing_type : setup_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
fall_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
}
timing(){
timing_type : hold_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
fall_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
}
}
pin(web0){
direction : input;
capacitance : 0.006889999999999999;
timing(){
timing_type : setup_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
fall_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
}
timing(){
timing_type : hold_rising;
related_pin : "clk0";
rise_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
fall_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
}
}
pin(clk0){
clock : true;
direction : input;
capacitance : 0.006889999999999999;
internal_power(){
when : "!csb0 & !web0";
rise_power(scalar){
values("1.380840e+01");
}
fall_power(scalar){
values("1.380840e+01");
}
}
internal_power(){
when : "csb0 & !web0";
rise_power(scalar){
values("1.380840e+01");
}
fall_power(scalar){
values("1.380840e+01");
}
}
internal_power(){
when : "!csb0 & web0";
rise_power(scalar){
values("1.380840e+01");
}
fall_power(scalar){
values("1.380840e+01");
}
}
internal_power(){
when : "csb0 & web0";
rise_power(scalar){
values("1.380840e+01");
}
fall_power(scalar){
values("1.380840e+01");
}
}
timing(){
timing_type :"min_pulse_width";
related_pin : clk0;
rise_constraint(scalar) {
values("0.978");
}
fall_constraint(scalar) {
values("0.978");
}
}
timing(){
timing_type :"minimum_period";
related_pin : clk0;
rise_constraint(scalar) {
values("1.956");
}
fall_constraint(scalar) {
values("1.956");
}
}
}
bus(dout1){
bus_type : data;
direction : output;
max_capacitance : 0.027559999999999998;
min_capacitance : 0.0017224999999999999;
memory_read(){
address : addr1;
}
pin(dout1[31:0]){
timing(){
timing_sense : non_unate;
related_pin : "clk1";
timing_type : falling_edge;
cell_rise(CELL_TABLE) {
values("0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529");
}
cell_fall(CELL_TABLE) {
values("0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529",\
"0.383, 0.412, 0.529");
}
rise_transition(CELL_TABLE) {
values("0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016");
}
fall_transition(CELL_TABLE) {
values("0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016",\
"0.002, 0.005, 0.016");
}
}
}
}
bus(addr1){
bus_type : addr;
direction : input;
capacitance : 0.006889999999999999;
max_transition : 0.04;
pin(addr1[8:0]){
timing(){
timing_type : setup_rising;
related_pin : "clk1";
rise_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
fall_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
}
timing(){
timing_type : hold_rising;
related_pin : "clk1";
rise_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
fall_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
}
}
}
pin(csb1){
direction : input;
capacitance : 0.006889999999999999;
timing(){
timing_type : setup_rising;
related_pin : "clk1";
rise_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
fall_constraint(CONSTRAINT_TABLE) {
values("0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103",\
"0.103, 0.103, 0.103");
}
}
timing(){
timing_type : hold_rising;
related_pin : "clk1";
rise_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
fall_constraint(CONSTRAINT_TABLE) {
values("-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056",\
"-0.056, -0.056, -0.056");
}
}
}
pin(clk1){
clock : true;
direction : input;
capacitance : 0.006889999999999999;
internal_power(){
when : "!csb1";
rise_power(scalar){
values("1.380840e+01");
}
fall_power(scalar){
values("1.380840e+01");
}
}
internal_power(){
when : "csb1";
rise_power(scalar){
values("1.380840e+01");
}
fall_power(scalar){
values("1.380840e+01");
}
}
timing(){
timing_type :"min_pulse_width";
related_pin : clk1;
rise_constraint(scalar) {
values("0.978");
}
fall_constraint(scalar) {
values("0.978");
}
}
timing(){
timing_type :"minimum_period";
related_pin : clk1;
rise_constraint(scalar) {
values("1.956");
}
fall_constraint(scalar) {
values("1.956");
}
}
}
}
}