library (sram_2_16_1_freepdk45_lib){ delay_model : "table_lookup"; time_unit : "1ns" ; voltage_unit : "1v" ; current_unit : "1mA" ; resistance_unit : "1kohm" ; capacitive_load_unit(1 ,fF) ; leakage_power_unit : "1mW" ; pulling_resistance_unit :"1kohm" ; operating_conditions(TT){ voltage : 1.0 ; temperature : 25.000 ; } 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 ; 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 ; 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.052275, 0.2091, 1.6728"); } 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 : TT; type (DATA){ base_type : array; data_type : bit; bit_width : 2; bit_from : 0; bit_to : 1; } type (ADDR){ base_type : array; data_type : bit; bit_width : 4; bit_from : 0; bit_to : 3; } cell (sram_2_16_1_freepdk45){ memory(){ type : ram; address_width : 4; word_width : 2; } interface_timing : true; dont_use : true; map_only : true; dont_touch : true; area : 0.023625; bus(DATA){ bus_type : DATA; direction : inout; max_capacitance : 1.6728; three_state : "!OEb & !clk"; memory_write(){ address : ADDR; clocked_on : clk; } memory_read(){ address : ADDR; } pin(DATA[1:0]){ internal_power(){ when : "OEb & !clk"; rise_power(scalar){ values("0.027781"); } fall_power(scalar){ values("0.026752"); } } timing(){ timing_type : setup_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027"); } fall_constraint(CONSTRAINT_TABLE) { values("0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015"); } } timing(){ timing_type : hold_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004"); } fall_constraint(CONSTRAINT_TABLE) { values("-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016"); } } internal_power(){ when : "!OEb & !clk"; rise_power(scalar){ values("0.031198"); } fall_power(scalar){ values("0.031252"); } } timing(){ timing_sense : non_unate; related_pin : "clk"; timing_type : falling_edge; cell_rise(CELL_TABLE) { values("0.046, 0.047, 0.054",\ "0.047, 0.047, 0.054",\ "0.052, 0.052, 0.059"); } cell_fall(CELL_TABLE) { values("0.132, 0.133, 0.142",\ "0.133, 0.134, 0.142",\ "0.138, 0.139, 0.147"); } rise_transition(CELL_TABLE) { values("0.014, 0.015, 0.027",\ "0.014, 0.015, 0.027",\ "0.014, 0.015, 0.027"); } fall_transition(CELL_TABLE) { values("0.018, 0.02, 0.036",\ "0.019, 0.02, 0.036",\ "0.019, 0.02, 0.036"); } } } } bus(ADDR){ bus_type : ADDR; direction : input; capacitance : 0.2091; max_transition : 0.04; fanout_load : 1.000000; pin(ADDR[3:0]){ timing(){ timing_type : setup_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027"); } fall_constraint(CONSTRAINT_TABLE) { values("0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015"); } } timing(){ timing_type : hold_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004"); } fall_constraint(CONSTRAINT_TABLE) { values("-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016"); } } } } pin(CSb){ direction : input; capacitance : 0.2091; timing(){ timing_type : setup_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027"); } fall_constraint(CONSTRAINT_TABLE) { values("0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015"); } } timing(){ timing_type : hold_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004"); } fall_constraint(CONSTRAINT_TABLE) { values("-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016"); } } } pin(OEb){ direction : input; capacitance : 0.2091; timing(){ timing_type : setup_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027"); } fall_constraint(CONSTRAINT_TABLE) { values("0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015"); } } timing(){ timing_type : hold_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004"); } fall_constraint(CONSTRAINT_TABLE) { values("-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016"); } } } pin(WEb){ direction : input; capacitance : 0.2091; timing(){ timing_type : setup_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027",\ "0.009, 0.015, 0.027"); } fall_constraint(CONSTRAINT_TABLE) { values("0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015",\ "0.009, 0.009, 0.015"); } } timing(){ timing_type : hold_rising; related_pin : "clk"; rise_constraint(CONSTRAINT_TABLE) { values("0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004",\ "0.002, 0.002, -0.004"); } fall_constraint(CONSTRAINT_TABLE) { values("-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016",\ "-0.004, -0.004, -0.016"); } } } pin(clk){ clock : true; direction : input; capacitance : 0.2091; timing(){ timing_type :"min_pulse_width"; related_pin : clk; rise_constraint(scalar) { values("0.1955"); } fall_constraint(scalar) { values("0.1955"); } } timing(){ timing_type :"minimum_period"; related_pin : clk; rise_constraint(scalar) { values("0.391"); } fall_constraint(scalar) { values("0.391"); } } } } }