/* delay model : typ check model : typ power model : typ capacitance model : typ other model : typ */ library(foo) { delay_model : table_lookup; in_place_swap_mode : match_footprint; /* unit attributes */ time_unit : "1ns"; voltage_unit : "1V"; current_unit : "1mA"; pulling_resistance_unit : "1kohm"; leakage_power_unit : "1nW"; capacitive_load_unit (1,pf); slew_upper_threshold_pct_rise : 80; slew_lower_threshold_pct_rise : 20; slew_upper_threshold_pct_fall : 80; slew_lower_threshold_pct_fall : 20; input_threshold_pct_rise : 30; input_threshold_pct_fall : 70; output_threshold_pct_rise : 70; output_threshold_pct_fall : 30; nom_process : 1; nom_voltage : 5; nom_temperature : 25; operating_conditions ( typical ) { process : 1; voltage : 5; temperature : 25; } default_operating_conditions : typical; /*******************begin added section***************************/ /* here I'll describe a generic model for wire loads. It may * * not be perfect, but it's something to start from... This is * * derived from a posting on the ESNUG mailing list about how to * * generate wire load models for generic processes. * * * * Because the cell area is in units of square microns, all the * * distance units will be assumed to be in microns or square * * microns. */ /* fudge = correction factor, routing, placement, etc. */ fudge = 1.0; /* cap = fudge * cap per micron * * I assume cap is in capacitance units per micron * * (remember that our capacitance unit is 1.0pf) */ cap = fudge * 0.000030; /* .03ff/micron for avg metal */ res = fudge * 0.00008 /* 80 m-ohm/square, in kohm units */ /* length_top = the length of one side of a square die * * (in our case, a 4 TCU die of 2500u on a side of core area) * * length_10k = the length of one side of a block containing * * 10k gates (I'll assume this is a core of a single TCU which * * is 900u on a side) */ length_10k = 900; length_top = 2500.0; /* sqrt(5000/10000) = .71 * * sqrt(2000/10000) = .45 * * etc */ length_5k = length_10k * 0.71; length_2k = length_10k * 0.45; length_1k = length_10k * 0.32; length_500 = length_10k * 0.22; /* It turns out that the conversion program that converts * * .lib files into .tlf files doesn't like using a * * computation with "length" in the fanout_length() * * function, so I'll multiply everything out... */ wire_load("top") { resistance : res ; capacitance : cap ; area : 1 ; /* i.e. 1 sq micron */ slope : length_top * .5 ; fanout_length(1,2500); /* length */ fanout_length(2,3750); /* length * 1.5 */ fanout_length(3,5000); /* length * 2 */ fanout_length(4,5625); /* length * 2.5 */ fanout_length(5,6250); /* length * 2.5 */ fanout_length(6,6875); /* length * 2.75 */ fanout_length(7,7500); /* length * 3 */ } wire_load("10k") { resistance : res ; capacitance : cap ; area : 1 ; slope : length_10k * .5 ; fanout_length(1,900); /* length */ fanout_length(2,1350); /* length * 1.5 */ fanout_length(3,1800); /* length * 2 */ fanout_length(4,2025); /* length * 2.5 */ fanout_length(5,2250); /* length * 2.5 */ fanout_length(6,2475); /* length * 2.75 */ fanout_length(7,2700); /* length * 3 */ } wire_load("5k") { resistance : res ; capacitance : cap ; area : 1 ; slope : length_5k * .5 ; fanout_length(1,639); /* length */ fanout_length(2,959); /* length * 1.5 */ fanout_length(3,1278); /* length * 2 */ fanout_length(4,1439); /* length * 2.5 */ fanout_length(5,1598); /* length * 2.5 */ fanout_length(6,1757); /* length * 2.75 */ fanout_length(7,1917); /* length * 3 */ } /* define how the wire loads are selected based on total circuit area */ wire_load_selection (foo) { wire_load_from_area ( 0, 3000000, "5k"); wire_load_from_area (3000000, 7000000, "10k"); } default_wire_load_mode : enclosed ; default_wire_load : "top" ; default_wire_load_selection : "foo" ; /* end of wire_load calculation */ /* Default attributes */ /* Fanout (in terms of capacitive load units) */ default_fanout_load : 0.3 ; default_max_fanout : 10.0 ; /* Pin Capacitance */ default_inout_pin_cap : 0.00675 ; default_input_pin_cap : 0.00675 ; default_output_pin_cap : 0.0 ; /* leakage power */ default_cell_leakage_power : 0.0 ; default_leakage_power_density : 0.0 ; /*******************end added section*******************/ lu_table_template(delay_template_5x5) { variable_1 : input_net_transition; variable_2 : total_output_net_capacitance; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); } power_lut_template(energy_template_5x5) { variable_1 : input_transition_time; variable_2 : total_output_net_capacitance; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); } lu_table_template(hold_template_5x3) { variable_1 : constrained_pin_transition; variable_2 : related_pin_transition; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); index_2 ("1000.0, 1001.0, 1002.0"); } power_lut_template(passive_energy_template_5x1) { variable_1 : input_transition_time; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); } lu_table_template(recovery_template_5x3) { variable_1 : constrained_pin_transition; variable_2 : related_pin_transition; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); index_2 ("1000.0, 1001.0, 1002.0"); } lu_table_template(removal_template_5x3) { variable_1 : constrained_pin_transition; variable_2 : related_pin_transition; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); index_2 ("1000.0, 1001.0, 1002.0"); } lu_table_template(setup_template_5x3) { variable_1 : constrained_pin_transition; variable_2 : related_pin_transition; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); index_2 ("1000.0, 1001.0, 1002.0"); } lu_table_template(width_template_5x1) { variable_1 : related_pin_transition; index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0"); } /* -------------- * * Design : DCBX1 * * -------------- */ cell (DCBX1) { cell_footprint : dffb; area : 18; cell_leakage_power : 0.464382; ff (DS0000,DS0001) { next_state : "D"; clocked_on : "(!(!CLK))"; clear : "(!CLR)"; } pin(CLK) { direction : input; capacitance : 0.0159909; rise_capacitance : 0.0159909; fall_capacitance : 0.0159762; rise_capacitance_range ( 0.0159555, 0.0160263) ; fall_capacitance_range ( 0.0159743, 0.0159782) ; clock : true; internal_power() { rise_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("1.58266, 1.61871, 1.78774, 1.94208, 2.52771"); } fall_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("2.78296, 2.8309, 3.01231, 3.17747, 3.75503"); } } timing() { related_pin : "CLK"; timing_type : min_pulse_width; rise_constraint(width_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.784637, 0.849532, 0.989096, 1.09011, 1.3948"); } fall_constraint(width_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.866652, 0.940744, 1.08699, 1.18893, 1.49889"); } } } pin(CLR) { direction : input; capacitance : 0.0159753; rise_capacitance : 0.0159548; fall_capacitance : 0.0159753; rise_capacitance_range ( 0.0159548, 0.0159548) ; fall_capacitance_range ( 0.0159721, 0.0159786) ; internal_power() { rise_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.998572, 1.03003, 1.16559, 1.29914, 1.77921"); } fall_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.672526, 0.713454, 0.866412, 1.00552, 1.50235"); } } timing() { related_pin : "CLR"; timing_type : min_pulse_width; fall_constraint(width_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.822025, 0.895906, 1.04269, 1.14794, 1.46983"); } } timing() { related_pin : "CLK"; timing_type : recovery_rising; when : "D"; sdf_cond : "D == 1'b1"; rise_constraint(recovery_template_5x3) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.06, 0.3, 0.6"); values ( \ "0.15, -0.03, -0.18", \ "0.24, 0.06, -0.09", \ "0.345, 0.165, 0.015", \ "0.48, 0.3, 0.15", \ "0.705, 0.6, 0.375"); } } timing() { related_pin : "CLK"; timing_type : removal_rising; when : "D"; sdf_cond : "D == 1'b1"; rise_constraint(removal_template_5x3) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.06, 0.3, 0.6"); values ( \ "0, 0.18, 0.33", \ "-0.09, 0.09, 0.24", \ "-0.195, -0.015, 0.135", \ "-0.255, -0.15, 0", \ "-0.555, -0.45, -0.225"); } } } pin(D) { direction : input; capacitance : 0.0250575; rise_capacitance : 0.0250551; fall_capacitance : 0.0250575; rise_capacitance_range ( 0.0236734, 0.0264367) ; fall_capacitance_range ( 0.0236244, 0.0264906) ; internal_power() { rise_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.909494, 0.934955, 1.07787, 1.21606, 1.74448"); } fall_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("1.39746, 1.40851, 1.54776, 1.68646, 2.20605"); } } timing() { related_pin : "CLK"; timing_type : hold_rising; when : "CLR"; sdf_cond : "CLR == 1'b1"; rise_constraint(hold_template_5x3) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.06, 0.3, 0.6"); values ( \ "0, 0.105, 0.255", \ "-0.015, 0.09, 0.24", \ "-0.12, -0.015, 0.135", \ "-0.18, -0.075, 0.075", \ "-0.33, -0.225, -0.15"); } fall_constraint(hold_template_5x3) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.06, 0.3, 0.6"); values ( \ "0.075, 0.18, 0.33", \ "-0.015, 0.09, 0.315", \ "-0.12, -0.015, 0.135", \ "-0.255, -0.15, 0.075", \ "-0.63, -0.45, -0.3"); } } timing() { related_pin : "CLK"; timing_type : setup_rising; when : "CLR"; sdf_cond : "CLR == 1'b1"; rise_constraint(setup_template_5x3) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.06, 0.3, 0.6"); values ( \ "0.075, -0.03, -0.105", \ "0.165, 0.06, -0.09", \ "0.27, 0.09, 0.015", \ "0.33, 0.15, 0.075", \ "0.48, 0.375, 0.225"); } fall_constraint(setup_template_5x3) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.06, 0.3, 0.6"); values ( \ "0.375, 0.195, 0.045", \ "0.39, 0.285, 0.135", \ "0.57, 0.39, 0.24", \ "0.63, 0.525, 0.375", \ "1.005, 0.825, 0.675"); } } } pin(Q) { direction : output; capacitance : 0; rise_capacitance : 0; fall_capacitance : 0; rise_capacitance_range ( 0, 0) ; fall_capacitance_range ( 0, 0) ; max_capacitance : 0.279925; function : "DS0000"; timing() { related_pin : "CLK"; timing_sense : non_unate; timing_type : rising_edge; cell_rise(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.768683, 0.888102, 1.12115, 2.04994, 3.43359", \ "0.834318, 0.953332, 1.18661, 2.1123, 3.49966", \ "0.973067, 1.09134, 1.32436, 2.25294, 3.64089", \ "1.0694, 1.1881, 1.42129, 2.35166, 3.73808", \ "1.36561, 1.48473, 1.71883, 2.64496, 4.03397"); } rise_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.211888, 0.278761, 0.414176, 0.95386, 1.76261", \ "0.211286, 0.278666, 0.414136, 0.954099, 1.76294", \ "0.21162, 0.278626, 0.414133, 0.9547, 1.76269", \ "0.211736, 0.278691, 0.414142, 0.954733, 1.76194", \ "0.211868, 0.279771, 0.414341, 0.953303, 1.76219"); } cell_fall(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.784637, 0.951012, 1.28218, 2.60058, 4.57958", \ "0.849532, 1.01594, 1.34666, 2.6619, 4.6418", \ "0.989096, 1.1546, 1.4841, 2.7998, 4.77629", \ "1.09011, 1.25481, 1.58358, 2.90135, 4.87216", \ "1.3948, 1.55834, 1.88423, 3.19226, 5.16304"); } fall_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.241841, 0.328298, 0.499171, 1.1824, 2.2026", \ "0.24182, 0.328076, 0.499704, 1.18089, 2.20536", \ "0.242005, 0.328824, 0.499675, 1.18253, 2.20545", \ "0.242409, 0.329361, 0.500312, 1.18209, 2.20597", \ "0.243731, 0.32874, 0.501095, 1.18285, 2.20603"); } } timing() { /* MIN */ related_pin : "CLR"; timing_sense : positive_unate; timing_type : clear; cell_fall(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.55031, 0.63274, 0.792931, 1.35446, 2.17724", \ "0.624112, 0.706152, 0.866015, 1.42787, 2.25236", \ "0.770438, 0.851671, 1.01128, 1.57207, 2.3958", \ "0.875422, 0.956464, 1.11532, 1.67531, 2.49545", \ "1.19709, 1.27493, 1.43301, 1.99035, 2.80997"); } fall_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.285422, 0.353269, 0.471669, 0.916586, 1.57571", \ "0.285756, 0.353296, 0.471854, 0.918561, 1.58107", \ "0.287599, 0.35487, 0.472952, 0.920259, 1.58251", \ "0.290709, 0.357476, 0.474557, 0.920585, 1.5779", \ "0.310362, 0.368819, 0.48248, 0.924583, 1.58244"); } } timing() { /* MAX */ related_pin : "CLR"; timing_sense : positive_unate; timing_type : clear; cell_fall(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.555255, 0.638843, 0.800659, 1.44457, 2.40666", \ "0.628955, 0.712074, 0.873626, 1.51869, 2.47752", \ "0.775605, 0.858185, 1.01876, 1.66024, 2.62251", \ "0.881099, 0.962966, 1.12261, 1.76414, 2.72238", \ "1.2039, 1.28446, 1.44178, 2.07839, 3.03521"); } fall_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.288227, 0.358017, 0.499901, 1.0754, 1.94701", \ "0.287869, 0.358305, 0.499942, 1.07599, 1.94662", \ "0.290179, 0.359288, 0.500746, 1.07645, 1.94711", \ "0.293048, 0.361982, 0.502024, 1.07583, 1.9457", \ "0.31232, 0.373597, 0.510039, 1.07841, 1.94768"); } } internal_power() { related_pin : "CLK"; rise_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "1.57314, 1.57304, 1.57787, 1.62831, 1.72867", \ "1.58597, 1.58705, 1.59186, 1.63983, 1.74239", \ "1.66799, 1.67084, 1.67381, 1.723, 1.82214", \ "1.7492, 1.74934, 1.75298, 1.80272, 1.9006", \ "2.03732, 2.03707, 2.03603, 2.08993, 2.18654"); } fall_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "1.54131, 1.55917, 1.59413, 1.72729, 1.93027", \ "1.55546, 1.57146, 1.60503, 1.73921, 1.94064", \ "1.65167, 1.66411, 1.6948, 1.82197, 2.0217", \ "1.74752, 1.7597, 1.78775, 1.90646, 2.10514", \ "2.10983, 2.11079, 2.12569, 2.22851, 2.41173"); } } internal_power() { related_pin : "CLR"; fall_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "1.97661, 1.99878, 2.03395, 2.14949, 2.34588", \ "1.99854, 2.01912, 2.0541, 2.16964, 2.36935", \ "2.08861, 2.10737, 2.13929, 2.2509, 2.44742", \ "2.17787, 2.19467, 2.22363, 2.33152, 2.52853", \ "2.50557, 2.51351, 2.53384, 2.62681, 2.80818"); } } } pin(QB) { direction : output; capacitance : 0; rise_capacitance : 0; fall_capacitance : 0; rise_capacitance_range ( 0, 0) ; fall_capacitance_range ( 0, 0) ; max_capacitance : 0.191306; function : "DS0001"; timing() { related_pin : "CLK"; timing_sense : non_unate; timing_type : rising_edge; cell_rise(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.53022, 0.615885, 0.785881, 1.45556, 2.45578", \ "0.595106, 0.680647, 0.85046, 1.51971, 2.52019", \ "0.73495, 0.819536, 0.987802, 1.65481, 2.65463", \ "0.836487, 0.920147, 1.0877, 1.75259, 2.75064", \ "1.1425, 1.22484, 1.38922, 2.04757, 3.04159"); } rise_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.280518, 0.364215, 0.53395, 1.20304, 2.19604", \ "0.280538, 0.364313, 0.533995, 1.20314, 2.19615", \ "0.281994, 0.365145, 0.534161, 1.20322, 2.19616", \ "0.285363, 0.36741, 0.535394, 1.20355, 2.19633", \ "0.297495, 0.377231, 0.542785, 1.20535, 2.19664"); } cell_fall(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.584307, 0.640781, 0.750784, 1.18588, 1.83966", \ "0.649844, 0.706271, 0.816181, 1.25171, 1.90631", \ "0.788499, 0.843865, 0.953923, 1.38883, 2.04394", \ "0.884869, 0.940861, 1.05087, 1.48753, 2.14121", \ "1.18126, 1.23809, 1.34892, 1.78181, 2.43581"); } fall_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.200989, 0.250711, 0.350544, 0.76221, 1.39065", \ "0.20102, 0.250709, 0.350533, 0.762492, 1.39135", \ "0.201177, 0.250322, 0.350548, 0.762169, 1.39071", \ "0.201327, 0.250773, 0.350772, 0.762268, 1.39149", \ "0.202454, 0.250729, 0.350654, 0.762402, 1.3906"); } } timing() { /* MIN */ related_pin : "CLR"; timing_sense : negative_unate; timing_type : preset; cell_rise(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.818343, 0.917791, 1.09637, 1.77178, 2.77121", \ "0.892044, 0.991431, 1.16997, 1.84567, 2.84513", \ "1.0382, 1.13812, 1.31646, 1.99211, 2.99159", \ "1.14288, 1.24313, 1.42127, 2.0968, 3.09611", \ "1.46245, 1.56386, 1.74091, 2.41546, 3.41464"); } rise_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.263996, 0.350213, 0.522408, 1.18781, 2.1821", \ "0.264006, 0.350218, 0.522543, 1.18784, 2.1822", \ "0.263949, 0.350239, 0.522569, 1.18752, 2.18202", \ "0.26407, 0.350002, 0.522441, 1.18744, 2.18188", \ "0.26456, 0.350446, 0.522773, 1.18732, 2.182"); } } timing() { /* MAX */ related_pin : "CLR"; timing_sense : negative_unate; timing_type : preset; cell_rise(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.822025, 0.981049, 1.29461, 2.53333, 4.38359", \ "0.895906, 1.0543, 1.36766, 2.6059, 4.45709", \ "1.04269, 1.20014, 1.51261, 2.74984, 4.59942", \ "1.14794, 1.30481, 1.61645, 2.85207, 4.70184", \ "1.46983, 1.62492, 1.93481, 3.16574, 5.01278"); } rise_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.272133, 0.356004, 0.523164, 1.21387, 2.25237", \ "0.272211, 0.35612, 0.523144, 1.21379, 2.25214", \ "0.272261, 0.355986, 0.523059, 1.21399, 2.25187", \ "0.272252, 0.356034, 0.523049, 1.21392, 2.25226", \ "0.273083, 0.35654, 0.523072, 1.21409, 2.25256"); } } internal_power() { related_pin : "CLK"; rise_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "1.54131, 1.55917, 1.59413, 1.72729, 1.93027", \ "1.55546, 1.57146, 1.60503, 1.73921, 1.94064", \ "1.65167, 1.66411, 1.6948, 1.82197, 2.0217", \ "1.74752, 1.7597, 1.78775, 1.90646, 2.10514", \ "2.10983, 2.11079, 2.12569, 2.22851, 2.41173"); } fall_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "1.57314, 1.57304, 1.57787, 1.62831, 1.72867", \ "1.58597, 1.58705, 1.59186, 1.63983, 1.74239", \ "1.66799, 1.67084, 1.67381, 1.723, 1.82214", \ "1.7492, 1.74934, 1.75298, 1.80272, 1.9006", \ "2.03732, 2.03707, 2.03603, 2.08993, 2.18654"); } } internal_power() { related_pin : "CLR"; rise_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "1.97661, 1.99878, 2.03395, 2.14949, 2.34588", \ "1.99854, 2.01912, 2.0541, 2.16964, 2.36935", \ "2.08861, 2.10737, 2.13929, 2.2509, 2.44742", \ "2.17787, 2.19467, 2.22363, 2.33152, 2.52853", \ "2.50557, 2.51351, 2.53384, 2.62681, 2.80818"); } } } } /* -------------- * * Design : INVX1 * * -------------- */ cell (INVX1) { cell_footprint : inv; area : 3; cell_leakage_power : 0.0341756; pin(A) { direction : input; capacitance : 0.0160164; rise_capacitance : 0.0160164; fall_capacitance : 0.0159693; rise_capacitance_range ( 0.0160164, 0.0160164) ; fall_capacitance_range ( 0.0159693, 0.0159693) ; } pin(Y) { direction : output; capacitance : 0; rise_capacitance : 0; fall_capacitance : 0; rise_capacitance_range ( 0, 0) ; fall_capacitance_range ( 0, 0) ; max_capacitance : 0.402017; function : "(!A)"; timing() { related_pin : "A"; timing_sense : negative_unate; cell_rise(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.147583, 0.217035, 0.355377, 0.907001, 1.73349", \ "0.224219, 0.291274, 0.428044, 0.977438, 1.80305", \ "0.365232, 0.445422, 0.582152, 1.12428, 1.94149", \ "0.46186, 0.55044, 0.700788, 1.23784, 2.0566", \ "0.75585, 0.872701, 1.05674, 1.62712, 2.42849"); } rise_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.09712, 0.164583, 0.299488, 0.839163, 1.64852", \ "0.117867, 0.173862, 0.30016, 0.839221, 1.64879", \ "0.174063, 0.229801, 0.335188, 0.839268, 1.64864", \ "0.212233, 0.270216, 0.376329, 0.849921, 1.64867", \ "0.322205, 0.398154, 0.51726, 0.945327, 1.66712"); } cell_fall(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.166552, 0.247549, 0.408769, 1.04944, 2.00953", \ "0.234229, 0.313057, 0.472061, 1.11143, 2.07233", \ "0.366262, 0.455096, 0.610195, 1.24173, 2.19801", \ "0.456648, 0.553252, 0.718877, 1.34254, 2.29658", \ "0.732451, 0.855462, 1.05488, 1.6961, 2.63335"); } fall_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.103393, 0.176429, 0.322563, 0.906541, 1.78269", \ "0.119174, 0.182264, 0.32239, 0.906789, 1.78367", \ "0.176141, 0.235883, 0.351112, 0.906842, 1.78324", \ "0.215097, 0.277743, 0.390555, 0.911993, 1.78282", \ "0.333403, 0.409933, 0.534675, 0.99795, 1.79573"); } } internal_power() { related_pin : "A"; rise_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.389002, 0.393869, 0.398499, 0.402791, 0.40412", \ "0.442829, 0.430625, 0.423648, 0.413675, 0.40862", \ "0.617376, 0.577985, 0.535474, 0.47171, 0.448634", \ "0.768465, 0.717378, 0.652041, 0.547541, 0.493993", \ "1.29533, 1.2207, 1.10425, 0.86946, 0.7254"); } fall_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.011845, 0.00625, 0.001276, 0.005383, 0.006277", \ "0.022784, 0.017685, 0.013616, 0.008902, 0.007861", \ "0.173984, 0.138231, 0.101902, 0.054497, 0.035459", \ "0.311874, 0.256871, 0.196965, 0.106444, 0.069818", \ "0.81705, 0.723427, 0.595846, 0.372799, 0.246518"); } } } } /* ---------------- * * Design : NAND2X1 * * ---------------- */ cell (NAND2X1) { cell_footprint : nand2; area : 4; cell_leakage_power : 0.0567011; pin(A) { direction : input; capacitance : 0.0201485; rise_capacitance : 0.0201485; fall_capacitance : 0.019937; rise_capacitance_range ( 0.0190239, 0.0212732) ; fall_capacitance_range ( 0.0186932, 0.0211807) ; internal_power() { rise_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.23538, 0.234957, 0.234854, 0.234994, 0.235103"); } fall_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.242091, 0.236781, 0.235478, 0.235391, 0.235861"); } } } pin(B) { direction : input; capacitance : 0.0174339; rise_capacitance : 0.0173315; fall_capacitance : 0.0174339; rise_capacitance_range ( 0.0132218, 0.0214411) ; fall_capacitance_range ( 0.0134763, 0.0213916) ; internal_power() { rise_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.234047, 0.233613, 0.233977, 0.234143, 0.233872"); } fall_power(passive_energy_template_5x1) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); values ("0.262936, 0.263042, 0.262941, 0.263082, 0.263471"); } } } pin(Y) { direction : output; capacitance : 0; rise_capacitance : 0; fall_capacitance : 0; rise_capacitance_range ( 0, 0) ; fall_capacitance_range ( 0, 0) ; max_capacitance : 0.424097; function : "(!(A B))"; timing() { related_pin : "A"; timing_sense : negative_unate; cell_rise(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.193773, 0.26363, 0.402277, 0.954263, 1.78147", \ "0.272928, 0.340545, 0.476366, 1.02569, 1.85123", \ "0.442504, 0.510273, 0.640167, 1.1776, 1.99738", \ "0.565262, 0.636904, 0.768224, 1.29767, 2.1125", \ "0.955771, 1.04092, 1.18992, 1.71578, 2.51138"); } rise_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.135895, 0.203553, 0.338593, 0.878625, 1.68874", \ "0.146052, 0.207351, 0.338713, 0.878813, 1.68874", \ "0.196906, 0.248155, 0.361279, 0.878891, 1.68874", \ "0.232599, 0.287925, 0.393355, 0.884583, 1.68833", \ "0.349961, 0.412136, 0.519502, 0.95658, 1.70372"); } cell_fall(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.141326, 0.196767, 0.30679, 0.744364, 1.40074", \ "0.186534, 0.240718, 0.348973, 0.785244, 1.44019", \ "0.271642, 0.333042, 0.443928, 0.873326, 1.52524", \ "0.327857, 0.395743, 0.513999, 0.942458, 1.59134", \ "0.491662, 0.578524, 0.723419, 1.18578, 1.82356"); } fall_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.08909, 0.141457, 0.246741, 0.667122, 1.29868", \ "0.109662, 0.152681, 0.250305, 0.667113, 1.29797", \ "0.167366, 0.205878, 0.288622, 0.672974, 1.29795", \ "0.210361, 0.250148, 0.328387, 0.688252, 1.30052", \ "0.338489, 0.388406, 0.474547, 0.796753, 1.34428"); } } timing() { related_pin : "B"; timing_sense : negative_unate; cell_rise(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.166482, 0.237259, 0.376051, 0.930395, 1.75785", \ "0.244773, 0.312274, 0.449451, 1.0003, 1.8268", \ "0.403815, 0.477683, 0.61021, 1.15037, 1.97284", \ "0.516971, 0.596251, 0.735618, 1.26784, 2.08568", \ "0.870583, 0.971812, 1.13374, 1.67895, 2.47854"); } rise_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.107339, 0.17479, 0.309773, 0.849562, 1.65925", \ "0.120137, 0.179866, 0.309698, 0.849541, 1.65925", \ "0.171788, 0.224979, 0.335941, 0.849351, 1.65885", \ "0.207489, 0.264273, 0.370118, 0.856314, 1.65885", \ "0.317586, 0.38588, 0.501904, 0.933212, 1.67544"); } cell_fall(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.13719, 0.19247, 0.302112, 0.739584, 1.39515", \ "0.198757, 0.254873, 0.362554, 0.798603, 1.4541", \ "0.300327, 0.370903, 0.492393, 0.922255, 1.57645", \ "0.368717, 0.447726, 0.579847, 1.0186, 1.66359", \ "0.571848, 0.674223, 0.839381, 1.34335, 1.98612"); } fall_transition(delay_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.088926, 0.141503, 0.246613, 0.667122, 1.29814", \ "0.116664, 0.157333, 0.250359, 0.667109, 1.29868", \ "0.172013, 0.217718, 0.302983, 0.674305, 1.2987", \ "0.212873, 0.260755, 0.349111, 0.69935, 1.2991", \ "0.33606, 0.398964, 0.497741, 0.83858, 1.36969"); } } internal_power() { related_pin : "A"; rise_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.754847, 0.759479, 0.763944, 0.767989, 0.769687", \ "0.825329, 0.813516, 0.799402, 0.786103, 0.778299", \ "1.08496, 1.04004, 0.982478, 0.884757, 0.844555", \ "1.31343, 1.2471, 1.15862, 1.00451, 0.923568", \ "2.11003, 2.01672, 1.86766, 1.51618, 1.29097"); } fall_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.021504, 0.014138, 0.008351, 0.0022, 0.000423", \ "0.032905, 0.02363, 0.016647, 0.009649, 0.006079", \ "0.263496, 0.219931, 0.167607, 0.092535, 0.056628", \ "0.474533, 0.407808, 0.325833, 0.185551, 0.116037", \ "1.24768, 1.13433, 0.969528, 0.643674, 0.442551"); } } internal_power() { related_pin : "B"; rise_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.551421, 0.564803, 0.579627, 0.595129, 0.600456", \ "0.615395, 0.606006, 0.603838, 0.603944, 0.603118", \ "0.851456, 0.811443, 0.765091, 0.689944, 0.663474", \ "1.054, 0.996567, 0.92146, 0.789533, 0.730927", \ "1.77112, 1.679, 1.54244, 1.26292, 1.05817"); } fall_power(energy_template_5x5) { index_1 ("0.06, 0.18, 0.42, 0.6, 1.2"); index_2 ("0.025, 0.05, 0.1, 0.3, 0.6"); values ( \ "0.015069, 0.01128, 0.007085, 0.001339, 0.000967", \ "0.037481, 0.031036, 0.028743, 0.011886, 0.00701", \ "0.257402, 0.211914, 0.160692, 0.086374, 0.065684", \ "0.449098, 0.38172, 0.303152, 0.176538, 0.102258", \ "1.13844, 1.02859, 0.869325, 0.570768, 0.379786"); } } } } }