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"); 
            }
         }
    }

    }
}
