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

library(gf180mcu_fd_ip_sram__sram64x8m8wm1__ff_125C_5v50) {
        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         : 125;
        nom_voltage             : 5.5;
        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.394;
        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.5);
         voltage_map (VSS, 0.00);
         operating_conditions(ff_5p5v_125C) {
                process       : 1;
                temperature   : 125;
                voltage       : 5.5;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : ff_5p5v_125C;
         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.115;
                  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.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
			  index_2 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
                            "4.05612, 4.07412, 4.12872, 4.21968, 4.353, 4.53684, 4.7892", \
                            "4.05552, 4.07136, 4.12896, 4.2174, 4.35612, 4.536, 4.78356", \
                            "4.05612, 4.07484, 4.12836, 4.21968, 4.35396, 4.54056, 4.78344", \
                            "4.05528, 4.07208, 4.1262, 4.21764, 4.35312, 4.53828, 4.7808", \
                            "4.06548, 4.0806, 4.1352, 4.22916, 4.3578, 4.542, 4.79412", \
                            "4.05948, 4.07964, 4.13616, 4.2222, 4.35912, 4.5444, 4.788", \
                            "4.04736, 4.06812, 4.12176, 4.20948, 4.34364, 4.52976, 4.776" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
  	                     "0.189936, 0.212568, 0.295704, 0.467256, 0.738888, 1.14137, 1.6686" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
                            "4.16724, 4.1856, 4.24212, 4.33056, 4.44252, 4.58916, 4.78056", \
                            "4.16472, 4.1886, 4.24404, 4.329, 4.44612, 4.58712, 4.77636", \
                            "4.16568, 4.19028, 4.24104, 4.32924, 4.4412, 4.58964, 4.77672", \
                            "4.1664, 4.18548, 4.23996, 4.32672, 4.44108, 4.59024, 4.77324", \
                            "4.17672, 4.19268, 4.251, 4.33812, 4.44888, 4.59432, 4.78464", \
                            "4.173, 4.19184, 4.2498, 4.33308, 4.4508, 4.59648, 4.78212", \
                            "4.158, 4.18044, 4.23348, 4.31976, 4.434, 4.58064, 4.76808" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
                            "0.1878, 0.21096, 0.275868, 0.38574, 0.557592, 0.796896, 1.11739" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.283903;
                  clock                : true;
                  max_transition       : 1.394;
                  min_pulse_width_high : 2.366415;
                  min_pulse_width_low  : 2.42577;
                  min_period           : 5.330145;

/* 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.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("1103.25, 1103.25, 1103.25, 1103.25, 1103.25, 1103.25, 1103.25");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("1103.25, 1103.25, 1103.25, 1103.25, 1103.25, 1103.25, 1103.25");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("0.0094567, 0.0094567, 0.0094567, 0.0094567, 0.0094567, 0.0094567, 0.0094567");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("0.0094567, 0.0094567, 0.0094567, 0.0094567, 0.0094567, 0.0094567, 0.0094567");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("991.21, 991.21, 991.21, 991.21, 991.21, 991.21, 991.21");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("991.21, 991.21, 991.21, 991.21, 991.21, 991.21, 991.21");
              }
             }
          }

          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.0168675;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.411389, 0.407649, 0.402237, 0.404998, 0.424435, 0.447689, 0.473187", \
                            "0.411147, 0.407671, 0.402633, 0.404943, 0.424633, 0.445478, 0.470965", \
                            "0.410916, 0.40788, 0.401764, 0.405196, 0.425194, 0.440264, 0.462484", \
                            "0.410718, 0.407286, 0.401621, 0.404415, 0.423852, 0.440814, 0.453442", \
                            "0.410498, 0.407022, 0.401423, 0.404195, 0.423643, 0.440594, 0.453222", \
                            "0.410421, 0.407605, 0.401335, 0.40414, 0.423566, 0.440528, 0.454663", \
                            "0.419881, 0.416493, 0.411169, 0.41525, 0.440418, 0.468732, 0.493537" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.388333, 0.39127, 0.399476, 0.420013, 0.465641, 0.519959, 0.581108", \
                            "0.389092, 0.391105, 0.399322, 0.42086, 0.465487, 0.519805, 0.580954", \
                            "0.387959, 0.390225, 0.399707, 0.418022, 0.465256, 0.519574, 0.580712", \
                            "0.388663, 0.390687, 0.398893, 0.42042, 0.463892, 0.519376, 0.580525", \
                            "0.388685, 0.390456, 0.399289, 0.419221, 0.464838, 0.519156, 0.580305", \
                            "0.387607, 0.39039, 0.399212, 0.418572, 0.464299, 0.51909, 0.580228", \
                            "0.387398, 0.390313, 0.398541, 0.420057, 0.464695, 0.519013, 0.580162" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "1.07855, 1.0823, 1.0877, 1.08494, 1.0655, 1.04929, 1.03591", \
                            "1.08955, 1.09303, 1.09805, 1.09574, 1.07605, 1.06019, 1.04682", \
                            "1.10355, 1.10659, 1.11271, 1.10926, 1.08926, 1.07419, 1.06082", \
                            "1.12102, 1.12445, 1.13012, 1.12732, 1.10788, 1.09091, 1.0783", \
                            "1.15345, 1.15692, 1.16251, 1.15974, 1.1403, 1.12334, 1.11071", \
                            "1.18276, 1.18558, 1.19186, 1.18904, 1.16962, 1.15266, 1.14004", \
                            "1.20328, 1.20651, 1.21238, 1.20956, 1.19013, 1.17317, 1.16056" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "1.10161, 1.09868, 1.09046, 1.06993, 1.0243, 0.96998, 0.908842", \
                            "1.11161, 1.10958, 1.10136, 1.07984, 1.0352, 0.980892, 0.919743", \
                            "1.1265, 1.12423, 1.11476, 1.09644, 1.04921, 0.994884, 0.933746", \
                            "1.14307, 1.14105, 1.13284, 1.11131, 1.06784, 1.01236, 0.951214", \
                            "1.17526, 1.17348, 1.16466, 1.14473, 1.09911, 1.04478, 0.983642", \
                            "1.20559, 1.2028, 1.19398, 1.17462, 1.1289, 1.07411, 1.01296", \
                            "1.22624, 1.22332, 1.21509, 1.19357, 1.14894, 1.09462, 1.03347" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0492022;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.563046, 0.564509, 0.571549, 0.593703, 0.628892, 0.675081, 0.718058", \
                            "0.562001, 0.563761, 0.570482, 0.592911, 0.628287, 0.674091, 0.716364", \
                            "0.55638, 0.558459, 0.565334, 0.587191, 0.622666, 0.670043, 0.710897", \
                            "0.537977, 0.539704, 0.547734, 0.569063, 0.604252, 0.650298, 0.692483", \
                            "0.501314, 0.502238, 0.509641, 0.5313, 0.566731, 0.613272, 0.655424", \
                            "0.468985, 0.471152, 0.478126, 0.50028, 0.534996, 0.581724, 0.625977", \
                            "0.440528, 0.442057, 0.449801, 0.471559, 0.506935, 0.553597, 0.593956" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.588467, 0.59114, 0.607299, 0.641729, 0.701525, 0.779845, 0.874632", \
                            "0.587895, 0.590524, 0.606551, 0.641553, 0.700931, 0.778547, 0.874027", \
                            "0.582241, 0.584914, 0.601073, 0.635503, 0.695299, 0.773619, 0.872355", \
                            "0.563651, 0.5665, 0.582505, 0.617936, 0.676885, 0.755447, 0.849926", \
                            "0.526592, 0.529441, 0.545732, 0.580448, 0.636878, 0.718234, 0.812988", \
                            "0.495033, 0.497706, 0.513997, 0.548295, 0.605143, 0.687808, 0.781198", \
                            "0.466521, 0.469183, 0.485353, 0.519772, 0.579568, 0.657206, 0.752609" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.791186, 0.789932, 0.782782, 0.764434, 0.742577, 0.728673, 0.72468", \
                            "0.792418, 0.790658, 0.78408, 0.765435, 0.743864, 0.731687, 0.721303", \
                            "0.787666, 0.786016, 0.779295, 0.760639, 0.73909, 0.725197, 0.722337", \
                            "0.788964, 0.787875, 0.78089, 0.762245, 0.740388, 0.725769, 0.723635", \
                            "0.794332, 0.792121, 0.785521, 0.767085, 0.745316, 0.730697, 0.728563", \
                            "0.798127, 0.796598, 0.789305, 0.770957, 0.7491, 0.734492, 0.732446", \
                            "0.784564, 0.783475, 0.776193, 0.757537, 0.735988, 0.722117, 0.713427" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.45749, 0.453893, 0.438075, 0.403326, 0.344135, 0.269284, 0.174032", \
                            "0.45925, 0.455158, 0.439351, 0.40546, 0.345081, 0.270607, 0.175159", \
                            "0.454091, 0.45078, 0.434588, 0.399839, 0.340648, 0.266041, 0.170187", \
                            "0.455653, 0.451561, 0.436073, 0.401478, 0.342067, 0.265576, 0.171835", \
                            "0.461604, 0.456478, 0.44066, 0.407099, 0.347985, 0.272597, 0.17787", \
                            "0.472824, 0.46981, 0.452826, 0.418176, 0.358545, 0.276639, 0.187703", \
                            "0.521411, 0.518397, 0.501919, 0.466763, 0.404162, 0.326502, 0.236369" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00767809;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "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", \
                            "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.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.243992, 0.247279, 0.263329, 0.297616, 0.357423, 0.43274, 0.527219", \
                            "0.242724, 0.246516, 0.262758, 0.296186, 0.35706, 0.431299, 0.5269", \
                            "0.246633, 0.250824, 0.26621, 0.300806, 0.360481, 0.435413, 0.531168", \
                            "0.245111, 0.249424, 0.265036, 0.299409, 0.358314, 0.435347, 0.529188", \
                            "0.239592, 0.243929, 0.259862, 0.293997, 0.353012, 0.428681, 0.52371", \
                            "0.237806, 0.241799, 0.25724, 0.292644, 0.350625, 0.427526, 0.521631", \
                            "0.250593, 0.254935, 0.269716, 0.304898, 0.364056, 0.438317, 0.534182" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.791186, 0.790064, 0.782782, 0.764489, 0.742577, 0.728673, 0.72468", \
                            "0.792418, 0.791428, 0.78408, 0.765842, 0.743864, 0.731687, 0.721303", \
                            "0.787666, 0.786588, 0.779295, 0.761002, 0.73909, 0.725197, 0.722337", \
                            "0.788964, 0.787886, 0.78089, 0.762311, 0.740388, 0.725769, 0.723635", \
                            "0.794332, 0.792825, 0.785521, 0.76725, 0.745316, 0.730697, 0.728563", \
                            "0.798127, 0.796609, 0.789305, 0.771034, 0.7491, 0.734492, 0.732446", \
                            "0.784564, 0.783486, 0.776193, 0.757911, 0.735988, 0.722117, 0.713427" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.45749, 0.453893, 0.438075, 0.403326, 0.344135, 0.269284, 0.174032", \
                            "0.45925, 0.455158, 0.439351, 0.40546, 0.345081, 0.270607, 0.175169", \
                            "0.454091, 0.45078, 0.434588, 0.399839, 0.340648, 0.266041, 0.170187", \
                            "0.455653, 0.451561, 0.436073, 0.401478, 0.342067, 0.265576, 0.171835", \
                            "0.461604, 0.456478, 0.44066, 0.407099, 0.347985, 0.272597, 0.17787", \
                            "0.464024, 0.46046, 0.444455, 0.409838, 0.351373, 0.274754, 0.180562", \
                            "0.450901, 0.447139, 0.431497, 0.396726, 0.337546, 0.262914, 0.167436" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0320813;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.49357, 0.489456, 0.48378, 0.487718, 0.518133, 0.541277, 0.562793", \
                            "0.490831, 0.489214, 0.484594, 0.486134, 0.516846, 0.541035, 0.562584", \
                            "0.494912, 0.493262, 0.487168, 0.489588, 0.519893, 0.54307, 0.565257", \
                            "0.495462, 0.492712, 0.487663, 0.489698, 0.520223, 0.545281, 0.564817", \
                            "0.489291, 0.486024, 0.481921, 0.484462, 0.513909, 0.539374, 0.558679", \
                            "0.487751, 0.483494, 0.479182, 0.481492, 0.511896, 0.536866, 0.555423", \
                            "0.499609, 0.496353, 0.491909, 0.493097, 0.524689, 0.546216, 0.57046" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.632467, 0.634832, 0.643478, 0.664081, 0.709401, 0.772541, 0.846208", \
                            "0.632005, 0.633303, 0.641773, 0.662794, 0.708257, 0.771694, 0.844921", \
                            "0.635085, 0.63701, 0.647273, 0.668635, 0.711865, 0.775456, 0.850982", \
                            "0.634799, 0.636581, 0.645051, 0.668129, 0.711425, 0.775467, 0.848485", \
                            "0.628617, 0.630729, 0.639617, 0.662156, 0.704451, 0.762432, 0.842908", \
                            "0.62623, 0.628738, 0.637945, 0.659516, 0.702328, 0.767888, 0.839872", \
                            "0.638847, 0.639936, 0.650793, 0.672518, 0.715803, 0.779196, 0.852093" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.491964, 0.49489, 0.496188, 0.492283, 0.490556, 0.491491, 0.492393", \
                            "0.4928, 0.494956, 0.497233, 0.493317, 0.491601, 0.492525, 0.493449", \
                            "0.503206, 0.505362, 0.507639, 0.503734, 0.502007, 0.502942, 0.503866", \
                            "0.520124, 0.522511, 0.524546, 0.520608, 0.518903, 0.519838, 0.520762", \
                            "0.548185, 0.550341, 0.552618, 0.548713, 0.546986, 0.547921, 0.549274", \
                            "0.579546, 0.581955, 0.583979, 0.580063, 0.578347, 0.579271, 0.580635", \
                            "0.60038, 0.602789, 0.604813, 0.600908, 0.599181, 0.600116, 0.60104" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.501831, 0.499697, 0.490336, 0.478533, 0.478566, 0.484176, 0.491403", \
                            "0.50292, 0.500698, 0.491392, 0.480931, 0.479611, 0.485221, 0.492437", \
                            "0.513326, 0.511104, 0.501787, 0.489984, 0.490017, 0.495627, 0.502854", \
                            "0.529837, 0.528011, 0.518694, 0.506891, 0.506924, 0.5137, 0.51975", \
                            "0.558316, 0.556105, 0.546799, 0.534974, 0.535007, 0.540815, 0.547833", \
                            "0.589666, 0.587499, 0.578116, 0.566335, 0.566357, 0.572176, 0.579249", \
                            "0.610511, 0.608234, 0.598972, 0.587158, 0.587202, 0.592812, 0.600028" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0156697;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.413611, 0.414777, 0.423632, 0.426217, 0.417956, 0.394306, 0.351351", \
                            "0.414403, 0.41305, 0.421355, 0.424226, 0.417868, 0.394845, 0.350031", \
                            "0.418451, 0.417615, 0.427966, 0.429649, 0.419045, 0.397639, 0.354156", \
                            "0.415184, 0.417549, 0.42482, 0.428593, 0.420343, 0.395758, 0.353452", \
                            "0.411829, 0.411917, 0.42064, 0.423247, 0.412962, 0.39149, 0.346918", \
                            "0.405933, 0.408672, 0.418957, 0.420409, 0.41085, 0.389345, 0.341924", \
                            "0.421586, 0.421685, 0.431354, 0.431673, 0.422917, 0.401588, 0.356609" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.104592, 0.105059, 0.120941, 0.167235, 0.239741, 0.338503, 0.462528", \
                            "0.103103, 0.102404, 0.119807, 0.165999, 0.239924, 0.337557, 0.461186", \
                            "0.106974, 0.1077, 0.123628, 0.169709, 0.242222, 0.341143, 0.464904", \
                            "0.10641, 0.106922, 0.122895, 0.169228, 0.24279, 0.340879, 0.464508", \
                            "0.100754, 0.101005, 0.117204, 0.163388, 0.235789, 0.334609, 0.459118", \
                            "0.0983169, 0.0986315, 0.11498, 0.161592, 0.234818, 0.331969, 0.456203", \
                            "0.111647, 0.111222, 0.127423, 0.173636, 0.246011, 0.345169, 0.468809" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.467544, 0.466642, 0.456467, 0.454454, 0.463166, 0.486563, 0.5302", \
                            "0.468424, 0.468809, 0.460768, 0.456566, 0.465498, 0.488785, 0.533269", \
                            "0.463012, 0.463177, 0.454168, 0.44902, 0.460911, 0.484242, 0.527868", \
                            "0.464728, 0.464101, 0.457688, 0.452166, 0.461549, 0.487102, 0.530068", \
                            "0.471449, 0.469909, 0.462748, 0.457787, 0.46871, 0.492272, 0.535623", \
                            "0.474606, 0.473044, 0.464761, 0.459877, 0.470789, 0.494681, 0.537251", \
                            "0.461604, 0.460856, 0.451627, 0.448833, 0.457314, 0.481756, 0.525822" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          index_2 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                          values  ( \
                            "0.631587, 0.631334, 0.614482, 0.568634, 0.49555, 0.397727, 0.275297", \
                            "0.633655, 0.633677, 0.616814, 0.570966, 0.497882, 0.40007, 0.27764", \
                            "0.628573, 0.628518, 0.611655, 0.565807, 0.492723, 0.394911, 0.272479", \
                            "0.630685, 0.630718, 0.613855, 0.568007, 0.494923, 0.3971, 0.274669", \
                            "0.636383, 0.636328, 0.619465, 0.573617, 0.500533, 0.402721, 0.280291", \
                            "0.638429, 0.638396, 0.621544, 0.575663, 0.502601, 0.404789, 0.282348", \
                            "0.625779, 0.625724, 0.608872, 0.563013, 0.489929, 0.392117, 0.269684" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.0094567;
}
}
