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

library(gf180mcu_fd_ip_sram__sram256x8m8wm1__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 : 8;
                bit_from  : 7;
                bit_to    : 0;
                downto    : true;
         }
         type (Q_BUS) {
                base_type : array;
                data_type : bit;
                bit_width : 8;
                bit_from  : 7;
                bit_to    : 0;
                downto    : true;
         }
 cell(gf180mcu_fd_ip_sram__sram256x8m8wm1) {
        area             : 147212.4368;
        dont_use         : TRUE;
        dont_touch       : TRUE;
        interface_timing : TRUE;
        memory() {
                type          : ram;
                address_width : 8;
                word_width    : 8;
        }

                 bus(Q)   {
                  bus_type             : Q_BUS;
                  direction            : output;
                  max_capacitance      : 1.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.501, 6.52944, 6.6054, 6.75576, 6.95352, 7.24428, 7.6194", \
                            "6.52092, 6.53112, 6.624, 6.77184, 6.96972, 7.24668, 7.61748", \
                            "6.54048, 6.55488, 6.64812, 6.78072, 6.98232, 7.26864, 7.63908", \
                            "6.5478, 6.57204, 6.66264, 6.80544, 7.00668, 7.29372, 7.65852", \
                            "6.58644, 6.61404, 6.6972, 6.8394, 7.04412, 7.32564, 7.68708", \
                            "6.59304, 6.62436, 6.69216, 6.84408, 7.03632, 7.32516, 7.70964", \
                            "6.56652, 6.59484, 6.67728, 6.8208, 7.03392, 7.31196, 7.67916" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
  	                     "0.226416, 0.266448, 0.397956, 0.6414, 1.0328, 1.59912, 2.33844" \
                          )

                          }
                          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.75216, 6.7842, 6.84312, 6.97872, 7.1232, 7.32012, 7.56228", \
                            "6.77172, 6.78324, 6.8706, 6.98808, 7.14084, 7.32228, 7.56", \
                            "6.79488, 6.80376, 6.88956, 7.00212, 7.1538, 7.34724, 7.58376", \
                            "6.80088, 6.8268, 6.90552, 7.02564, 7.17636, 7.36656, 7.59756", \
                            "6.83568, 6.8628, 6.9408, 7.05828, 7.21932, 7.40544, 7.62708", \
                            "6.8466, 6.87564, 6.93708, 7.06536, 7.20492, 7.40304, 7.65", \
                            "6.82104, 6.84816, 6.92268, 7.04304, 7.20672, 7.38696, 7.6182" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
                            "0.226176, 0.258888, 0.349932, 0.482796, 0.695256, 0.97752, 1.3524" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.293631;
                  clock                : true;
                  max_transition       : 3.1779;
                  min_pulse_width_high : 3.287265;
                  min_pulse_width_low  : 3.891015;
                  min_period           : 8.55972;

/* 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  ("375.012, 375.012, 375.012, 375.012, 375.012, 375.012, 375.012");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("375.012, 375.012, 375.012, 375.012, 375.012, 375.012, 375.012");
              }
             }
/* 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  ("0.000149223, 0.000149223, 0.000149223, 0.000149223, 0.000149223, 0.000149223, 0.000149223");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("0.000149223, 0.000149223, 0.000149223, 0.000149223, 0.000149223, 0.000149223, 0.000149223");
              }
             }
/* 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  ("338.663, 338.663, 338.663, 338.663, 338.663, 338.663, 338.663");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("338.663, 338.663, 338.663, 338.663, 338.663, 338.663, 338.663");
              }
             }
          }

          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.0183651;
                  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.617452, 0.603218, 0.603757, 0.658537, 0.734668, 0.789503, 0.820743", \
                            "0.606892, 0.592669, 0.594671, 0.64801, 0.725835, 0.778327, 0.816695", \
                            "0.585376, 0.576631, 0.575333, 0.621643, 0.694804, 0.746295, 0.785664", \
                            "0.58707, 0.575894, 0.57508, 0.621401, 0.676775, 0.697411, 0.735746", \
                            "0.586102, 0.575784, 0.575223, 0.621027, 0.676489, 0.695893, 0.719697", \
                            "0.586487, 0.575322, 0.574508, 0.620818, 0.676269, 0.695629, 0.719433", \
                            "0.586245, 0.575553, 0.574739, 0.620543, 0.675994, 0.723998, 0.763367" \
                          )
                          }
                          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.542047, 0.549076, 0.583968, 0.662596, 0.788106, 0.926486, 1.07853", \
                            "0.540639, 0.548339, 0.581691, 0.662585, 0.786951, 0.926035, 1.07732", \
                            "0.539363, 0.546458, 0.580987, 0.662354, 0.785521, 0.925518, 1.07591", \
                            "0.539385, 0.546205, 0.579986, 0.659725, 0.785235, 0.924968, 1.06691", \
                            "0.53878, 0.545842, 0.580052, 0.662123, 0.784894, 0.923241, 1.0753", \
                            "0.538615, 0.545622, 0.579403, 0.66022, 0.784696, 0.923758, 1.0751", \
                            "0.538593, 0.545325, 0.579601, 0.658955, 0.784421, 0.924099, 1.07478" \
                          )
                          }
                  }
                  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.59203, 1.60325, 1.60413, 1.55782, 1.50403, 1.48159, 1.46058", \
                            "1.59742, 1.60864, 1.60897, 1.5631, 1.50766, 1.48753, 1.46454", \
                            "1.63438, 1.64307, 1.64439, 1.59808, 1.54264, 1.52328, 1.49952", \
                            "1.70863, 1.71985, 1.72062, 1.67431, 1.61898, 1.59863, 1.57564", \
                            "1.80092, 1.81126, 1.81181, 1.76594, 1.7105, 1.69114, 1.66727", \
                            "1.87781, 1.88903, 1.8898, 1.84349, 1.78805, 1.76869, 1.74493", \
                            "1.93017, 1.94084, 1.94172, 1.89585, 1.84041, 1.82105, 1.79718" \
                          )
                          }
                          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.63999, 1.63295, 1.59808, 1.51943, 1.39392, 1.25555, 1.10351", \
                            "1.6456, 1.6379, 1.60457, 1.52361, 1.39931, 1.26018, 1.10889", \
                            "1.68036, 1.67332, 1.63878, 1.55738, 1.43418, 1.29426, 1.14384", \
                            "1.75637, 1.74955, 1.71578, 1.63603, 1.51052, 1.37071, 1.22881", \
                            "1.84822, 1.84118, 1.80697, 1.72491, 1.60204, 1.46377, 1.31164", \
                            "1.92566, 1.91873, 1.88496, 1.80411, 1.67959, 1.54055, 1.38919", \
                            "1.9778, 1.97109, 1.93688, 1.85746, 1.73206, 1.59236, 1.44166" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0480112;
                  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.824076, 0.834196, 0.86735, 0.935715, 1.03133, 1.12476, 1.20448", \
                            "0.814275, 0.824714, 0.85789, 0.926849, 1.0218, 1.11525, 1.19274", \
                            "0.782188, 0.792132, 0.825638, 0.89474, 0.98967, 1.08357, 1.16194", \
                            "0.714604, 0.724581, 0.757867, 0.826969, 0.921811, 1.01526, 1.09417", \
                            "0.640211, 0.650243, 0.683474, 0.752455, 0.847385, 0.94138, 1.01979", \
                            "0.584837, 0.5951, 0.628375, 0.697477, 0.792407, 0.886303, 0.964678", \
                            "0.548757, 0.558778, 0.592053, 0.661012, 0.755975, 0.849992, 0.928367" \
                          )
                          }
                          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.919754, 0.92466, 0.971476, 1.06695, 1.21594, 1.40162, 1.6049", \
                            "0.910558, 0.915211, 0.962005, 1.05747, 1.20646, 1.39293, 1.59544", \
                            "0.878053, 0.882926, 0.927696, 1.0254, 1.17422, 1.35861, 1.56321", \
                            "0.810282, 0.815166, 0.86251, 0.95744, 1.10642, 1.29212, 1.49435", \
                            "0.735977, 0.740773, 0.788799, 0.883212, 1.03201, 1.21833, 1.42098", \
                            "0.680867, 0.685685, 0.73249, 0.827926, 0.976316, 1.16336, 1.36598", \
                            "0.644457, 0.649396, 0.697411, 0.791637, 0.940027, 1.12632, 1.32968" \
                          )
                          }
                  }
                  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.15279, 1.14387, 1.11067, 1.04864, 1.00038, 0.962324, 0.952721", \
                            "1.15797, 1.14906, 1.11585, 1.05473, 1.00443, 0.967494, 0.957935", \
                            "1.18036, 1.17103, 1.13782, 1.0767, 1.02769, 0.989461, 0.979869", \
                            "1.19457, 1.18504, 1.15184, 1.09074, 1.04157, 1.00351, 0.993894", \
                            "1.22312, 1.21369, 1.18038, 1.11927, 1.06913, 1.03204, 1.02243", \
                            "1.22848, 1.21972, 1.18586, 1.12536, 1.07483, 1.03785, 1.02812", \
                            "1.22086, 1.21196, 1.17875, 1.11764, 1.06733, 1.0304, 1.0208" \
                          )
                          }
                          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.606089, 0.597938, 0.548427, 0.456709, 0.312686, 0.135105, 0", \
                            "0.61237, 0.602987, 0.55407, 0.461912, 0.317988, 0.141843, 0", \
                            "0.633127, 0.625636, 0.580734, 0.484253, 0.33902, 0.164846, 0", \
                            "0.647449, 0.639672, 0.593186, 0.498289, 0.353914, 0.17627, 0", \
                            "0.676654, 0.668228, 0.618926, 0.526724, 0.382426, 0.206091, 0.009955", \
                            "0.750508, 0.745437, 0.6996, 0.60247, 0.453024, 0.278991, 0.0858429", \
                            "0.826804, 0.821733, 0.775082, 0.678733, 0.529342, 0.355531, 0.162162" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.007649;
                  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, 0.016192, 0.032076", \
                            "0, 0, 0, 0, 0, 0.011671, 0.027544", \
                            "0, 0, 0, 0, 0, 0, 0.005522", \
                            "0, 0, 0, 0, 0, 0, 0", \
                            "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.359975, 0.37026, 0.418968, 0.511588, 0.655842, 0.833316, 1.0328", \
                            "0.353958, 0.364672, 0.414766, 0.507386, 0.651178, 0.827277, 1.02122", \
                            "0.3333, 0.342067, 0.388113, 0.48554, 0.629882, 0.804463, 1.00606", \
                            "0.316943, 0.327272, 0.375826, 0.469689, 0.613008, 0.791351, 0.991749", \
                            "0.286483, 0.296793, 0.348029, 0.43758, 0.583858, 0.76021, 0.958298", \
                            "0.281355, 0.29234, 0.341902, 0.435347, 0.577698, 0.754963, 0.952985", \
                            "0.291546, 0.301199, 0.351681, 0.444422, 0.586993, 0.766403, 0.966306" \
                          )
                          }
                  }
                  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.15333, 1.14547, 1.1135, 1.05229, 1.00098, 0.962324, 0.952721", \
                            "1.15851, 1.15065, 1.11869, 1.05747, 1.00616, 0.967494, 0.957935", \
                            "1.18048, 1.17263, 1.14066, 1.07944, 1.02814, 0.989461, 0.979869", \
                            "1.19457, 1.18668, 1.1547, 1.09349, 1.04218, 1.00351, 0.993894", \
                            "1.22312, 1.21523, 1.18325, 1.12202, 1.07072, 1.03204, 1.02243", \
                            "1.22921, 1.22136, 1.18939, 1.12817, 1.07687, 1.03795, 1.02812", \
                            "1.22142, 1.21356, 1.1816, 1.12038, 1.06908, 1.0304, 1.0208" \
                          )
                          }
                          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.606441, 0.597938, 0.54934, 0.456709, 0.313445, 0.135105, 0", \
                            "0.612766, 0.602987, 0.55506, 0.461912, 0.318659, 0.141843, 0", \
                            "0.633556, 0.625636, 0.580734, 0.484253, 0.340362, 0.164846, 0", \
                            "0.647845, 0.639672, 0.593186, 0.498289, 0.354651, 0.17764, 0", \
                            "0.676995, 0.668228, 0.618926, 0.526724, 0.383097, 0.206091, 0.010186", \
                            "0.683298, 0.67419, 0.62744, 0.532554, 0.391039, 0.212552, 0.016357", \
                            "0.674498, 0.666633, 0.617364, 0.524777, 0.383262, 0.20453, 0.008646" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0404958;
                  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.739365, 0.734503, 0.735185, 0.788854, 0.870551, 0.929808, 0.977592", \
                            "0.732391, 0.726847, 0.729564, 0.781935, 0.863511, 0.925837, 0.96844", \
                            "0.717783, 0.712008, 0.712712, 0.761508, 0.844393, 0.906301, 0.952028", \
                            "0.696674, 0.694386, 0.695673, 0.74624, 0.827123, 0.888316, 0.933097", \
                            "0.669097, 0.662607, 0.664818, 0.717332, 0.79871, 0.861069, 0.905146", \
                            "0.662046, 0.658999, 0.660308, 0.710369, 0.792099, 0.854491, 0.901186", \
                            "0.675169, 0.671704, 0.670043, 0.723195, 0.805134, 0.865326, 0.911328" \
                          )
                          }
                          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.932107, 0.937464, 0.979473, 1.05448, 1.18665, 1.3398, 1.51162", \
                            "0.926354, 0.931403, 0.973445, 1.05194, 1.17762, 1.33353, 1.50491", \
                            "0.908578, 0.917169, 0.955977, 1.03174, 1.16234, 1.31626, 1.48753", \
                            "0.888503, 0.899503, 0.935495, 1.01404, 1.14665, 1.29965, 1.47213", \
                            "0.861333, 0.869, 0.910437, 0.986524, 1.11575, 1.27103, 1.44177", \
                            "0.85448, 0.864039, 0.9031, 0.986513, 1.10935, 1.26386, 1.4355", \
                            "0.866151, 0.876733, 0.914265, 0.988999, 1.11959, 1.27569, 1.44716" \
                          )
                          }
                  }
                  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.694408, 0.700084, 0.693396, 0.674872, 0.665566, 0.659021, 0.646778", \
                            "0.708136, 0.714186, 0.706453, 0.688633, 0.678623, 0.672078, 0.659846", \
                            "0.740839, 0.745855, 0.739167, 0.720643, 0.711337, 0.704803, 0.69256", \
                            "0.806091, 0.811096, 0.804397, 0.785829, 0.776567, 0.770022, 0.757812", \
                            "0.900471, 0.905564, 0.898799, 0.880286, 0.870969, 0.863599, 0.852192", \
                            "0.968176, 0.973742, 0.966009, 0.94787, 0.938168, 0.931645, 0.919424", \
                            "1.02094, 1.02604, 1.01927, 1.00074, 0.991441, 0.984885, 0.972664" \
                          )
                          }
                          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.73007, 0.721787, 0.683705, 0.646734, 0.623744, 0.614493, 0.615395", \
                            "0.743446, 0.734822, 0.696784, 0.659791, 0.636823, 0.628408, 0.628188", \
                            "0.775841, 0.767547, 0.729487, 0.692505, 0.669537, 0.660264, 0.660495", \
                            "0.841104, 0.832777, 0.796939, 0.757735, 0.734481, 0.726352, 0.726099", \
                            "0.935792, 0.926948, 0.888723, 0.852137, 0.829158, 0.820743, 0.820501", \
                            "1.003, 0.994356, 0.956329, 0.912879, 0.896368, 0.887953, 0.887711", \
                            "1.05594, 1.04761, 1.00958, 0.972609, 0.949619, 0.941215, 0.940984" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0163071;
                  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.693968, 0.705672, 0.736681, 0.756723, 0.752576, 0.715616, 0.645887", \
                            "0.694331, 0.705298, 0.731643, 0.746999, 0.748011, 0.716133, 0.641949", \
                            "0.675884, 0.682803, 0.712448, 0.728046, 0.727628, 0.694617, 0.623359", \
                            "0.656293, 0.667315, 0.69476, 0.711964, 0.713119, 0.673849, 0.606782", \
                            "0.630344, 0.639452, 0.666358, 0.684266, 0.682803, 0.644369, 0.573056", \
                            "0.62491, 0.621962, 0.655347, 0.67804, 0.677897, 0.64174, 0.568876", \
                            "0.633523, 0.641817, 0.673706, 0.689359, 0.688809, 0.650232, 0.583308" \
                          )
                          }
                          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.140605, 0.142299, 0.186201, 0.288335, 0.443168, 0.628595, 0.858946", \
                            "0.134339, 0.140911, 0.177095, 0.283091, 0.437723, 0.626197, 0.854007", \
                            "0.115546, 0.119538, 0.16139, 0.261871, 0.418836, 0.603801, 0.833316", \
                            "0.100142, 0.105882, 0.140863, 0.247389, 0.401742, 0.587147, 0.819489", \
                            "0.069729, 0.073513, 0.115278, 0.217653, 0.372526, 0.559757, 0.79079", \
                            "0.063459, 0.067188, 0.109079, 0.212506, 0.366245, 0.552794, 0.783277", \
                            "0.074855, 0.078991, 0.120623, 0.223245, 0.376497, 0.565246, 0.793507" \
                          )
                          }
                  }
                  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.568491, 0.558855, 0.529606, 0.506616, 0.510015, 0.545105, 0.608575", \
                            "0.571329, 0.554983, 0.529397, 0.514426, 0.514096, 0.543961, 0.62018", \
                            "0.593648, 0.583264, 0.553773, 0.536019, 0.534589, 0.563035, 0.640948", \
                            "0.60907, 0.596376, 0.567556, 0.552772, 0.552189, 0.586487, 0.657822", \
                            "0.63272, 0.621467, 0.596332, 0.58091, 0.580899, 0.615263, 0.686103", \
                            "0.646272, 0.635734, 0.605814, 0.58597, 0.589006, 0.622776, 0.690019", \
                            "0.630674, 0.623403, 0.591107, 0.576323, 0.575355, 0.610038, 0.68079" \
                          )
                          }
                          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.882629, 0.880506, 0.841038, 0.735592, 0.5841, 0.395395, 0.169497", \
                            "0.886435, 0.884224, 0.844701, 0.739255, 0.587763, 0.399179, 0.173169", \
                            "0.907258, 0.905146, 0.865667, 0.760232, 0.608729, 0.420035, 0.194136", \
                            "0.923868, 0.921316, 0.88242, 0.776963, 0.625471, 0.436777, 0.21015", \
                            "0.952754, 0.950719, 0.911196, 0.805761, 0.654247, 0.465674, 0.239657", \
                            "0.960333, 0.958298, 0.918775, 0.81334, 0.661837, 0.473132, 0.247239", \
                            "0.947903, 0.945494, 0.90596, 0.800525, 0.649033, 0.460449, 0.234431" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.0001492227;
}
}
