| library (sram_1rw1r_32_256_8_sky130_FF_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.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535"); |
| } |
| cell_fall(CELL_TABLE) { |
| values("0.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535"); |
| } |
| rise_transition(CELL_TABLE) { |
| values("0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015"); |
| } |
| fall_transition(CELL_TABLE) { |
| values("0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015"); |
| } |
| } |
| } |
| } |
| |
| 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("2.114785e+01"); |
| } |
| fall_power(scalar){ |
| values("2.114785e+01"); |
| } |
| } |
| internal_power(){ |
| when : "csb0 & !web0"; |
| rise_power(scalar){ |
| values("2.114785e+01"); |
| } |
| fall_power(scalar){ |
| values("2.114785e+01"); |
| } |
| } |
| internal_power(){ |
| when : "!csb0 & web0"; |
| rise_power(scalar){ |
| values("2.114785e+01"); |
| } |
| fall_power(scalar){ |
| values("2.114785e+01"); |
| } |
| } |
| internal_power(){ |
| when : "csb0 & web0"; |
| rise_power(scalar){ |
| values("2.114785e+01"); |
| } |
| fall_power(scalar){ |
| values("2.114785e+01"); |
| } |
| } |
| timing(){ |
| timing_type :"min_pulse_width"; |
| related_pin : clk0; |
| rise_constraint(scalar) { |
| values("0.0535"); |
| } |
| fall_constraint(scalar) { |
| values("0.0535"); |
| } |
| } |
| timing(){ |
| timing_type :"minimum_period"; |
| related_pin : clk0; |
| rise_constraint(scalar) { |
| values("0.107"); |
| } |
| fall_constraint(scalar) { |
| values("0.107"); |
| } |
| } |
| } |
| |
| 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.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535"); |
| } |
| cell_fall(CELL_TABLE) { |
| values("0.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535",\ |
| "0.404, 0.43, 0.535"); |
| } |
| rise_transition(CELL_TABLE) { |
| values("0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015"); |
| } |
| fall_transition(CELL_TABLE) { |
| values("0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015",\ |
| "0.002, 0.004, 0.015"); |
| } |
| } |
| } |
| } |
| |
| 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("2.114785e+01"); |
| } |
| fall_power(scalar){ |
| values("2.114785e+01"); |
| } |
| } |
| internal_power(){ |
| when : "csb1"; |
| rise_power(scalar){ |
| values("2.114785e+01"); |
| } |
| fall_power(scalar){ |
| values("2.114785e+01"); |
| } |
| } |
| timing(){ |
| timing_type :"min_pulse_width"; |
| related_pin : clk1; |
| rise_constraint(scalar) { |
| values("0.0535"); |
| } |
| fall_constraint(scalar) { |
| values("0.0535"); |
| } |
| } |
| timing(){ |
| timing_type :"minimum_period"; |
| related_pin : clk1; |
| rise_constraint(scalar) { |
| values("0.107"); |
| } |
| fall_constraint(scalar) { |
| values("0.107"); |
| } |
| } |
| } |
| |
| } |
| } |