/*
 * 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_3v30) {
        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             : 3.3;
        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         : 3.1779;
        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.3);
         voltage_map (VSS, 0.00);
         operating_conditions(tt_3p3v_25C) {
                process       : 1;
                temperature   : 25;
                voltage       : 3.3;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : tt_3p3v_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.0423;
                  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.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
			  index_2 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
                            "6.16956, 6.18804, 6.27888, 6.41724, 6.61992, 6.90432, 7.27656", \
                            "6.17076, 6.2004, 6.29028, 6.423, 6.63972, 6.91248, 7.28292", \
                            "6.19656, 6.22272, 6.30996, 6.45372, 6.64764, 6.93924, 7.30764", \
                            "6.22188, 6.23988, 6.31788, 6.47232, 6.6642, 6.9468, 7.32876", \
                            "6.23436, 6.26004, 6.3426, 6.50304, 6.69912, 6.98832, 7.36212", \
                            "6.25008, 6.28044, 6.36492, 6.49752, 6.70728, 6.98232, 7.36344", \
                            "6.2394, 6.25392, 6.34296, 6.48648, 6.69684, 6.97716, 7.33824" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
  	                     "0.22902, 0.270516, 0.401616, 0.64218, 1.04041, 1.59612, 2.33484" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
                            "6.417, 6.4374, 6.51828, 6.63612, 6.78768, 6.97464, 7.21308", \
                            "6.41688, 6.4446, 6.52248, 6.63756, 6.80724, 6.98352, 7.22328", \
                            "6.44436, 6.4686, 6.55056, 6.66816, 6.81504, 7.00884, 7.24092", \
                            "6.46212, 6.49428, 6.55728, 6.68844, 6.82464, 7.01856, 7.27044", \
                            "6.48288, 6.50532, 6.5826, 6.71832, 6.86484, 7.06092, 7.29912", \
                            "6.49488, 6.52704, 6.60504, 6.717, 6.87468, 7.0572, 7.2966", \
                            "6.48864, 6.50112, 6.579, 6.7026, 6.8622, 7.04676, 7.27248" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
                            "0.225528, 0.256824, 0.346536, 0.484368, 0.692532, 0.981636, 1.35192" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.291776;
                  clock                : true;
                  max_transition       : 3.1779;
                  min_pulse_width_high : 2.693535;
                  min_pulse_width_low  : 3.027885;
                  min_period           : 8.26017;

/* 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.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("342.144, 342.144, 342.144, 342.144, 342.144, 342.144, 342.144");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("342.144, 342.144, 342.144, 342.144, 342.144, 342.144, 342.144");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05, 5.74068e-05");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("310.2, 310.2, 310.2, 310.2, 310.2, 310.2, 310.2");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("310.2, 310.2, 310.2, 310.2, 310.2, 310.2, 310.2");
              }
             }
          }

          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.0177783;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.615582, 0.603482, 0.605308, 0.659263, 0.734778, 0.788898, 0.83402", \
                            "0.606804, 0.595078, 0.594726, 0.642697, 0.723932, 0.778008, 0.823174", \
                            "0.586443, 0.575806, 0.57706, 0.622204, 0.69421, 0.747494, 0.793353", \
                            "0.587026, 0.575872, 0.575938, 0.621764, 0.672903, 0.697455, 0.740894", \
                            "0.586113, 0.575487, 0.575619, 0.621434, 0.672573, 0.698357, 0.720082", \
                            "0.585046, 0.574695, 0.574926, 0.621192, 0.676643, 0.696872, 0.719829", \
                            "0.584771, 0.575091, 0.575795, 0.620389, 0.67639, 0.7238, 0.759968" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.54076, 0.549219, 0.583187, 0.665863, 0.788414, 0.926805, 1.07881", \
                            "0.540639, 0.548119, 0.582109, 0.661958, 0.78727, 0.925672, 1.07769", \
                            "0.540023, 0.546953, 0.580789, 0.66352, 0.784894, 0.924451, 1.07648", \
                            "0.537966, 0.546425, 0.580393, 0.660308, 0.785532, 0.924022, 1.07603", \
                            "0.538593, 0.546095, 0.580063, 0.66275, 0.78529, 0.923692, 1.07567", \
                            "0.537471, 0.545523, 0.579843, 0.662541, 0.785059, 0.92345, 1.07548", \
                            "0.538153, 0.545644, 0.579601, 0.662266, 0.784861, 0.923208, 1.07522" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.59214, 1.60336, 1.6027, 1.55749, 1.50425, 1.48115, 1.45882", \
                            "1.6005, 1.61161, 1.6115, 1.5719, 1.51195, 1.48896, 1.46652", \
                            "1.63438, 1.64505, 1.64373, 1.59863, 1.54539, 1.52295, 1.50007", \
                            "1.70808, 1.7193, 1.71919, 1.67332, 1.62228, 1.59764, 1.57476", \
                            "1.80114, 1.81181, 1.8117, 1.76583, 1.71468, 1.68894, 1.66716", \
                            "1.88034, 1.89068, 1.89046, 1.84415, 1.78871, 1.76847, 1.74559", \
                            "1.92753, 1.93721, 1.93644, 1.89189, 1.8359, 1.81566, 1.80521" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.64131, 1.63284, 1.59885, 1.51613, 1.39359, 1.25522, 1.10321", \
                            "1.64802, 1.64054, 1.60655, 1.52669, 1.4014, 1.26295, 1.11093", \
                            "1.6808, 1.67387, 1.6401, 1.55727, 1.43594, 1.29635, 1.14435", \
                            "1.75714, 1.74867, 1.71468, 1.63482, 1.50964, 1.37115, 1.21911", \
                            "1.84866, 1.84118, 1.80719, 1.72458, 1.60204, 1.46355, 1.31164", \
                            "1.92786, 1.91983, 1.88551, 1.80279, 1.68036, 1.54198, 1.38985", \
                            "1.97406, 1.96658, 1.9327, 1.84998, 1.72744, 1.58906, 1.43704" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0481872;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.824824, 0.834053, 0.86845, 0.936298, 1.03161, 1.12426, 1.20478", \
                            "0.815166, 0.824637, 0.858066, 0.927344, 1.02243, 1.11507, 1.1955", \
                            "0.784003, 0.793353, 0.827101, 0.896093, 0.991529, 1.08308, 1.16426", \
                            "0.713801, 0.723877, 0.756965, 0.825979, 0.921888, 1.01372, 1.09412", \
                            "0.640134, 0.650067, 0.683287, 0.752312, 0.848485, 0.938047, 1.02069", \
                            "0.585376, 0.594429, 0.626164, 0.69718, 0.792869, 0.884895, 0.965349", \
                            "0.54868, 0.557194, 0.591778, 0.660473, 0.756305, 0.848826, 0.922273" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.919215, 0.925672, 0.973709, 1.06767, 1.21681, 1.40107, 1.60644", \
                            "0.907654, 0.917169, 0.964535, 1.05962, 1.20759, 1.39337, 1.59907", \
                            "0.878911, 0.885852, 0.933207, 1.02718, 1.17428, 1.36213, 1.56783", \
                            "0.806795, 0.815133, 0.863137, 0.957308, 1.10623, 1.29201, 1.4971", \
                            "0.734074, 0.741708, 0.789778, 0.883685, 1.03281, 1.21711, 1.42373", \
                            "0.68002, 0.68871, 0.734316, 0.828465, 0.977416, 1.16201, 1.36895", \
                            "0.641069, 0.64988, 0.697939, 0.791879, 0.939114, 1.12681, 1.33067" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.12762, 1.11986, 1.08614, 1.02475, 0.980155, 0.93588, 0.920205", \
                            "1.13486, 1.12746, 1.09377, 1.03228, 0.987767, 0.943514, 0.92785", \
                            "1.15155, 1.14404, 1.11034, 1.04895, 1.00418, 0.962291, 0.944405", \
                            "1.17062, 1.16322, 1.12954, 1.06818, 1.01394, 0.981508, 0.963622", \
                            "1.1935, 1.18598, 1.15229, 1.09088, 1.03666, 1.00243, 0.986359", \
                            "1.20341, 1.19589, 1.16234, 1.10079, 1.05717, 1.01412, 0.996237", \
                            "1.18718, 1.17928, 1.1462, 1.08482, 1.04121, 0.998151, 0.981376" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.57816, 0.572627, 0.52217, 0.42724, 0.287537, 0.10919, 0", \
                            "0.585992, 0.581713, 0.529782, 0.435083, 0.295178, 0.116593, 0", \
                            "0.606584, 0.598235, 0.546293, 0.451407, 0.314534, 0.133129, 0", \
                            "0.622105, 0.615978, 0.565488, 0.471449, 0.330748, 0.152276, 0", \
                            "0.662343, 0.652663, 0.607816, 0.510477, 0.360327, 0.188722, 0", \
                            "0.752411, 0.743391, 0.699248, 0.601843, 0.451682, 0.279781, 0.0846428", \
                            "0.830027, 0.820325, 0.775456, 0.678062, 0.530222, 0.354827, 0.160879" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00764901;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0, 0, 0, 0, 0.005907, 0.044704, 0.05995", \
                            "0, 0, 0, 0, 0, 0.036982, 0.051788", \
                            "0, 0, 0, 0, 0, 0.017853, 0.034177", \
                            "0, 0, 0, 0, 0, 0, 0.014069", \
                            "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.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.388608, 0.396902, 0.447073, 0.540661, 0.681604, 0.860827, 1.05669", \
                            "0.379478, 0.386507, 0.438977, 0.532543, 0.674608, 0.853072, 1.05541", \
                            "0.359447, 0.368126, 0.421399, 0.516164, 0.653972, 0.83545, 1.03761", \
                            "0.341297, 0.350141, 0.401269, 0.495154, 0.636394, 0.815155, 1.01364", \
                            "0.322212, 0.329912, 0.38104, 0.475662, 0.616209, 0.794948, 0.992838", \
                            "0.309155, 0.315557, 0.368203, 0.462286, 0.603801, 0.782188, 0.984456", \
                            "0.323829, 0.332024, 0.383097, 0.477928, 0.616517, 0.796807, 0.993036" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.12762, 1.11986, 1.08725, 1.02605, 0.980155, 0.93588, 0.920205", \
                            "1.13486, 1.12746, 1.09491, 1.03369, 0.987767, 0.943514, 0.92785", \
                            "1.15155, 1.14404, 1.11141, 1.0502, 1.00418, 0.962291, 0.944405", \
                            "1.17062, 1.16322, 1.13064, 1.06942, 1.01812, 0.981508, 0.963622", \
                            "1.1935, 1.18598, 1.15344, 1.09222, 1.04092, 1.00243, 0.986359", \
                            "1.20341, 1.19589, 1.16323, 1.10202, 1.05717, 1.01412, 0.996237", \
                            "1.18718, 1.17928, 1.14729, 1.08608, 1.04121, 0.998151, 0.981376" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.578864, 0.572627, 0.52217, 0.427504, 0.287537, 0.10919, 0", \
                            "0.585992, 0.581713, 0.529782, 0.43538, 0.295178, 0.116593, 0", \
                            "0.607013, 0.598235, 0.546293, 0.45166, 0.314534, 0.133129, 0", \
                            "0.622842, 0.615978, 0.565488, 0.471768, 0.330748, 0.152276, 0", \
                            "0.6457, 0.638814, 0.588324, 0.49368, 0.353518, 0.175335, 0", \
                            "0.65417, 0.649627, 0.598136, 0.504218, 0.363561, 0.184975, 0", \
                            "0.638187, 0.632654, 0.58223, 0.487597, 0.349547, 0.168978, 0" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0345983;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.793144, 0.783948, 0.786731, 0.836385, 0.914133, 0.959211, 1.01685", \
                            "0.784278, 0.776875, 0.780065, 0.828916, 0.907797, 0.955581, 1.00598", \
                            "0.768735, 0.759341, 0.762487, 0.809446, 0.889988, 0.945142, 0.988614", \
                            "0.748605, 0.739321, 0.743578, 0.790933, 0.871343, 0.924671, 0.968847", \
                            "0.726803, 0.718113, 0.723074, 0.770407, 0.850564, 0.893607, 0.947485", \
                            "0.714758, 0.707047, 0.710083, 0.760474, 0.837749, 0.893332, 0.934989", \
                            "0.728706, 0.720621, 0.724757, 0.774103, 0.852797, 0.904486, 0.954602" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.95733, 0.963534, 0.996743, 1.08019, 1.21057, 1.35751, 1.51679", \
                            "0.950444, 0.953876, 0.991155, 1.07315, 1.2011, 1.35025, 1.51789", \
                            "0.932844, 0.935506, 0.972862, 1.05687, 1.18217, 1.33276, 1.49985", \
                            "0.913385, 0.917983, 0.953755, 1.0343, 1.16496, 1.31307, 1.4795", \
                            "0.891759, 0.898007, 0.932657, 1.01628, 1.1441, 1.28975, 1.46278", \
                            "0.877844, 0.884191, 0.921316, 1.0032, 1.13418, 1.28641, 1.44837", \
                            "0.893233, 0.899987, 0.934505, 1.01638, 1.14474, 1.29437, 1.45354" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.680779, 0.687863, 0.677963, 0.659571, 0.64999, 0.645535, 0.632511", \
                            "0.693704, 0.700601, 0.690734, 0.670098, 0.662761, 0.658306, 0.645293", \
                            "0.727529, 0.73436, 0.724471, 0.706068, 0.696432, 0.692021, 0.679019", \
                            "0.791615, 0.798435, 0.788568, 0.770165, 0.760584, 0.756118, 0.743116", \
                            "0.885951, 0.89287, 0.883487, 0.864578, 0.854997, 0.850553, 0.837529", \
                            "0.953304, 0.960311, 0.951291, 0.932052, 0.922405, 0.917994, 0.904992", \
                            "1.01115, 1.01811, 1.00824, 0.989835, 0.980199, 0.975788, 0.962786" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.719543, 0.71104, 0.673662, 0.633237, 0.604692, 0.596849, 0.602965", \
                            "0.732325, 0.724174, 0.686433, 0.646008, 0.62117, 0.60962, 0.615736", \
                            "0.76604, 0.7579, 0.72017, 0.679745, 0.652311, 0.643929, 0.649473", \
                            "0.830093, 0.821997, 0.784267, 0.743842, 0.719015, 0.707454, 0.71357", \
                            "0.92455, 0.916025, 0.87868, 0.838244, 0.813406, 0.801856, 0.807972", \
                            "0.991969, 0.983873, 0.946143, 0.905718, 0.880891, 0.86933, 0.875446", \
                            "1.04982, 1.04167, 1.00394, 0.963512, 0.934967, 0.927124, 0.93324" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0164468;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.722513, 0.733436, 0.75658, 0.777205, 0.778657, 0.741862, 0.667579", \
                            "0.716958, 0.720203, 0.751476, 0.770055, 0.770473, 0.737946, 0.661716", \
                            "0.699677, 0.700007, 0.734382, 0.75339, 0.751113, 0.720346, 0.645788", \
                            "0.681439, 0.685949, 0.716276, 0.731995, 0.730697, 0.700414, 0.625251", \
                            "0.659802, 0.666831, 0.69333, 0.714428, 0.711656, 0.676797, 0.605561", \
                            "0.644655, 0.647669, 0.684651, 0.701481, 0.701349, 0.665676, 0.593164", \
                            "0.658812, 0.666556, 0.697774, 0.711689, 0.712954, 0.678821, 0.606639" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.164921, 0.163773, 0.209283, 0.313093, 0.464948, 0.65219, 0.882046", \
                            "0.156597, 0.159922, 0.202361, 0.306163, 0.458007, 0.645645, 0.874808", \
                            "0.140339, 0.142965, 0.184732, 0.288599, 0.440451, 0.628672, 0.858605", \
                            "0.121617, 0.125183, 0.164703, 0.267367, 0.42042, 0.607662, 0.839168", \
                            "0.100359, 0.104277, 0.143246, 0.247669, 0.39952, 0.58784, 0.818356", \
                            "0.0867493, 0.0928741, 0.132404, 0.235077, 0.388146, 0.576235, 0.806432", \
                            "0.100955, 0.106499, 0.145966, 0.249831, 0.401698, 0.589787, 0.820028" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.542663, 0.528715, 0.500885, 0.485441, 0.485045, 0.521092, 0.592086", \
                            "0.54054, 0.537317, 0.506605, 0.490831, 0.48884, 0.523347, 0.596508", \
                            "0.565378, 0.556578, 0.527582, 0.510829, 0.510752, 0.542597, 0.61578", \
                            "0.578919, 0.575872, 0.545083, 0.52899, 0.528726, 0.562529, 0.636988", \
                            "0.601964, 0.596651, 0.567875, 0.548801, 0.549175, 0.585871, 0.65329", \
                            "0.620136, 0.608311, 0.57959, 0.556094, 0.560791, 0.593406, 0.666809", \
                            "0.604516, 0.593065, 0.564476, 0.546854, 0.546458, 0.577192, 0.653532" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.856911, 0.858253, 0.815287, 0.709841, 0.55836, 0.369655, 0.143765", \
                            "0.863225, 0.861102, 0.821172, 0.715726, 0.564234, 0.37554, 0.149647", \
                            "0.882101, 0.879956, 0.840422, 0.734976, 0.583484, 0.394779, 0.168892", \
                            "0.900504, 0.898359, 0.858836, 0.75339, 0.601909, 0.413204, 0.186578", \
                            "0.921503, 0.918819, 0.879142, 0.773839, 0.622347, 0.433642, 0.207022", \
                            "0.934472, 0.932327, 0.892793, 0.787347, 0.635855, 0.447161, 0.221267", \
                            "0.919523, 0.916179, 0.8767, 0.771254, 0.619773, 0.431068, 0.205176" \
                          )
                          }
                 }
        }
          cell_leakage_power : 5.74068e-05;
}
}
