/*
 * 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__tt_025C_5v00) {
        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         : 25;
        nom_voltage             : 5.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         : 1.547;
        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, 5.0);
         voltage_map (VSS, 0.00);
         operating_conditions(tt_5p0v_25C) {
                process       : 1;
                temperature   : 25;
                voltage       : 5.0;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : tt_5p0v_25C;
         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      : 1.119;
                  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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
			  index_2 ("0.01, 0.02994, 0.09995, 0.2336, 0.4419, 0.7342, 1.119");
                          values  ( \
                            "4.33896, 4.35132, 4.40988, 4.51488, 4.66608, 4.86756, 5.13084", \
                            "4.34136, 4.35672, 4.41456, 4.51344, 4.66164, 4.86408, 5.13312", \
                            "4.34544, 4.36488, 4.4232, 4.52328, 4.67148, 4.8756, 5.14512", \
                            "4.34772, 4.36932, 4.42752, 4.52484, 4.67412, 4.87764, 5.14692", \
                            "4.36032, 4.37544, 4.43244, 4.53564, 4.68432, 4.88616, 5.15808", \
                            "4.36296, 4.38216, 4.4382, 4.53948, 4.68804, 4.89228, 5.16204", \
                            "4.35372, 4.37304, 4.43364, 4.53216, 4.6782, 4.88568, 5.14992" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.01, 0.02994, 0.09995, 0.2336, 0.4419, 0.7342, 1.119");
                          values  ( \
  	                     "0.167808, 0.194952, 0.293964, 0.472872, 0.761352, 1.18285, 1.73856" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.01, 0.02994, 0.09995, 0.2336, 0.4419, 0.7342, 1.119");
                          values  ( \
                            "4.48224, 4.49652, 4.55232, 4.65072, 4.77528, 4.92168, 5.11008", \
                            "4.48332, 4.50084, 4.5576, 4.65012, 4.7688, 4.92072, 5.11428", \
                            "4.48908, 4.50816, 4.56792, 4.65564, 4.77864, 4.93116, 5.12376", \
                            "4.49136, 4.51068, 4.57248, 4.65984, 4.78164, 4.93344, 5.12652", \
                            "4.50468, 4.5198, 4.575, 4.67088, 4.791, 4.94136, 5.13912", \
                            "4.50516, 4.52556, 4.58376, 4.67616, 4.79544, 4.94724, 5.13996", \
                            "4.497, 4.51572, 4.5768, 4.6668, 4.7856, 4.941, 5.12892" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.01, 0.02994, 0.09995, 0.2336, 0.4419, 0.7342, 1.119");
                          values  ( \
                            "0.174024, 0.199356, 0.261744, 0.381132, 0.545808, 0.787848, 1.10224" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.296201;
                  clock                : true;
                  max_transition       : 1.547;
                  min_pulse_width_high : 2.231475;
                  min_pulse_width_low  : 2.53974;
                  min_period           : 5.74725;

/* 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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                values  ("859.2, 859.2, 859.2, 859.2, 859.2, 859.2, 859.2");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                values  ("859.2, 859.2, 859.2, 859.2, 859.2, 859.2, 859.2");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                values  ("0.00013216, 0.00013216, 0.00013216, 0.00013216, 0.00013216, 0.00013216, 0.00013216");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                values  ("0.00013216, 0.00013216, 0.00013216, 0.00013216, 0.00013216, 0.00013216, 0.00013216");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                values  ("770.85, 770.85, 770.85, 770.85, 770.85, 770.85, 770.85");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                values  ("770.85, 770.85, 770.85, 770.85, 770.85, 770.85, 770.85");
              }
             }
          }

          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.0176988;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.435171, 0.430936, 0.423456, 0.43043, 0.454883, 0.491634, 0.520333", \
                            "0.434071, 0.429264, 0.422466, 0.429517, 0.453794, 0.484033, 0.520949", \
                            "0.433598, 0.428494, 0.421476, 0.428406, 0.450923, 0.473385, 0.507518", \
                            "0.432982, 0.428483, 0.421256, 0.42834, 0.453695, 0.473176, 0.493779", \
                            "0.43307, 0.428494, 0.420937, 0.427999, 0.4488, 0.472846, 0.493944", \
                            "0.432784, 0.427548, 0.420805, 0.427493, 0.448272, 0.472582, 0.493185", \
                            "0.432861, 0.427625, 0.420409, 0.427471, 0.447931, 0.472318, 0.493537" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.405812, 0.408276, 0.418506, 0.443531, 0.495495, 0.55847, 0.629145", \
                            "0.404888, 0.407198, 0.417571, 0.442431, 0.494483, 0.557458, 0.628144", \
                            "0.40392, 0.406274, 0.416515, 0.441738, 0.493053, 0.55517, 0.627176", \
                            "0.403788, 0.406362, 0.416328, 0.441254, 0.492877, 0.554972, 0.626967", \
                            "0.403205, 0.405735, 0.415822, 0.440913, 0.492954, 0.557018, 0.626626", \
                            "0.403029, 0.40546, 0.4158, 0.440935, 0.49269, 0.555687, 0.626373", \
                            "0.402919, 0.405196, 0.415525, 0.44066, 0.492415, 0.554092, 0.624921" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "1.10821, 1.11244, 1.11991, 1.11295, 1.08855, 1.06578, 1.0474", \
                            "1.1134, 1.11821, 1.125, 1.11795, 1.09368, 1.07374, 1.05203", \
                            "1.12774, 1.13285, 1.13986, 1.13293, 1.11042, 1.08796, 1.06736", \
                            "1.15423, 1.15873, 1.16596, 1.15887, 1.13352, 1.11403, 1.09342", \
                            "1.19512, 1.19969, 1.20725, 1.20019, 1.17938, 1.15534, 1.13423", \
                            "1.22751, 1.23275, 1.23949, 1.23281, 1.21202, 1.18773, 1.16712", \
                            "1.25914, 1.26437, 1.2716, 1.26454, 1.24407, 1.21969, 1.19908" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "1.13756, 1.1351, 1.12487, 1.09985, 1.04788, 0.984896, 0.914221", \
                            "1.14258, 1.14027, 1.1299, 1.10504, 1.05299, 0.990011, 0.919325", \
                            "1.15742, 1.15507, 1.14483, 1.1196, 1.06829, 1.00617, 0.934164", \
                            "1.18342, 1.18085, 1.17088, 1.14595, 1.09434, 1.03223, 0.960245", \
                            "1.22498, 1.22245, 1.21237, 1.18727, 1.13523, 1.07117, 1.00156", \
                            "1.25728, 1.25484, 1.2445, 1.21937, 1.16761, 1.10462, 1.03393", \
                            "1.28909, 1.28678, 1.27644, 1.25135, 1.19959, 1.13792, 1.06709" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0496735;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.592042, 0.596134, 0.607849, 0.633974, 0.678634, 0.734019, 0.79035", \
                            "0.588511, 0.593076, 0.604516, 0.632159, 0.675312, 0.732347, 0.788689", \
                            "0.577082, 0.580602, 0.592064, 0.618673, 0.662651, 0.719697, 0.775181", \
                            "0.550737, 0.554224, 0.566555, 0.594418, 0.63855, 0.69355, 0.751388", \
                            "0.506374, 0.511027, 0.522511, 0.548757, 0.59345, 0.64988, 0.706541", \
                            "0.467984, 0.472417, 0.483505, 0.511676, 0.554763, 0.611578, 0.667018", \
                            "0.431024, 0.435644, 0.446578, 0.473286, 0.517968, 0.57475, 0.630058" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.62997, 0.633622, 0.652201, 0.691196, 0.757251, 0.849068, 0.953876", \
                            "0.626736, 0.630311, 0.648736, 0.687929, 0.753907, 0.8448, 0.951016", \
                            "0.614295, 0.617551, 0.636174, 0.675598, 0.74327, 0.832788, 0.938091", \
                            "0.588643, 0.592691, 0.611017, 0.649902, 0.717761, 0.807741, 0.912593", \
                            "0.544797, 0.548471, 0.566357, 0.605869, 0.67188, 0.763708, 0.868538", \
                            "0.506297, 0.509674, 0.528077, 0.567215, 0.633611, 0.72512, 0.829917", \
                            "0.469106, 0.472538, 0.491249, 0.529045, 0.596442, 0.688226, 0.793628" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.828894, 0.827673, 0.816904, 0.790383, 0.759693, 0.734019, 0.714857", \
                            "0.831897, 0.831094, 0.820182, 0.793463, 0.762894, 0.737099, 0.718916", \
                            "0.834702, 0.833569, 0.822734, 0.797049, 0.765666, 0.739904, 0.721116", \
                            "0.836913, 0.836066, 0.824901, 0.798457, 0.767261, 0.741906, 0.723382", \
                            "0.846626, 0.845449, 0.834537, 0.807807, 0.777348, 0.751421, 0.733865", \
                            "0.848045, 0.846978, 0.836308, 0.809578, 0.778899, 0.753313, 0.734536", \
                            "0.84161, 0.840576, 0.829697, 0.802978, 0.772398, 0.746867, 0.72809" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.456016, 0.453904, 0.433037, 0.39457, 0.328977, 0.245101, 0.140307", \
                            "0.459844, 0.457347, 0.43846, 0.396341, 0.332717, 0.251548, 0.145013", \
                            "0.462099, 0.458964, 0.440902, 0.399014, 0.33308, 0.250841, 0.146285", \
                            "0.466895, 0.462473, 0.443267, 0.402996, 0.335995, 0.252954, 0.148587", \
                            "0.474551, 0.470998, 0.453057, 0.41239, 0.347039, 0.261555, 0.157792", \
                            "0.519288, 0.516373, 0.49731, 0.458469, 0.389279, 0.299871, 0.200858", \
                            "0.575641, 0.572044, 0.55363, 0.514789, 0.445841, 0.356235, 0.256696" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00784667;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0, 0, 0, 0, 0, 0, 0.01738", \
                            "0, 0, 0, 0, 0, 0, 0.012826", \
                            "0, 0, 0, 0, 0, 0, 0.010505", \
                            "0, 0, 0, 0, 0, 0, 0.007733", \
                            "0, 0, 0, 0, 0, 0, 0", \
                            "0, 0, 0, 0, 0, 0, 0", \
                            "0, 0, 0, 0, 0, 0, 0.002772" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.271942, 0.275088, 0.296549, 0.334895, 0.400345, 0.484352, 0.589402", \
                            "0.270437, 0.272291, 0.291665, 0.333311, 0.396935, 0.478698, 0.584463", \
                            "0.267154, 0.269927, 0.288508, 0.329538, 0.395285, 0.477752, 0.582153", \
                            "0.261292, 0.266269, 0.285681, 0.326007, 0.392029, 0.47575, 0.580107", \
                            "0.253979, 0.257474, 0.275627, 0.316096, 0.381205, 0.466147, 0.570471", \
                            "0.252503, 0.255201, 0.274164, 0.314765, 0.38005, 0.464827, 0.568524", \
                            "0.25903, 0.26091, 0.280896, 0.322564, 0.385748, 0.469502, 0.574024" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.828894, 0.827992, 0.81719, 0.791362, 0.760573, 0.734019, 0.71511", \
                            "0.831897, 0.831248, 0.820435, 0.794607, 0.763818, 0.737099, 0.718916", \
                            "0.834702, 0.833767, 0.822954, 0.797126, 0.766337, 0.739904, 0.721116", \
                            "0.836913, 0.836066, 0.825253, 0.799425, 0.768647, 0.741906, 0.723382", \
                            "0.846626, 0.845548, 0.834735, 0.808907, 0.778118, 0.751421, 0.733865", \
                            "0.848045, 0.847385, 0.836572, 0.810744, 0.779955, 0.753313, 0.734536", \
                            "0.84161, 0.840719, 0.829906, 0.804078, 0.773289, 0.746867, 0.72809" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.456104, 0.453959, 0.433125, 0.394625, 0.328977, 0.24522, 0.140454", \
                            "0.459844, 0.457347, 0.43846, 0.396341, 0.332717, 0.251548, 0.145013", \
                            "0.462154, 0.458964, 0.440902, 0.399014, 0.33308, 0.251258, 0.146285", \
                            "0.466895, 0.462473, 0.443267, 0.402996, 0.335995, 0.253002, 0.148587", \
                            "0.474573, 0.470998, 0.453057, 0.41239, 0.347039, 0.261907, 0.157792", \
                            "0.477466, 0.473374, 0.454113, 0.414172, 0.348711, 0.264317, 0.159833", \
                            "0.468523, 0.467434, 0.447909, 0.405878, 0.341924, 0.258012, 0.153553" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0345188;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.536998, 0.531641, 0.529408, 0.535942, 0.568601, 0.602668, 0.630817", \
                            "0.533819, 0.529551, 0.525547, 0.534523, 0.565763, 0.594495, 0.624844", \
                            "0.530101, 0.524557, 0.522522, 0.531212, 0.559823, 0.592856, 0.627308", \
                            "0.527065, 0.522467, 0.520179, 0.528913, 0.557007, 0.58982, 0.625284", \
                            "0.518342, 0.514239, 0.510972, 0.518221, 0.549615, 0.578336, 0.615109", \
                            "0.515471, 0.512072, 0.508354, 0.516065, 0.542927, 0.575938, 0.613602", \
                            "0.523457, 0.519189, 0.515119, 0.524172, 0.553696, 0.584969, 0.619773" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.702658, 0.704154, 0.71632, 0.74536, 0.796521, 0.863599, 0.949454", \
                            "0.699743, 0.700689, 0.713097, 0.742511, 0.79343, 0.85888, 0.946726", \
                            "0.69597, 0.697565, 0.709588, 0.739211, 0.788799, 0.85503, 0.943162", \
                            "0.693605, 0.695035, 0.706937, 0.736043, 0.78782, 0.852115, 0.940467", \
                            "0.684123, 0.685795, 0.697389, 0.726451, 0.777832, 0.843062, 0.930578", \
                            "0.681659, 0.68288, 0.696003, 0.724075, 0.776017, 0.840675, 0.928576", \
                            "0.68871, 0.690129, 0.701877, 0.731214, 0.781869, 0.847264, 0.932481" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.527241, 0.530761, 0.533709, 0.531751, 0.531762, 0.530871, 0.529892", \
                            "0.52932, 0.532895, 0.535854, 0.532455, 0.533907, 0.533203, 0.532565", \
                            "0.541849, 0.545413, 0.548361, 0.546425, 0.546414, 0.545732, 0.544544", \
                            "0.568029, 0.571516, 0.574508, 0.571109, 0.57277, 0.571857, 0.570636", \
                            "0.609785, 0.613338, 0.616297, 0.612953, 0.614361, 0.613657, 0.613019", \
                            "0.650617, 0.65417, 0.65714, 0.653741, 0.655193, 0.654489, 0.653312", \
                            "0.686301, 0.689865, 0.692824, 0.689425, 0.690877, 0.690173, 0.688952" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.541574, 0.539275, 0.527175, 0.509927, 0.506176, 0.51249, 0.520707", \
                            "0.543708, 0.541618, 0.529309, 0.512072, 0.508321, 0.514195, 0.522841", \
                            "0.556413, 0.553916, 0.541827, 0.524579, 0.521422, 0.526042, 0.535359", \
                            "0.582362, 0.579975, 0.567952, 0.550715, 0.547558, 0.552178, 0.561495", \
                            "0.624151, 0.621852, 0.609752, 0.592515, 0.588764, 0.593978, 0.603284", \
                            "0.664994, 0.662629, 0.650584, 0.633347, 0.629596, 0.635899, 0.644127", \
                            "0.700678, 0.698368, 0.686268, 0.669031, 0.665291, 0.670956, 0.679811" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0165528;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.489214, 0.494032, 0.504383, 0.514767, 0.510873, 0.492613, 0.455279", \
                            "0.486453, 0.487784, 0.5005, 0.510851, 0.506, 0.488213, 0.450659", \
                            "0.48367, 0.487949, 0.4972, 0.507496, 0.504955, 0.485562, 0.447942", \
                            "0.478401, 0.484198, 0.495451, 0.506506, 0.501413, 0.48312, 0.445016", \
                            "0.470976, 0.475574, 0.485287, 0.495792, 0.490633, 0.473187, 0.435963", \
                            "0.468105, 0.472758, 0.484682, 0.493141, 0.489566, 0.471592, 0.433235", \
                            "0.476036, 0.47971, 0.488708, 0.500764, 0.496331, 0.477785, 0.440814" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.123371, 0.122927, 0.140974, 0.191029, 0.269281, 0.370645, 0.500654", \
                            "0.120003, 0.120086, 0.137804, 0.18863, 0.265797, 0.368005, 0.497574", \
                            "0.11758, 0.116816, 0.13451, 0.18531, 0.262939, 0.36498, 0.494208", \
                            "0.113442, 0.113651, 0.132216, 0.1804, 0.259961, 0.361724, 0.491678", \
                            "0.106263, 0.10471, 0.122416, 0.172471, 0.25038, 0.352858, 0.48235", \
                            "0.10365, 0.101247, 0.120039, 0.168459, 0.248034, 0.3498, 0.479765", \
                            "0.110651, 0.108219, 0.126817, 0.176068, 0.254785, 0.356554, 0.486728" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.451759, 0.449251, 0.438988, 0.42812, 0.431882, 0.449933, 0.48741", \
                            "0.456445, 0.453178, 0.440638, 0.430386, 0.435182, 0.454047, 0.490204", \
                            "0.459536, 0.456005, 0.446622, 0.435446, 0.439648, 0.458711, 0.491656", \
                            "0.462198, 0.457358, 0.448294, 0.436832, 0.440352, 0.46112, 0.495638", \
                            "0.469788, 0.468853, 0.456577, 0.446644, 0.451627, 0.46937, 0.506825", \
                            "0.473121, 0.469898, 0.459349, 0.449493, 0.454267, 0.471449, 0.50897", \
                            "0.466587, 0.463573, 0.451825, 0.441892, 0.44759, 0.465894, 0.502348" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          index_2 ("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547");
                          values  ( \
                            "0.643247, 0.643577, 0.625592, 0.575245, 0.497189, 0.396198, 0.267705", \
                            "0.646371, 0.646591, 0.628529, 0.578798, 0.50061, 0.398706, 0.270644", \
                            "0.649836, 0.651002, 0.632929, 0.583209, 0.504537, 0.403117, 0.275055", \
                            "0.652696, 0.652894, 0.634832, 0.585112, 0.506924, 0.405449, 0.276958", \
                            "0.660759, 0.662662, 0.644611, 0.594264, 0.516692, 0.414348, 0.286594", \
                            "0.663575, 0.665236, 0.647174, 0.597454, 0.519266, 0.417791, 0.289289", \
                            "0.656513, 0.658449, 0.640123, 0.590403, 0.512204, 0.410729, 0.282106" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.00013216;
}
}
