/*
 * 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__sram64x8m8wm1
 *      Technology                 : GF 180nm 5V Green
 *
 *      ---------
 *      Pin name:
 *      ---------
 *      Input Pins : CLK CEN GWEN WEN[7:0] A[5: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__sram64x8m8wm1__ff_n40C_1v98) {
        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             : 1.98;
        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         : 2.315;
        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, 1.98);
         voltage_map (VSS, 0.00);
         operating_conditions(ff_1p98v_m40C) {
                process       : 1;
                temperature   : -40;
                voltage       : 1.98;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : ff_1p98v_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 : 6;
                bit_from  : 5;
                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__sram64x8m8wm1) {
        area             : 100571.5568;
        dont_use         : TRUE;
        dont_touch       : TRUE;
        interface_timing : TRUE;
        memory() {
                type          : ram;
                address_width : 6;
                word_width    : 8;
        }

                 bus(Q)   {
                  bus_type             : Q_BUS;
                  direction            : output;
                  max_capacitance      : 0.973;
                  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.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
			  index_2 ("0.01, 0.02732, 0.08813, 0.2042, 0.3851, 0.639, 0.973");
                          values  ( \
                            "7.44768, 7.47024, 7.59192, 7.75296, 8.00532, 8.33952, 8.81004", \
                            "7.43784, 7.47432, 7.58016, 7.76196, 8.0058, 8.3442, 8.80344", \
                            "7.47504, 7.51692, 7.62336, 7.7916, 8.04372, 8.39352, 8.829", \
                            "7.5174, 7.54956, 7.65948, 7.8252, 8.08188, 8.42508, 8.88048", \
                            "7.572, 7.60356, 7.70988, 7.88532, 8.13924, 8.4822, 8.94024", \
                            "7.61832, 7.6548, 7.7676, 7.93704, 8.1858, 8.52816, 8.98356", \
                            "7.67712, 7.71156, 7.82112, 8.00016, 8.25096, 8.5878, 9.0432" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.01, 0.02732, 0.08813, 0.2042, 0.3851, 0.639, 0.973");
                          values  ( \
  	                     "0.256512, 0.301368, 0.45246, 0.734784, 1.18332, 1.84788, 2.71344" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.01, 0.02732, 0.08813, 0.2042, 0.3851, 0.639, 0.973");
                          values  ( \
                            "7.82052, 7.839, 7.94424, 8.06232, 8.2224, 8.40228, 8.65932", \
                            "7.81572, 7.84584, 7.93236, 8.07432, 8.2188, 8.41092, 8.6556", \
                            "7.84344, 7.8786, 7.97544, 8.10336, 8.25768, 8.44716, 8.679", \
                            "7.88592, 7.91868, 8.00964, 8.13336, 8.29344, 8.48904, 8.72532", \
                            "7.93752, 7.97328, 8.06244, 8.18988, 8.35524, 8.54544, 8.78772", \
                            "7.99116, 8.02116, 8.1216, 8.24472, 8.40288, 8.59284, 8.82864", \
                            "8.05404, 8.08284, 8.17632, 8.31264, 8.47176, 8.64696, 8.88648" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.01, 0.02732, 0.08813, 0.2042, 0.3851, 0.639, 0.973");
                          values  ( \
                            "0.252012, 0.295536, 0.386412, 0.520332, 0.72252, 1.012, 1.38276" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.269276;
                  clock                : true;
                  max_transition       : 2.315;
                  min_pulse_width_high : 4.948095;
                  min_pulse_width_low  : 4.736925;
                  min_period           : 10.11168;

/* 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.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                values  ("110.484, 110.484, 110.484, 110.484, 110.484, 110.484, 110.484");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                values  ("110.484, 110.484, 110.484, 110.484, 110.484, 110.484, 110.484");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                values  ("2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                values  ("2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05, 2.05009e-05");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                values  ("100.495, 100.495, 100.495, 100.495, 100.495, 100.495, 100.495");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                values  ("100.495, 100.495, 100.495, 100.495, 100.495, 100.495, 100.495");
              }
             }
          }

          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.0167148;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.799073, 0.791703, 0.790317, 0.835483, 0.939268, 1.09337, 1.25111", \
                            "0.786709, 0.782683, 0.780373, 0.825528, 0.929313, 1.08342, 1.24116", \
                            "0.755106, 0.747516, 0.747868, 0.793034, 0.896819, 1.05093, 1.20866", \
                            "0.706915, 0.702207, 0.69773, 0.742951, 0.838035, 0.989868, 1.14792", \
                            "0.70719, 0.700601, 0.699347, 0.742775, 0.837859, 0.969463, 1.08209", \
                            "0.706596, 0.699446, 0.699204, 0.742621, 0.837716, 0.969309, 1.06754", \
                            "0.706508, 0.699127, 0.699908, 0.742533, 0.83776, 0.955768, 1.05199" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.653807, 0.662838, 0.692428, 0.763169, 0.88385, 1.05678, 1.26009", \
                            "0.65065, 0.658086, 0.689337, 0.758846, 0.880066, 1.05339, 1.25015", \
                            "0.650474, 0.657921, 0.689161, 0.75867, 0.87989, 1.05322, 1.24958", \
                            "0.650001, 0.657503, 0.688611, 0.758208, 0.879428, 1.05276, 1.24912", \
                            "0.650276, 0.657261, 0.688446, 0.758021, 0.879252, 1.05256, 1.24893", \
                            "0.649715, 0.657107, 0.688303, 0.757878, 0.879109, 1.05243, 1.24879", \
                            "0.649715, 0.657107, 0.68827, 0.75779, 0.87901, 1.05234, 1.2487" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "2.00123, 2.00926, 2.00904, 1.96559, 1.87055, 1.73899, 1.64076", \
                            "2.00552, 2.01003, 2.01113, 1.96768, 1.87264, 1.74097, 1.64285", \
                            "2.04226, 2.04941, 2.04963, 2.00618, 1.91114, 1.77947, 1.68135", \
                            "2.10914, 2.11387, 2.11838, 2.07317, 1.97802, 1.84646, 1.74823", \
                            "2.20803, 2.21463, 2.21584, 2.17239, 2.07735, 1.94568, 1.84756", \
                            "2.34553, 2.35268, 2.3529, 2.30945, 2.21441, 2.08274, 1.98451", \
                            "2.48237, 2.48974, 2.48897, 2.4464, 2.35114, 2.23311, 2.13697" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "2.05854, 2.05117, 2.01993, 1.95041, 1.82919, 1.65583, 1.45948", \
                            "2.06063, 2.05315, 2.02191, 1.95239, 1.83117, 1.65792, 1.46157", \
                            "2.09913, 2.09176, 2.06052, 1.991, 1.86978, 1.69642, 1.50007", \
                            "2.16612, 2.15853, 2.12751, 2.05788, 1.93666, 1.7633, 1.56695", \
                            "2.2649, 2.25797, 2.22673, 2.15721, 2.03588, 1.86263, 1.66628", \
                            "2.4024, 2.39503, 2.36379, 2.29416, 2.17294, 1.99969, 1.80334", \
                            "2.53924, 2.53176, 2.50063, 2.43111, 2.30989, 2.13653, 1.94018" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0441618;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "1.00397, 1.01665, 1.04481, 1.10547, 1.20429, 1.31659, 1.43088", \
                            "0.991584, 1.00088, 1.03312, 1.09359, 1.19206, 1.30431, 1.41878", \
                            "0.967593, 0.976723, 1.00839, 1.06903, 1.1679, 1.28017, 1.39447", \
                            "0.902946, 0.915662, 0.943899, 1.00455, 1.10342, 1.21622, 1.33001", \
                            "0.81939, 0.831358, 0.860926, 0.920986, 1.01984, 1.13347, 1.24713", \
                            "0.735427, 0.7447, 0.776534, 0.837034, 0.935231, 1.04816, 1.16269", \
                            "0.673563, 0.681538, 0.713218, 0.773872, 0.87274, 0.984995, 1.10002" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "1.18814, 1.19812, 1.23835, 1.31156, 1.44408, 1.6225, 1.83997", \
                            "1.17646, 1.18639, 1.22278, 1.29929, 1.43187, 1.61018, 1.82765", \
                            "1.15171, 1.16225, 1.20331, 1.27513, 1.40767, 1.58609, 1.80356", \
                            "1.08782, 1.09778, 1.13743, 1.21065, 1.34321, 1.52163, 1.7391", \
                            "1.00423, 1.01655, 1.05057, 1.12708, 1.25962, 1.43979, 1.6555", \
                            "0.920282, 0.932602, 0.969914, 1.04313, 1.17548, 1.35575, 1.57157", \
                            "0.857428, 0.86944, 0.906752, 0.979968, 1.11251, 1.29263, 1.50832" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "1.3035, 1.29616, 1.26553, 1.20487, 1.12552, 1.06055, 1.00511", \
                            "1.3046, 1.29841, 1.26566, 1.2061, 1.12566, 1.0607, 1.00521", \
                            "1.32825, 1.32297, 1.29028, 1.22962, 1.15027, 1.08532, 1.02988", \
                            "1.36422, 1.35575, 1.32528, 1.26458, 1.18523, 1.12041, 1.06483", \
                            "1.41647, 1.408, 1.37753, 1.31691, 1.23756, 1.17246, 1.11531", \
                            "1.46597, 1.45981, 1.42604, 1.36642, 1.28708, 1.21978, 1.16607", \
                            "1.51679, 1.51041, 1.47774, 1.41702, 1.33771, 1.27272, 1.21544" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.669097, 0.658361, 0.623238, 0.538241, 0.417285, 0.238611, 0.040909", \
                            "0.669251, 0.65263, 0.62337, 0.538395, 0.417461, 0.238662, 0.041052", \
                            "0.693858, 0.677248, 0.64691, 0.563255, 0.44209, 0.263309, 0.065659", \
                            "0.728904, 0.712195, 0.681868, 0.59796, 0.477048, 0.298268, 0.100617", \
                            "0.781132, 0.764434, 0.734173, 0.649583, 0.529364, 0.353639, 0.152923", \
                            "0.830643, 0.813945, 0.783805, 0.70004, 0.578853, 0.40315, 0.202442", \
                            "0.881111, 0.864655, 0.834306, 0.750398, 0.629497, 0.453772, 0.253059" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00700372;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0, 0, 0, 0, 0.045034, 0.113004, 0.169147", \
                            "0, 0, 0, 0, 0.043285, 0.111221, 0.167363", \
                            "0, 0, 0, 0, 0.018711, 0.086658, 0.142794", \
                            "0, 0, 0, 0, 0, 0.05357, 0.109714", \
                            "0, 0, 0, 0, 0, 0.001386, 0.05753", \
                            "0, 0, 0, 0, 0, 0, 0.008349", \
                            "0, 0, 0, 0, 0, 0, 0" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.500764, 0.509762, 0.547668, 0.630355, 0.753665, 0.929588, 1.1277", \
                            "0.498993, 0.517165, 0.545897, 0.628595, 0.752147, 0.927872, 1.12593", \
                            "0.475167, 0.492591, 0.521323, 0.6039, 0.7271, 0.902495, 1.10135", \
                            "0.441672, 0.45958, 0.488235, 0.570944, 0.694496, 0.870353, 1.06807", \
                            "0.390038, 0.407374, 0.436062, 0.517957, 0.642312, 0.814352, 1.01632", \
                            "0.339955, 0.354266, 0.386771, 0.468765, 0.59312, 0.76472, 0.966922", \
                            "0.291543, 0.308544, 0.337304, 0.41921, 0.54307, 0.714978, 0.916927" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "1.30792, 1.29878, 1.26896, 1.20823, 1.13304, 1.06055, 1.00511", \
                            "1.30804, 1.2989, 1.26909, 1.20835, 1.13318, 1.0607, 1.00521", \
                            "1.33265, 1.32352, 1.2937, 1.23296, 1.15778, 1.08532, 1.02988", \
                            "1.36763, 1.3585, 1.32869, 1.26794, 1.19275, 1.12041, 1.06483", \
                            "1.41999, 1.41086, 1.38105, 1.32022, 1.24509, 1.17246, 1.11664", \
                            "1.46949, 1.46036, 1.43055, 1.36972, 1.29458, 1.2211, 1.16612", \
                            "1.52009, 1.51096, 1.48115, 1.42043, 1.34519, 1.27272, 1.21677" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.669097, 0.658361, 0.623238, 0.538241, 0.417285, 0.238611, 0.041591", \
                            "0.669251, 0.65263, 0.62337, 0.538395, 0.417461, 0.238662, 0.041756", \
                            "0.693858, 0.677248, 0.64691, 0.563255, 0.44209, 0.263309, 0.066363", \
                            "0.728904, 0.712195, 0.681868, 0.59796, 0.477048, 0.298268, 0.101343", \
                            "0.781132, 0.764434, 0.734173, 0.649583, 0.529364, 0.353639, 0.153658", \
                            "0.830643, 0.813945, 0.783805, 0.70004, 0.578853, 0.40315, 0.20316", \
                            "0.881111, 0.864655, 0.834306, 0.750398, 0.629497, 0.453772, 0.253801" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0319286;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "1.01628, 1.01552, 1.02306, 1.0628, 1.15176, 1.29752, 1.44903", \
                            "1.01361, 1.01372, 1.01922, 1.06105, 1.15091, 1.29609, 1.44419", \
                            "0.990033, 0.991265, 0.998591, 1.03612, 1.12717, 1.27199, 1.42461", \
                            "0.959871, 0.957616, 0.969364, 1.00428, 1.0925, 1.23207, 1.3904", \
                            "0.90684, 0.900031, 0.911141, 0.950895, 1.04121, 1.18438, 1.33628", \
                            "0.852632, 0.852379, 0.860816, 0.899635, 0.98967, 1.13368, 1.28275", \
                            "0.801955, 0.803462, 0.808423, 0.850377, 0.939433, 1.08481, 1.22903" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "1.12435, 1.12653, 1.15418, 1.23105, 1.35047, 1.52328, 1.73327", \
                            "1.1162, 1.12974, 1.15331, 1.23017, 1.3497, 1.52339, 1.73415", \
                            "1.09772, 1.10505, 1.12972, 1.20284, 1.32594, 1.50128, 1.70918", \
                            "1.06202, 1.07127, 1.09598, 1.17222, 1.29292, 1.46201, 1.67497", \
                            "1.0142, 1.02025, 1.0437, 1.11933, 1.2399, 1.41119, 1.62448", \
                            "0.962181, 0.963061, 0.991012, 1.06691, 1.18432, 1.35982, 1.57102", \
                            "0.893915, 0.916003, 0.941655, 1.01846, 1.13793, 1.31176, 1.52273" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.758252, 0.763092, 0.746768, 0.7029, 0.628166, 0.534721, 0.426558", \
                            "0.770033, 0.767382, 0.756877, 0.713009, 0.638264, 0.544819, 0.436689", \
                            "0.795223, 0.792572, 0.782067, 0.738188, 0.663454, 0.570009, 0.461879", \
                            "0.859639, 0.862796, 0.846164, 0.802615, 0.727969, 0.634425, 0.526295", \
                            "0.948288, 0.951401, 0.935132, 0.891253, 0.816519, 0.723074, 0.611226", \
                            "1.0734, 1.07007, 1.05955, 1.01568, 0.94094, 0.847495, 0.738661", \
                            "1.1863, 1.18945, 1.17313, 1.12926, 1.05453, 0.961081, 0.849222" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.838552, 0.830907, 0.798578, 0.738881, 0.674564, 0.605473, 0.537702", \
                            "0.849651, 0.841225, 0.808676, 0.74899, 0.684662, 0.614526, 0.547415", \
                            "0.874841, 0.866415, 0.833866, 0.77418, 0.709852, 0.639705, 0.572154", \
                            "0.938377, 0.930688, 0.898282, 0.838596, 0.774268, 0.704121, 0.637406", \
                            "1.02715, 1.01948, 0.986931, 0.927245, 0.862917, 0.79277, 0.726066", \
                            "1.15154, 1.14441, 1.11136, 1.05167, 0.987349, 0.917213, 0.849662", \
                            "1.26591, 1.25871, 1.22494, 1.16524, 1.10092, 1.03079, 0.963237" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0153038;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.936804, 0.942304, 0.97328, 1.02963, 1.05987, 1.06949, 1.0658", \
                            "0.935594, 0.948849, 0.974732, 1.02306, 1.05907, 1.06677, 1.05826", \
                            "0.908083, 0.919611, 0.948739, 1.00387, 1.0418, 1.04398, 1.04126", \
                            "0.880352, 0.886721, 0.918907, 0.963391, 1.00175, 1.01066, 1.00736", \
                            "0.826331, 0.836407, 0.86636, 0.914771, 0.955724, 0.957044, 0.953799", \
                            "0.770748, 0.782859, 0.814, 0.866382, 0.89903, 0.909062, 0.898414", \
                            "0.726374, 0.734613, 0.765611, 0.815969, 0.838068, 0.860134, 0.852874" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.189886, 0.189164, 0.223178, 0.301411, 0.425161, 0.603394, 0.79739", \
                            "0.188835, 0.188096, 0.222119, 0.300361, 0.424149, 0.602624, 0.796334", \
                            "0.165397, 0.164662, 0.198734, 0.27692, 0.400664, 0.579183, 0.772893", \
                            "0.131859, 0.130856, 0.164956, 0.243146, 0.366938, 0.545413, 0.738848", \
                            "0.079486, 0.078606, 0.112666, 0.19085, 0.314598, 0.493119, 0.686829", \
                            "0.026719, 0.025883, 0.059961, 0.138152, 0.261902, 0.440418, 0.633985", \
                            "0, 0, 0.010604, 0.088792, 0.212539, 0.39105, 0.584485" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "0.54912, 0.534039, 0.510268, 0.459382, 0.424501, 0.412049, 0.403788", \
                            "0.551089, 0.53889, 0.512347, 0.463441, 0.425293, 0.416108, 0.413006", \
                            "0.575124, 0.563684, 0.535733, 0.484836, 0.446688, 0.437514, 0.429264", \
                            "0.606276, 0.599907, 0.567325, 0.51876, 0.483879, 0.471438, 0.463177", \
                            "0.658812, 0.650012, 0.620642, 0.571087, 0.533159, 0.523985, 0.515724", \
                            "0.709511, 0.700678, 0.671209, 0.62128, 0.586795, 0.574475, 0.569811", \
                            "0.761486, 0.751905, 0.721468, 0.672892, 0.634755, 0.625944, 0.61732" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          index_2 ("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315");
                          values  ( \
                            "1.03909, 1.0416, 1.00568, 0.929555, 0.805662, 0.629057, 0.436183", \
                            "1.04316, 1.04565, 1.00975, 0.933614, 0.809721, 0.633127, 0.440242", \
                            "1.06456, 1.06702, 1.03115, 0.95502, 0.831127, 0.654522, 0.461648", \
                            "1.09838, 1.10098, 1.06506, 0.988933, 0.86504, 0.688446, 0.495561", \
                            "1.15101, 1.15349, 1.11761, 1.04148, 0.917587, 0.740982, 0.548108", \
                            "1.20155, 1.20402, 1.16811, 1.09198, 0.968088, 0.791494, 0.598609", \
                            "1.25263, 1.25509, 1.21921, 1.14308, 1.01918, 0.842578, 0.649704" \
                          )
                          }
                 }
        }
          cell_leakage_power : 2.050092e-05;
}
}
