library (sram_1rw1r_32_256_8_sky130_SS_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 ( VDD, 1.8 );
    voltage_map ( GND, 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.0017225, 0.00689, 0.02756");
    }

    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 : 0;
    bit_to : 31;
    }

    type (addr){
    base_type : array;
    data_type : bit;
    bit_width : 8;
    bit_from : 0;
    bit_to : 7;
    }

    type (wmask){
    base_type : array;
    data_type : bit;
    bit_width : 4;
    bit_from : 0;
    bit_to : 3;
    }

cell (sram_1rw1r_32_256_8_sky130){
    memory(){ 
    type : ram;
    address_width : 8;
    word_width : 32;
    }
    interface_timing : true;
    dont_use  : true;
    map_only   : true;
    dont_touch : true;
    area : 167998.5528;

    pg_pin(vdd) {
         voltage_name : VDD;
         pg_type : primary_power;
    }

    pg_pin(gnd) {
         voltage_name : GND;
         pg_type : primary_ground;
    }

    leakage_power () {
      value : 0.009512;
    }
    cell_leakage_power : 0.009512;
    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.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
        }
    }
    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.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654");
            }
            cell_fall(CELL_TABLE) {
            values("0.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654");
            }
            rise_transition(CELL_TABLE) {
            values("0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018");
            }
            fall_transition(CELL_TABLE) {
            values("0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018");
            }
        }
        }
    }

    bus(addr0){
        bus_type  : addr; 
        direction  : input; 
        capacitance : 0.006889999999999999;  
        max_transition       : 0.04;
        pin(addr0[7:0]){
        timing(){ 
            timing_type : setup_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
        }
    }

    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.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
        }
    }

    pin(csb0){
        direction  : input; 
        capacitance : 0.006889999999999999;  
        timing(){ 
            timing_type : setup_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
    }

    pin(web0){
        direction  : input; 
        capacitance : 0.006889999999999999;  
        timing(){ 
            timing_type : setup_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk0"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
    }

    pin(clk0){
        clock             : true;
        direction  : input; 
        capacitance : 0.006889999999999999;  
        internal_power(){
            when : "!csb0 & !web0"; 
            rise_power(scalar){
                values("1.730279e+01");
            }
            fall_power(scalar){
                values("1.730279e+01");
            }
        }
        internal_power(){
            when : "csb0 & !web0"; 
            rise_power(scalar){
                values("1.730279e+01");
            }
            fall_power(scalar){
                values("1.730279e+01");
            }
        }
        internal_power(){
            when : "!csb0 & web0"; 
            rise_power(scalar){
                values("1.730279e+01");
            }
            fall_power(scalar){
                values("1.730279e+01");
            }
        }
        internal_power(){
            when : "csb0 & web0"; 
            rise_power(scalar){
                values("1.730279e+01");
            }
            fall_power(scalar){
                values("1.730279e+01");
            }
        }
        timing(){ 
            timing_type :"min_pulse_width"; 
            related_pin  : clk0; 
            rise_constraint(scalar) {
                values("0.0655"); 
            }
            fall_constraint(scalar) {
                values("0.0655"); 
            }
         }
        timing(){ 
            timing_type :"minimum_period"; 
            related_pin  : clk0; 
            rise_constraint(scalar) {
                values("0.131"); 
            }
            fall_constraint(scalar) {
                values("0.131"); 
            }
         }
    }

    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.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654");
            }
            cell_fall(CELL_TABLE) {
            values("0.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654",\
                   "0.494, 0.526, 0.654");
            }
            rise_transition(CELL_TABLE) {
            values("0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018");
            }
            fall_transition(CELL_TABLE) {
            values("0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018",\
                   "0.002, 0.005, 0.018");
            }
        }
        }
    }

    bus(addr1){
        bus_type  : addr; 
        direction  : input; 
        capacitance : 0.006889999999999999;  
        max_transition       : 0.04;
        pin(addr1[7:0]){
        timing(){ 
            timing_type : setup_rising; 
            related_pin  : "clk1"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk1"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
        }
    }

    bus(wmask1){
        bus_type  : wmask; 
        direction  : input; 
        capacitance : 0.006889999999999999;  
        max_transition       : 0.04;
        pin(wmask1[3:0]){
        timing(){ 
            timing_type : setup_rising; 
            related_pin  : "clk1"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk1"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
        }
    }

    pin(csb1){
        direction  : input; 
        capacitance : 0.006889999999999999;  
        timing(){ 
            timing_type : setup_rising; 
            related_pin  : "clk1"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
            fall_constraint(CONSTRAINT_TABLE) {
            values("0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165",\
                   "0.165, 0.165, 0.165");
            }
        }
        timing(){ 
            timing_type : hold_rising; 
            related_pin  : "clk1"; 
            rise_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
              }
            fall_constraint(CONSTRAINT_TABLE) {
            values("-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052",\
                   "-0.052, -0.052, -0.052");
            }
        }
    }

    pin(clk1){
        clock             : true;
        direction  : input; 
        capacitance : 0.006889999999999999;  
        internal_power(){
            when : "!csb1"; 
            rise_power(scalar){
                values("1.730279e+01");
            }
            fall_power(scalar){
                values("1.730279e+01");
            }
        }
        internal_power(){
            when : "csb1"; 
            rise_power(scalar){
                values("1.730279e+01");
            }
            fall_power(scalar){
                values("1.730279e+01");
            }
        }
        timing(){ 
            timing_type :"min_pulse_width"; 
            related_pin  : clk1; 
            rise_constraint(scalar) {
                values("0.0655"); 
            }
            fall_constraint(scalar) {
                values("0.0655"); 
            }
         }
        timing(){ 
            timing_type :"minimum_period"; 
            related_pin  : clk1; 
            rise_constraint(scalar) {
                values("0.131"); 
            }
            fall_constraint(scalar) {
                values("0.131"); 
            }
         }
    }

    }
}
