/*
 * Copyright 2022 GlobalFoundries PDK Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *      Single Port SRAM cell name : gf180mcu_fd_ip_sram__sram256x8m8wm1
 *      Technology                 : GF 180nm 5V Green
 *
 *      ---------
 *      Pin name:
 *      ---------
 *      Input Pins : CLK CEN GWEN WEN[7:0] A[7:0] D[7:0]
 *      Inout Pins:  VDD VSS
 *      Output Pins: Q[7:0]
 *
 *     Revision History: 1.0 (Initial Release: June 20, 2014)
 */

library(gf180mcu_fd_ip_sram__sram256x8m8wm1__ss_n40C_3v00) {
        delay_model             : table_lookup;
        revision                : 1.0;
        date                    : "June 20, 2014";
        comment                 : "GF 180nm 5V Green";
        voltage_unit            : "1V";
        time_unit               : "1ns";
        current_unit            : "1mA";
        leakage_power_unit      : "1mW";
        nom_process             : 1;
        nom_temperature         : -40;
        nom_voltage             : 3.0;
        capacitive_load_unit    (1,pf);
        pulling_resistance_unit : "1kohm";

        /* additional header data */
        default_fanout_load            : 1;
        default_inout_pin_cap          : 0.045;
        default_input_pin_cap          : 0.045;
        default_output_pin_cap         : 0;
        default_max_transition         : 6.4830;
        default_cell_leakage_power     : 0;

         /* default attributes */
         slew_derate_from_library      : 1.000;
         slew_lower_threshold_pct_fall : 10.000;
         slew_upper_threshold_pct_fall : 90.000;
         slew_lower_threshold_pct_rise : 10.000;
         slew_upper_threshold_pct_rise : 90.000;
         input_threshold_pct_fall      : 50.000;
         input_threshold_pct_rise      : 50.000;
         output_threshold_pct_fall     : 50.000;
         output_threshold_pct_rise     : 50.000;
         default_leakage_power_density : 0;

        /* k-factors */
        k_process_recovery_fall        : 1;
        k_process_recovery_rise        : 1;
        k_process_cell_fall            : 1;
        k_process_cell_leakage_power   : 0;
        k_process_cell_rise            : 1;
        k_process_fall_transition      : 1;
        k_process_hold_fall            : 1;
        k_process_hold_rise            : 1;
        k_process_internal_power       : 0;
        k_process_min_pulse_width_high : 1;
        k_process_min_pulse_width_low  : 1;
        k_process_setup_fall           : 1;
        k_process_setup_rise           : 1;
        k_process_wire_cap             : 0;
        k_process_wire_res             : 0;
        k_process_pin_cap              : 0;
        k_process_rise_transition      : 1;
        k_temp_cell_fall               : 0.000;
        k_temp_cell_rise               : 0.000;
        k_temp_hold_fall               : 0.000;
        k_temp_hold_rise               : 0.000;
        k_temp_min_pulse_width_high    : 0.000;
        k_temp_min_pulse_width_low     : 0.000;
        k_temp_min_period              : 0.000;
        k_temp_rise_propagation        : 0.000;
        k_temp_fall_propagation        : 0.000;
        k_temp_rise_transition         : 0.000;
        k_temp_fall_transition         : 0.000;
        k_temp_recovery_fall           : 0.000;
        k_temp_recovery_rise           : 0.000;
        k_temp_setup_fall              : 0.000;
        k_temp_setup_rise              : 0.000;
        k_volt_cell_fall               : 0.000;
        k_volt_cell_rise               : 0.000;
        k_volt_hold_fall               : 0.000;
        k_volt_hold_rise               : 0.000;
        k_volt_min_pulse_width_high    : 0.000;
        k_volt_min_pulse_width_low     : 0.000;
        k_volt_min_period              : 0.000;
        k_volt_recovery_fall           : 0.000;
        k_volt_recovery_rise           : 0.000;
        k_volt_setup_fall              : 0.000;
        k_volt_setup_rise              : 0.000;
        k_volt_rise_propagation        : 0.000;
        k_volt_fall_propagation        : 0.000;
        k_volt_rise_transition         : 0.000;
        k_volt_fall_transition         : 0.000;

         voltage_map (VDD, 3.0);
         voltage_map (VSS, 0.00);
         operating_conditions(ss_3p0v_m40C) {
                process       : 1;
                temperature   : -40;
                voltage       : 3.0;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : ss_3p0v_m40C;
         wire_load("Estimate") {
                resistance    : 1.44e-05;
                capacitance   : 0.00018;
                area          : 1.7;
                slope         : 500;
                fanout_length (1,500);
         }
         power_lut_template(power_template) {
            variable_1 : input_transition_time;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }
         lu_table_template(q_delay_template) {
            variable_1 : input_net_transition;
            variable_2 : total_output_net_capacitance;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
                 index_2 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }
         lu_table_template(q_slew_template) {
            variable_1 : total_output_net_capacitance;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }
         lu_table_template(constraint_template) {
            variable_1 : related_pin_transition;
            variable_2 : constrained_pin_transition;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
                 index_2 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }

         library_features(report_delay_calculation);

         type (A_BUS) {
                base_type : array;
                data_type : bit;
                bit_width : 8;
                bit_from  : 7;
                bit_to    : 0;
                downto    : true;
         }
         type (Q_BUS) {
                base_type : array;
                data_type : bit;
                bit_width : 8;
                bit_from  : 7;
                bit_to    : 0;
                downto    : true;
         }
 cell(gf180mcu_fd_ip_sram__sram256x8m8wm1) {
        area             : 147212.4368;
        dont_use         : TRUE;
        dont_touch       : TRUE;
        interface_timing : TRUE;
        memory() {
                type          : ram;
                address_width : 8;
                word_width    : 8;
        }

                 bus(Q)   {
                  bus_type             : Q_BUS;
                  direction            : output;
                  max_capacitance      : 1.1369;
                  memory_read() {
                        address        : A;
                  }
                  timing() {
                          related_pin  : "CLK";
                          timing_type  : rising_edge;
                          timing_sense : non_unate;
       		  when : "((!CEN) & (GWEN))";
        	  sdf_cond : "CEN== 1'b0 && GWEN== 1'b1";
                          cell_rise(q_delay_template) {
			  index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
			  index_2 ("0.0100, 0.0303, 0.1014, 0.2373, 0.4490, 0.7460, 1.1369");
                          values  ( \
                            "8.68008, 8.70864, 8.83476, 9.0192, 9.28956, 9.6828, 10.20252", \
                            "8.67768, 8.71236, 8.83332, 9.02856, 9.31224, 9.70068, 10.20852", \
                            "8.72796, 8.7774, 8.89728, 9.11064, 9.3618, 9.75528, 10.26", \
                            "8.8392, 8.8776, 8.99628, 9.19116, 9.47772, 9.85812, 10.3608", \
                            "8.91492, 8.94168, 9.07128, 9.25332, 9.54228, 9.92772, 10.43016", \
                            "8.95164, 8.991, 9.10872, 9.29676, 9.57708, 9.95856, 10.45524", \
                            "8.93844, 8.97528, 9.08796, 9.29112, 9.56808, 9.95664, 10.46112" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0303, 0.1014, 0.2373, 0.4490, 0.7460, 1.1369");
                          values  ( \
  	                     "0.266136, 0.317256, 0.48858, 0.803724, 1.32132, 2.05416, 3.01836" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0100, 0.0303, 0.1014, 0.2373, 0.4490, 0.7460, 1.1369");
                          values  ( \
                            "9.039, 9.0642, 9.1866, 9.34044, 9.534, 9.79752, 10.12752", \
                            "9.03468, 9.06708, 9.18156, 9.34692, 9.55932, 9.819, 10.13088", \
                            "9.0882, 9.1374, 9.24864, 9.42924, 9.60504, 9.86868, 10.18788", \
                            "9.19584, 9.23508, 9.3462, 9.50964, 9.72036, 9.96756, 10.29456", \
                            "9.2694, 9.303, 9.42, 9.57744, 9.78348, 10.03836, 10.35576", \
                            "9.3114, 9.34704, 9.45408, 9.61368, 9.822, 10.07388, 10.39368", \
                            "9.29724, 9.32916, 9.43692, 9.61632, 9.81672, 10.07148, 10.39176" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0303, 0.1014, 0.2373, 0.4490, 0.7460, 1.1369");
                          values  ( \
                            "0.257664, 0.306264, 0.419688, 0.611196, 0.881232, 1.266, 1.76772" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.311327;
                  clock                : true;
                  max_transition       : 6.4830;
                  min_pulse_width_high : 4.15185;
                  min_pulse_width_low  : 4.27521;
                  min_period           : 11.604405;

/* WRITE POWER */
             internal_power() {
              when : "!CEN & !GWEN & (!WEN[0] | !WEN[1] | !WEN[2] | !WEN[3] | !WEN[4] | !WEN[5] | !WEN[6] | !WEN[7])";
              rise_power(power_template) {
                index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                values  ("300.42, 300.42, 300.42, 300.42, 300.42, 300.42, 300.42");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                values  ("300.42, 300.42, 300.42, 300.42, 300.42, 300.42, 300.42");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                values  ("0.000122169, 0.000122169, 0.000122169, 0.000122169, 0.000122169, 0.000122169, 0.000122169");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                values  ("0.000122169, 0.000122169, 0.000122169, 0.000122169, 0.000122169, 0.000122169, 0.000122169");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                values  ("275.565, 275.565, 275.565, 275.565, 275.565, 275.565, 275.565");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                values  ("275.565, 275.565, 275.565, 275.565, 275.565, 275.565, 275.565");
              }
             }
          }

          pg_pin(VDD) {
                  voltage_name     : VDD;
                  pg_type          : primary_power;
          }
          pg_pin(VSS) {
                  voltage_name     : VSS;
                  pg_type          : primary_ground;
          }
          pin(CEN)   {
                  direction            : input;
                  capacitance          : 0.0196131;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.805761, 0.788755, 0.830236, 1.01044, 1.24413, 1.40866, 1.55276", \
                            "0.783046, 0.766249, 0.808885, 0.983972, 1.22211, 1.40635, 1.54088", \
                            "0.75218, 0.735438, 0.774521, 0.942975, 1.13006, 1.31164, 1.44793", \
                            "0.750585, 0.732545, 0.772288, 0.939378, 1.11054, 1.23415, 1.33782", \
                            "0.750398, 0.735702, 0.772277, 0.940786, 1.11503, 1.22792, 1.28277", \
                            "0.751069, 0.736802, 0.772277, 0.933328, 1.11417, 1.22788, 1.28135", \
                            "0.749067, 0.732292, 0.770858, 0.936386, 1.11458, 1.22922, 1.32616" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.659142, 0.672859, 0.765248, 0.962115, 1.22426, 1.5125, 1.80323", \
                            "0.653642, 0.669009, 0.761189, 0.958122, 1.22026, 1.49952, 1.79399", \
                            "0.650705, 0.664873, 0.757328, 0.946594, 1.21633, 1.49996, 1.79014", \
                            "0.648307, 0.66319, 0.755656, 0.95249, 1.21466, 1.49402, 1.78838", \
                            "0.648021, 0.662706, 0.755161, 0.95205, 1.21424, 1.49699, 1.78794", \
                            "0.647735, 0.662728, 0.754886, 0.951786, 1.21392, 1.50007, 1.78772", \
                            "0.647009, 0.661716, 0.754127, 0.951016, 1.21314, 1.49941, 1.78695" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "1.90542, 1.92368, 1.88298, 1.71479, 1.5411, 1.44672, 1.37379", \
                            "1.92907, 1.94711, 1.90531, 1.74163, 1.56398, 1.45002, 1.39018", \
                            "2.01773, 2.03445, 1.9954, 1.82688, 1.65462, 1.53967, 1.48533", \
                            "2.19384, 2.21199, 2.17217, 2.00508, 1.83392, 1.71039, 1.65638", \
                            "2.36654, 2.38128, 2.34465, 2.17613, 2.00189, 1.88903, 1.83414", \
                            "2.51262, 2.52692, 2.49139, 2.33035, 2.14951, 2.03577, 1.98231", \
                            "2.60117, 2.618, 2.57939, 2.41384, 2.23564, 2.12102, 2.06855" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "2.00651, 1.99287, 1.90047, 1.70357, 1.44144, 1.16212, 0.86768", \
                            "2.03148, 2.01619, 1.92401, 1.727, 1.46487, 1.1856, 0.891154", \
                            "2.11915, 2.10507, 2.01256, 1.82325, 1.55353, 1.26998, 0.97977", \
                            "2.29614, 2.28129, 2.18878, 1.99199, 1.72986, 1.45046, 1.15607", \
                            "2.46895, 2.45421, 2.36181, 2.16491, 1.90267, 1.61997, 1.32902", \
                            "2.61591, 2.60095, 2.50877, 2.31187, 2.04974, 1.76352, 1.47598", \
                            "2.70325, 2.68851, 2.59611, 2.39921, 2.13708, 1.85086, 1.56332" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0486854;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "1.02853, 1.04851, 1.13831, 1.30152, 1.50601, 1.68124, 1.83139", \
                            "1.00905, 1.02936, 1.11889, 1.28338, 1.48709, 1.66287, 1.80807", \
                            "0.925133, 0.944284, 1.03422, 1.19735, 1.40151, 1.57344, 1.7193", \
                            "0.764786, 0.784751, 0.874621, 1.0378, 1.24161, 1.41779, 1.56607", \
                            "0.637285, 0.649264, 0.74745, 0.909513, 1.11373, 1.28897, 1.43528", \
                            "0.529936, 0.547833, 0.639331, 0.803957, 1.00709, 1.17929, 1.32979", \
                            "0.480018, 0.499939, 0.590931, 0.754347, 0.957341, 1.12478, 1.27555" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "1.15862, 1.18856, 1.29646, 1.51283, 1.82864, 2.18933, 2.58137", \
                            "1.14565, 1.1691, 1.27592, 1.49226, 1.80928, 2.16799, 2.5619", \
                            "1.05554, 1.07934, 1.19106, 1.40085, 1.72447, 2.08538, 2.47709", \
                            "0.896225, 0.919765, 1.0327, 1.24873, 1.56497, 1.92599, 2.31759", \
                            "0.768724, 0.791538, 0.904453, 1.11918, 1.43671, 1.79993, 2.18933", \
                            "0.664675, 0.687731, 0.797522, 1.01369, 1.32979, 1.69158, 2.08241", \
                            "0.610665, 0.635767, 0.746856, 0.964293, 1.2802, 1.64197, 2.0328" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "1.46927, 1.45079, 1.36125, 1.23293, 1.12124, 1.04293, 1.00221", \
                            "1.47884, 1.46047, 1.37082, 1.24259, 1.13163, 1.0526, 1.01505", \
                            "1.52768, 1.51008, 1.42054, 1.2923, 1.17407, 1.10505, 1.06952", \
                            "1.60457, 1.5862, 1.49666, 1.3684, 1.25667, 1.18138, 1.13864", \
                            "1.68157, 1.66848, 1.57278, 1.44441, 1.33342, 1.25408, 1.21639", \
                            "1.69972, 1.68135, 1.59192, 1.46355, 1.3519, 1.27646, 1.23281", \
                            "1.70269, 1.68432, 1.59478, 1.46751, 1.35553, 1.28585, 1.24117" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.734723, 0.70708, 0.597839, 0.38852, 0.0950532, 0, 0", \
                            "0.75141, 0.721358, 0.60742, 0.392931, 0.10391, 0, 0", \
                            "0.796565, 0.776413, 0.656117, 0.451517, 0.153395, 0, 0", \
                            "0.874742, 0.855195, 0.735284, 0.520124, 0.229669, 0, 0", \
                            "1.02625, 1.00735, 0.891616, 0.675213, 0.367961, 0.043538, 0", \
                            "1.20898, 1.186, 1.0705, 0.853567, 0.546777, 0.22046, 0", \
                            "1.33815, 1.31483, 1.19944, 0.982179, 0.675719, 0.349404, 0" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00791289;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0, 0, 0, 0, 0.080685, 0.157355, 0.206639", \
                            "0, 0, 0, 0, 0.06919, 0.151473, 0.200124", \
                            "0, 0, 0, 0, 0.024486, 0.100279, 0.139098", \
                            "0, 0, 0, 0, 0, 0.024706, 0.069784", \
                            "0, 0, 0, 0, 0, 0, 0", \
                            "0, 0, 0, 0, 0, 0, 0", \
                            "0, 0, 0, 0, 0, 0, 0" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.42757, 0.454487, 0.565004, 0.77561, 1.07304, 1.41647, 1.81214", \
                            "0.410388, 0.444895, 0.555841, 0.770187, 1.06513, 1.4058, 1.80125", \
                            "0.36355, 0.386254, 0.503151, 0.707476, 1.0104, 1.35322, 1.74988", \
                            "0.285487, 0.309903, 0.429209, 0.641388, 0.937805, 1.27729, 1.67453", \
                            "0.209361, 0.234589, 0.348128, 0.562881, 0.85712, 1.20463, 1.59742", \
                            "0.194381, 0.221735, 0.333498, 0.545908, 0.841566, 1.18309, 1.58114", \
                            "0.189922, 0.217867, 0.329692, 0.540518, 0.83842, 1.17966, 1.57465" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "1.47004, 1.45497, 1.36433, 1.23293, 1.12396, 1.04706, 1.00221", \
                            "1.47972, 1.46465, 1.37401, 1.24259, 1.13361, 1.05669, 1.01505", \
                            "1.52922, 1.51415, 1.42351, 1.2923, 1.18315, 1.10625, 1.06952", \
                            "1.60545, 1.59038, 1.49974, 1.3684, 1.25939, 1.18248, 1.13864", \
                            "1.68157, 1.66848, 1.57586, 1.44441, 1.33551, 1.25855, 1.21639", \
                            "1.70071, 1.68564, 1.595, 1.46355, 1.35465, 1.27774, 1.23281", \
                            "1.70357, 1.6885, 1.59786, 1.46751, 1.35751, 1.28585, 1.24117" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.736362, 0.711711, 0.599918, 0.38852, 0.0951907, 0, 0", \
                            "0.751454, 0.721358, 0.609521, 0.392931, 0.104838, 0, 0", \
                            "0.797962, 0.776413, 0.658295, 0.453222, 0.154297, 0, 0", \
                            "0.876018, 0.855195, 0.735284, 0.520124, 0.230639, 0, 0", \
                            "0.952952, 0.928268, 0.812185, 0.597795, 0.30657, 0, 0", \
                            "0.968561, 0.941809, 0.830566, 0.61534, 0.325886, 0, 0", \
                            "0.970651, 0.945032, 0.83325, 0.622028, 0.3289, 0, 0" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0438961;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.976536, 0.968055, 1.01454, 1.17565, 1.41669, 1.6192, 1.77199", \
                            "0.968176, 0.962522, 1.01001, 1.17759, 1.40921, 1.60149, 1.75824", \
                            "0.910668, 0.907368, 0.955548, 1.12156, 1.35652, 1.56937, 1.70577", \
                            "0.837309, 0.831193, 0.881364, 1.04306, 1.27384, 1.47334, 1.64109", \
                            "0.755601, 0.748055, 0.803363, 0.962126, 1.20369, 1.39623, 1.55716", \
                            "0.742973, 0.740157, 0.785708, 0.953348, 1.18021, 1.39469, 1.53934", \
                            "0.74283, 0.735207, 0.776688, 0.944779, 1.17555, 1.3816, 1.53714" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "1.22393, 1.23901, 1.32847, 1.53604, 1.81423, 2.12993, 2.45289", \
                            "1.21949, 1.23078, 1.32044, 1.52658, 1.80334, 2.10991, 2.44552", \
                            "1.16032, 1.17194, 1.2663, 1.47059, 1.75252, 2.06118, 2.39041", \
                            "1.08503, 1.1005, 1.19097, 1.397, 1.67222, 1.97769, 2.31594", \
                            "1.01383, 1.02702, 1.11455, 1.3167, 1.59797, 1.90597, 2.23927", \
                            "0.993102, 1.00331, 1.10078, 1.3013, 1.57828, 1.88782, 2.22288", \
                            "0.985787, 0.998437, 1.08878, 1.29536, 1.573, 1.88936, 2.21353" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.883036, 0.893882, 0.842919, 0.761508, 0.677776, 0.604109, 0.544203", \
                            "0.901879, 0.910503, 0.861817, 0.779867, 0.696674, 0.607849, 0.56309", \
                            "0.987184, 0.998184, 0.947562, 0.86614, 0.78958, 0.718762, 0.648824", \
                            "1.1465, 1.15705, 1.10642, 1.02448, 0.940764, 0.852489, 0.807631", \
                            "1.3497, 1.35971, 1.30966, 1.22757, 1.14542, 1.05564, 1.01103", \
                            "1.51646, 1.52515, 1.47642, 1.39502, 1.31131, 1.24666, 1.1777", \
                            "1.64483, 1.65341, 1.60402, 1.5235, 1.44056, 1.3662, 1.30658" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.945483, 0.929753, 0.848056, 0.760331, 0.697785, 0.60104, 0.561759", \
                            "0.964326, 0.948794, 0.866954, 0.779218, 0.716672, 0.619927, 0.580195", \
                            "1.05049, 1.03542, 0.952699, 0.864963, 0.802417, 0.705298, 0.666325", \
                            "1.20876, 1.19149, 1.11156, 1.02384, 0.961356, 0.864589, 0.825264", \
                            "1.41251, 1.39425, 1.31483, 1.22706, 1.1646, 1.06778, 1.02845", \
                            "1.57949, 1.5642, 1.47554, 1.38952, 1.33067, 1.23596, 1.19246", \
                            "1.70753, 1.69268, 1.60996, 1.52218, 1.4597, 1.36147, 1.32352" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.017407;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.989637, 1.00862, 1.07927, 1.14198, 1.16256, 1.1106, 1.02049", \
                            "0.984973, 1.00485, 1.07866, 1.13252, 1.14857, 1.0974, 1.02432", \
                            "0.926926, 0.951489, 1.02338, 1.08155, 1.09331, 1.04927, 0.96437", \
                            "0.850696, 0.871629, 0.948596, 1.0013, 1.01856, 0.977878, 0.881166", \
                            "0.776468, 0.80212, 0.866228, 0.928653, 0.942986, 0.898018, 0.808082", \
                            "0.754886, 0.781, 0.854843, 0.912021, 0.920227, 0.875798, 0.79068", \
                            "0.754897, 0.776633, 0.848562, 0.903067, 0.917356, 0.873334, 0.786434" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.151047, 0.16124, 0.270003, 0.488455, 0.769593, 1.09871, 1.48203", \
                            "0.145683, 0.152288, 0.261775, 0.480766, 0.761145, 1.08677, 1.47378", \
                            "0.0922163, 0.0983697, 0.207229, 0.426272, 0.706827, 1.03504, 1.41977", \
                            "0.016225, 0.023364, 0.132266, 0.350724, 0.631873, 0.956659, 1.34442", \
                            "0, 0, 0.055396, 0.275178, 0.554026, 0.882915, 1.2655", \
                            "0, 0, 0.036553, 0.255387, 0.536162, 0.864358, 1.24854", \
                            "0, 0, 0.031856, 0.250848, 0.531476, 0.859694, 1.24387" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "0.633127, 0.610731, 0.540012, 0.48015, 0.460317, 0.505263, 0.601524", \
                            "0.639375, 0.618596, 0.544456, 0.490776, 0.478159, 0.520531, 0.60016", \
                            "0.69872, 0.674784, 0.603218, 0.544434, 0.532279, 0.573705, 0.660781", \
                            "0.770924, 0.747582, 0.671825, 0.615615, 0.604021, 0.640607, 0.737583", \
                            "0.851411, 0.82654, 0.757878, 0.696861, 0.685421, 0.72864, 0.81444", \
                            "0.870265, 0.844536, 0.774257, 0.712954, 0.702152, 0.743831, 0.835197", \
                            "0.868714, 0.847044, 0.776655, 0.720654, 0.705507, 0.745085, 0.830236" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          index_2 ("0.0200, 0.1363, 0.5445, 1.3241, 2.5384, 4.2420, 6.4830");
                          values  ( \
                            "1.11164, 1.10062, 0.994202, 0.775533, 0.496034, 0.169149, 0", \
                            "1.1169, 1.10926, 1.00286, 0.784179, 0.504669, 0.180588, 0", \
                            "1.173, 1.1642, 1.05779, 0.839124, 0.559603, 0.232725, 0", \
                            "1.24497, 1.23659, 1.13018, 0.911515, 0.631994, 0.305118, 0", \
                            "1.32572, 1.31736, 1.21092, 0.992244, 0.712778, 0.385847, 0.00319", \
                            "1.34189, 1.3343, 1.2279, 1.00923, 0.729707, 0.402831, 0.020174", \
                            "1.34409, 1.33672, 1.2303, 1.01164, 0.732094, 0.405218, 0.022561" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.000122169;
}
}
