library (sram_1rw1r_32_256_8_sky130_TT_1p8V_100C_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 : 100;
    }

    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("5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834");
            }
            cell_fall(CELL_TABLE) {
            values("5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834");
            }
            rise_transition(CELL_TABLE) {
            values("0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214");
            }
            fall_transition(CELL_TABLE) {
            values("0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214");
            }
        }
        }
    }

    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.444474e+00");
            }
            fall_power(scalar){
                values("1.444474e+00");
            }
        }
        internal_power(){
            when : "csb0 & !web0"; 
            rise_power(scalar){
                values("1.444474e+00");
            }
            fall_power(scalar){
                values("1.444474e+00");
            }
        }
        internal_power(){
            when : "!csb0 & web0"; 
            rise_power(scalar){
                values("1.444474e+00");
            }
            fall_power(scalar){
                values("1.444474e+00");
            }
        }
        internal_power(){
            when : "csb0 & web0"; 
            rise_power(scalar){
                values("1.444474e+00");
            }
            fall_power(scalar){
                values("1.444474e+00");
            }
        }
        timing(){ 
            timing_type :"min_pulse_width"; 
            related_pin  : clk0; 
            rise_constraint(scalar) {
                values("0.7835"); 
            }
            fall_constraint(scalar) {
                values("0.7835"); 
            }
         }
        timing(){ 
            timing_type :"minimum_period"; 
            related_pin  : clk0; 
            rise_constraint(scalar) {
                values("1.567"); 
            }
            fall_constraint(scalar) {
                values("1.567"); 
            }
         }
    }

    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("5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834");
            }
            cell_fall(CELL_TABLE) {
            values("5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834",\
                   "5.919, 6.302, 7.834");
            }
            rise_transition(CELL_TABLE) {
            values("0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214");
            }
            fall_transition(CELL_TABLE) {
            values("0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214",\
                   "0.022, 0.06, 0.214");
            }
        }
        }
    }

    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.444474e+00");
            }
            fall_power(scalar){
                values("1.444474e+00");
            }
        }
        internal_power(){
            when : "csb1"; 
            rise_power(scalar){
                values("1.444474e+00");
            }
            fall_power(scalar){
                values("1.444474e+00");
            }
        }
        timing(){ 
            timing_type :"min_pulse_width"; 
            related_pin  : clk1; 
            rise_constraint(scalar) {
                values("0.7835"); 
            }
            fall_constraint(scalar) {
                values("0.7835"); 
            }
         }
        timing(){ 
            timing_type :"minimum_period"; 
            related_pin  : clk1; 
            rise_constraint(scalar) {
                values("1.567"); 
            }
            fall_constraint(scalar) {
                values("1.567"); 
            }
         }
    }

    }
}
