/*
 * 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__sram512x8m8wm1
 *      Technology                 : GF 180nm 5V Green
 *
 *      ---------
 *      Pin name:
 *      ---------
 *      Input Pins : CLK CEN GWEN WEN[7:0] A[8: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__sram512x8m8wm1__tt_025C_1v80) {
        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             : 1.8;
        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         : 4.617;
        default_cell_leakage_power     : 0;

         /* default attributes */
         slew_derate_from_library      : 1.000;
         slew_lower_threshold_pct_fall : 10.000;
         slew_upper_threshold_pct_fall : 90.000;
         slew_lower_threshold_pct_rise : 10.000;
         slew_upper_threshold_pct_rise : 90.000;
         input_threshold_pct_fall      : 50.000;
         input_threshold_pct_rise      : 50.000;
         output_threshold_pct_fall     : 50.000;
         output_threshold_pct_rise     : 50.000;
         default_leakage_power_density : 0;

        /* k-factors */
        k_process_recovery_fall        : 1;
        k_process_recovery_rise        : 1;
        k_process_cell_fall            : 1;
        k_process_cell_leakage_power   : 0;
        k_process_cell_rise            : 1;
        k_process_fall_transition      : 1;
        k_process_hold_fall            : 1;
        k_process_hold_rise            : 1;
        k_process_internal_power       : 0;
        k_process_min_pulse_width_high : 1;
        k_process_min_pulse_width_low  : 1;
        k_process_setup_fall           : 1;
        k_process_setup_rise           : 1;
        k_process_wire_cap             : 0;
        k_process_wire_res             : 0;
        k_process_pin_cap              : 0;
        k_process_rise_transition      : 1;
        k_temp_cell_fall               : 0.000;
        k_temp_cell_rise               : 0.000;
        k_temp_hold_fall               : 0.000;
        k_temp_hold_rise               : 0.000;
        k_temp_min_pulse_width_high    : 0.000;
        k_temp_min_pulse_width_low     : 0.000;
        k_temp_min_period              : 0.000;
        k_temp_rise_propagation        : 0.000;
        k_temp_fall_propagation        : 0.000;
        k_temp_rise_transition         : 0.000;
        k_temp_fall_transition         : 0.000;
        k_temp_recovery_fall           : 0.000;
        k_temp_recovery_rise           : 0.000;
        k_temp_setup_fall              : 0.000;
        k_temp_setup_rise              : 0.000;
        k_volt_cell_fall               : 0.000;
        k_volt_cell_rise               : 0.000;
        k_volt_hold_fall               : 0.000;
        k_volt_hold_rise               : 0.000;
        k_volt_min_pulse_width_high    : 0.000;
        k_volt_min_pulse_width_low     : 0.000;
        k_volt_min_period              : 0.000;
        k_volt_recovery_fall           : 0.000;
        k_volt_recovery_rise           : 0.000;
        k_volt_setup_fall              : 0.000;
        k_volt_setup_rise              : 0.000;
        k_volt_rise_propagation        : 0.000;
        k_volt_fall_propagation        : 0.000;
        k_volt_rise_transition         : 0.000;
        k_volt_fall_transition         : 0.000;

         voltage_map (VDD, 1.8);
         voltage_map (VSS, 0.00);
         operating_conditions(tt_1p8v_25C) {
                process       : 1;
                temperature   : 25;
                voltage       : 1.8;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : tt_1p8v_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 : 9;
                bit_from  : 8;
                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__sram512x8m8wm1) {
        area             : 209400.2768;
        dont_use         : TRUE;
        dont_touch       : TRUE;
        interface_timing : TRUE;
        memory() {
                type          : ram;
                address_width : 9;
                word_width    : 8;
        }

                 bus(Q)   {
                  bus_type             : Q_BUS;
                  direction            : output;
                  max_capacitance      : 0.9747;
                  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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
			  index_2 ("0.01, 0.02735, 0.08826, 0.2046, 0.3858, 0.6401, 0.9747");
                          values  ( \
                            "17.2992, 17.4036, 17.5692, 17.9136, 18.4176, 19.11, 20.0124", \
                            "17.334, 17.3868, 17.6016, 17.94, 18.4464, 19.122, 20.046", \
                            "17.4168, 17.4768, 17.6772, 18.024, 18.5232, 19.2276, 20.1156", \
                            "17.5152, 17.5728, 17.7972, 18.1284, 18.6408, 19.3236, 20.226", \
                            "17.6808, 17.73, 17.9568, 18.2952, 18.7848, 19.4904, 20.3676", \
                            "17.8668, 17.9508, 18.1392, 18.4764, 18.9756, 19.6752, 20.562", \
                            "18.078, 18.1644, 18.3744, 18.6924, 19.2156, 19.902, 20.8104" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.01, 0.02735, 0.08826, 0.2046, 0.3858, 0.6401, 0.9747");
                          values  ( \
  	                     "0.50406, 0.585744, 0.884304, 1.4676, 2.325, 3.64932, 5.33904" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.01, 0.02735, 0.08826, 0.2046, 0.3858, 0.6401, 0.9747");
                          values  ( \
                            "18.2016, 18.2892, 18.426, 18.6648, 18.966, 19.3008, 19.7436", \
                            "18.246, 18.2832, 18.4548, 18.7152, 19.0032, 19.3296, 19.7952", \
                            "18.3084, 18.378, 18.5484, 18.7776, 19.0704, 19.4352, 19.8552", \
                            "18.42, 18.4848, 18.6624, 18.8916, 19.1904, 19.5396, 19.962", \
                            "18.5844, 18.6252, 18.81, 19.0548, 19.35, 19.7076, 20.1324", \
                            "18.774, 18.8472, 18.9876, 19.2348, 19.5096, 19.8936, 20.3232", \
                            "18.9672, 19.0584, 19.2336, 19.4472, 19.7532, 20.1108, 20.5548" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.01, 0.02735, 0.08826, 0.2046, 0.3858, 0.6401, 0.9747");
                          values  ( \
                            "0.512256, 0.557736, 0.74832, 0.992784, 1.353, 1.87416, 2.52996" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.282301;
                  clock                : true;
                  max_transition       : 4.617;
                  min_pulse_width_high : 11.779035;
                  min_pulse_width_low  : 10.061445;
                  min_period           : 23.56065;

/* 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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                values  ("112.563, 112.563, 112.563, 112.563, 112.563, 112.563, 112.563");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                values  ("112.563, 112.563, 112.563, 112.563, 112.563, 112.563, 112.563");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                values  ("8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                values  ("8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05, 8.06994e-05");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                values  ("103.176, 103.176, 103.176, 103.176, 103.176, 103.176, 103.176");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                values  ("103.176, 103.176, 103.176, 103.176, 103.176, 103.176, 103.176");
              }
             }
          }

          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.0182531;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.55639, 1.53692, 1.55595, 1.67101, 1.96559, 2.34806, 2.89575", \
                            "1.5301, 1.51426, 1.52966, 1.64274, 1.92291, 2.33453, 2.87474", \
                            "1.46729, 1.44639, 1.46509, 1.58422, 1.86626, 2.25863, 2.80049", \
                            "1.32286, 1.30194, 1.31397, 1.44815, 1.70918, 2.12861, 2.65595", \
                            "1.28212, 1.27527, 1.28812, 1.42153, 1.68487, 2.05832, 2.5498", \
                            "1.2954, 1.27656, 1.28147, 1.4124, 1.68003, 2.08362, 2.57125", \
                            "1.2815, 1.27469, 1.2885, 1.41625, 1.67794, 2.08912, 2.56685" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.15156, 1.15919, 1.2353, 1.37951, 1.66353, 2.0603, 2.57026", \
                            "1.13121, 1.14819, 1.21467, 1.35894, 1.64285, 2.03973, 2.54969", \
                            "1.07909, 1.09447, 1.1645, 1.32418, 1.61084, 1.99122, 2.49073", \
                            "1.07856, 1.09393, 1.16396, 1.31076, 1.59203, 1.99067, 2.49018", \
                            "1.07811, 1.09283, 1.16292, 1.30962, 1.59093, 1.98946, 2.48908", \
                            "1.07852, 1.08624, 1.16306, 1.30981, 1.60952, 1.9899, 2.48941", \
                            "1.07755, 1.09225, 1.16225, 1.30898, 1.59027, 1.98891, 2.48842" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "3.83042, 3.84879, 3.83779, 3.71404, 3.43376, 3.06482, 2.54936", \
                            "3.86507, 3.88058, 3.86903, 3.75859, 3.48469, 3.08693, 2.57862", \
                            "3.91314, 3.93294, 3.91842, 3.79951, 3.52649, 3.1482, 2.64077", \
                            "4.08078, 4.10058, 4.09255, 3.95791, 3.70139, 3.29978, 2.80093", \
                            "4.34544, 4.35226, 4.3395, 4.20607, 3.94273, 3.56928, 3.0778", \
                            "4.63529, 4.65421, 4.64926, 4.51836, 4.25073, 3.84703, 3.35951", \
                            "5.00808, 5.0149, 5.00115, 4.87344, 4.61164, 4.20057, 3.72273" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "4.04734, 4.03854, 3.96264, 3.8159, 3.53463, 3.13588, 2.63637", \
                            "4.07682, 4.06241, 3.99245, 3.84571, 3.56444, 3.16569, 2.66618", \
                            "4.13083, 4.11543, 4.04536, 3.88564, 3.59909, 3.21871, 2.7192", \
                            "4.29847, 4.28307, 4.213, 4.06626, 3.78499, 3.38624, 2.88673", \
                            "4.54949, 4.53475, 4.46468, 4.31794, 4.03667, 3.63803, 3.13852", \
                            "4.85221, 4.84451, 4.76762, 4.62088, 4.32124, 3.94086, 3.44135", \
                            "5.21202, 5.19739, 5.12732, 4.98058, 4.69931, 4.30067, 3.80116" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0443231;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.89068, 1.89959, 1.97164, 2.12795, 2.35257, 2.63549, 2.96472", \
                            "1.86956, 1.87946, 1.95074, 2.10045, 2.32694, 2.6224, 2.94294", \
                            "1.80169, 1.81951, 1.89387, 2.03401, 2.26182, 2.54804, 2.87375", \
                            "1.66012, 1.67783, 1.7512, 1.89728, 2.12179, 2.40141, 2.72272", \
                            "1.42659, 1.44474, 1.51778, 1.66452, 1.88859, 2.17393, 2.5003", \
                            "1.21139, 1.22117, 1.30334, 1.4432, 1.67299, 1.9613, 2.28338", \
                            "0.997249, 1.01554, 1.08994, 1.23476, 1.45981, 1.74449, 2.06976" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "2.41164, 2.42902, 2.51966, 2.68048, 2.97231, 3.38327, 3.88817", \
                            "2.39085, 2.409, 2.50008, 2.65947, 2.95141, 3.36237, 3.86518", \
                            "2.32276, 2.34102, 2.4321, 2.5916, 2.89267, 3.29439, 3.7972", \
                            "2.1813, 2.19956, 2.28899, 2.44992, 2.74175, 3.15271, 3.65761", \
                            "1.94821, 1.96636, 2.05733, 2.21683, 2.50866, 2.91962, 3.42441", \
                            "1.73261, 1.75087, 1.84041, 2.00134, 2.29977, 2.70402, 3.20881", \
                            "1.51877, 1.53703, 1.62679, 1.78761, 2.07944, 2.4904, 2.99321" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "2.72338, 2.70908, 2.6334, 2.48578, 2.28426, 2.0922, 1.88386", \
                            "2.70039, 2.68444, 2.60887, 2.47423, 2.2726, 2.06822, 1.86868", \
                            "2.65232, 2.63043, 2.55255, 2.4134, 2.21782, 2.02048, 1.81302", \
                            "2.69808, 2.67608, 2.59963, 2.46279, 2.26259, 2.06349, 1.86956", \
                            "2.82799, 2.80643, 2.73449, 2.60425, 2.39305, 2.19659, 1.99617", \
                            "3.0063, 2.99046, 2.91269, 2.76672, 2.57334, 2.37413, 2.17877", \
                            "3.19286, 3.17141, 3.10046, 2.95383, 2.75792, 2.56201, 2.36687" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.42791, 1.39304, 1.30709, 1.15325, 0.865568, 0.456819, 0", \
                            "1.40558, 1.38017, 1.28176, 1.1331, 0.842523, 0.433928, 0", \
                            "1.34805, 1.33133, 1.23393, 1.08277, 0.784245, 0.385671, 0", \
                            "1.39601, 1.37797, 1.28203, 1.1277, 0.840312, 0.431728, 0", \
                            "1.53285, 1.50821, 1.41031, 1.26184, 0.970585, 0.56177, 0.07876", \
                            "1.71116, 1.68652, 1.59038, 1.43594, 1.1421, 0.739915, 0.256738", \
                            "1.89882, 1.87264, 1.77749, 1.62371, 1.33551, 0.926838, 0.441815" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00715847;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "0, 0, 0, 0, 0, 0, 0.105072", \
                            "0, 0, 0, 0, 0, 0, 0.12556", \
                            "0, 0, 0, 0, 0, 0, 0.179135", \
                            "0, 0, 0, 0, 0, 0, 0.124567", \
                            "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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "0.557876, 0.585915, 0.675939, 0.825011, 1.11975, 1.52163, 2.00838", \
                            "0.584606, 0.605363, 0.705507, 0.849981, 1.14706, 1.54891, 2.03753", \
                            "0.641333, 0.652894, 0.752015, 0.898436, 1.20335, 1.59566, 2.0856", \
                            "0.588951, 0.604406, 0.701855, 0.851587, 1.1459, 1.54781, 2.03522", \
                            "0.455653, 0.475937, 0.575696, 0.719895, 1.01764, 1.41944, 1.90685", \
                            "0.279122, 0.299797, 0.397386, 0.546843, 0.84843, 1.24319, 1.73063", \
                            "0.087747, 0.112189, 0.20832, 0.35442, 0.652817, 1.0545, 1.5433" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "2.73229, 2.7115, 2.63516, 2.49282, 2.28877, 2.09627, 1.90047", \
                            "2.70919, 2.6884, 2.61206, 2.47423, 2.2726, 2.07317, 1.87737", \
                            "2.66145, 2.64055, 2.56421, 2.42176, 2.21782, 2.02521, 1.82952", \
                            "2.70699, 2.68631, 2.60997, 2.46752, 2.26347, 2.07097, 1.87528", \
                            "2.83712, 2.81644, 2.7401, 2.60425, 2.3936, 2.2011, 2.00541", \
                            "3.01532, 2.99442, 2.91808, 2.77563, 2.57334, 2.37908, 2.18339", \
                            "3.20243, 3.18153, 3.10519, 2.96274, 2.75869, 2.56619, 2.3705" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.43308, 1.39821, 1.31426, 1.15444, 0.866305, 0.462682, 0", \
                            "1.40998, 1.38556, 1.28638, 1.1331, 0.84315, 0.439571, 0", \
                            "1.35575, 1.33694, 1.23888, 1.08405, 0.784245, 0.3916, 0", \
                            "1.40162, 1.38303, 1.28919, 1.12921, 0.841005, 0.437415, 0", \
                            "1.53813, 1.51327, 1.41493, 1.26184, 0.971289, 0.567534, 0.080476", \
                            "1.71622, 1.69147, 1.59742, 1.43748, 1.1421, 0.745514, 0.258425", \
                            "1.90355, 1.87781, 1.78453, 1.62503, 1.33628, 0.932613, 0.443322" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0401807;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "2.16645, 2.17173, 2.16436, 2.30186, 2.56817, 2.99805, 3.50625", \
                            "2.18515, 2.19747, 2.18801, 2.33002, 2.59204, 3.02335, 3.54112", \
                            "2.23861, 2.23674, 2.2638, 2.3815, 2.63582, 3.08484, 3.59062", \
                            "2.18746, 2.18867, 2.18394, 2.32694, 2.58852, 3.01939, 3.56103", \
                            "2.06305, 2.05931, 2.06448, 2.1846, 2.47522, 2.88893, 3.43233", \
                            "1.88793, 1.89332, 1.87968, 2.03082, 2.28173, 2.73097, 3.24346", \
                            "1.70313, 1.69895, 1.7171, 1.84151, 2.10122, 2.53902, 3.05481" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "2.59149, 2.6224, 2.68257, 2.87254, 3.14578, 3.54255, 4.06098", \
                            "2.6202, 2.6532, 2.70479, 2.88288, 3.16382, 3.57203, 4.08529", \
                            "2.67421, 2.70006, 2.75825, 2.93304, 3.21321, 3.62406, 4.13853", \
                            "2.61756, 2.64528, 2.70732, 2.88486, 3.17218, 3.57885, 4.08199", \
                            "2.49359, 2.50371, 2.57862, 2.7577, 3.04106, 3.44773, 3.95725", \
                            "2.31693, 2.34267, 2.40427, 2.58687, 2.86055, 3.27844, 3.77971", \
                            "2.12355, 2.14764, 2.21331, 2.40746, 2.66783, 3.08297, 3.58303" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.32275, 1.3332, 1.31805, 1.17807, 0.929478, 0.576763, 0.22575", \
                            "1.34233, 1.35267, 1.34002, 1.19755, 0.93841, 0.596035, 0.218959", \
                            "1.41031, 1.42076, 1.40701, 1.26404, 1.01706, 0.66935, 0.302737", \
                            "1.55386, 1.56431, 1.55342, 1.40613, 1.14962, 0.808654, 0.420354", \
                            "1.78431, 1.79476, 1.78387, 1.65363, 1.38006, 1.0442, 0.646173", \
                            "2.08318, 2.09363, 2.08285, 1.93842, 1.68993, 1.34222, 0.975601", \
                            "2.39239, 2.40284, 2.3892, 2.24774, 1.99914, 1.65154, 1.28489" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.51822, 1.50282, 1.42395, 1.26724, 1.07639, 0.857384, 0.62612", \
                            "1.53725, 1.5224, 1.44342, 1.28676, 1.09588, 0.876909, 0.645634", \
                            "1.60534, 1.59038, 1.51151, 1.35476, 1.1639, 0.944966, 0.713658", \
                            "1.74977, 1.73393, 1.65506, 1.49831, 1.30746, 1.08848, 0.857208", \
                            "1.98011, 1.96438, 1.88551, 1.72887, 1.53791, 1.31892, 1.08766", \
                            "2.27909, 2.26325, 2.18438, 2.02774, 1.83678, 1.61788, 1.38655", \
                            "2.5883, 2.57257, 2.49359, 2.33695, 2.1461, 1.92709, 1.69587" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0160497;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.74504, 1.75989, 1.83458, 1.94898, 2.0955, 2.15963, 2.27447", \
                            "1.76297, 1.78673, 1.86241, 1.98418, 2.11398, 2.22288, 2.32551", \
                            "1.82314, 1.83227, 1.9008, 2.03093, 2.16117, 2.24576, 2.37072", \
                            "1.75098, 1.78321, 1.85405, 1.98176, 2.11398, 2.21672, 2.30538", \
                            "1.63504, 1.65253, 1.73481, 1.85691, 1.98517, 2.06591, 2.18757", \
                            "1.46806, 1.47609, 1.55782, 1.68245, 1.81302, 1.89079, 2.01014", \
                            "1.27882, 1.28866, 1.36543, 1.49644, 1.6225, 1.70445, 1.80873" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "0, 0, 0, 0.15431, 0.426481, 0.814209, 1.2903", \
                            "0, 0, 0.003817, 0.180722, 0.453442, 0.841159, 1.31724", \
                            "0, 0, 0.052239, 0.229629, 0.501875, 0.889581, 1.36521", \
                            "0, 0, 0.001507, 0.178977, 0.45111, 0.838816, 1.3145", \
                            "0, 0, 0, 0.051788, 0.324046, 0.711755, 1.18743", \
                            "0, 0, 0, 0, 0.147943, 0.535634, 1.01134", \
                            "0, 0, 0, 0, 0, 0.347787, 0.823449" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "1.09014, 1.07287, 0.997447, 0.874225, 0.74085, 0.66737, 0.544643", \
                            "1.06439, 1.04773, 0.966372, 0.848078, 0.71962, 0.61215, 0.50556", \
                            "1.01709, 0.999394, 0.926585, 0.798556, 0.669493, 0.588423, 0.467071", \
                            "1.06433, 1.0472, 0.975755, 0.849728, 0.719499, 0.612678, 0.510576", \
                            "1.19369, 1.1806, 1.10341, 0.978417, 0.846142, 0.764885, 0.645821", \
                            "1.36939, 1.35894, 1.28109, 1.15515, 1.0222, 0.9691, 0.815188", \
                            "1.55804, 1.54517, 1.4696, 1.34024, 1.21071, 1.12959, 1.01046" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          index_2 ("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617");
                          values  ( \
                            "2.23465, 2.23597, 2.16711, 1.99122, 1.71831, 1.3343, 0.86581", \
                            "2.20792, 2.21001, 2.14137, 1.96548, 1.69257, 1.30859, 0.84007", \
                            "2.1615, 2.16271, 2.09407, 1.91818, 1.64527, 1.26131, 0.792781", \
                            "2.21056, 2.21001, 2.14137, 1.96548, 1.69257, 1.30859, 0.840059", \
                            "2.33805, 2.33926, 2.27062, 2.09462, 1.82182, 1.43781, 0.969287", \
                            "2.51416, 2.51537, 2.44662, 2.27073, 1.99782, 1.61392, 1.14534", \
                            "2.7027, 2.70358, 2.63516, 2.45927, 2.18636, 1.80246, 1.33386" \
                          )
                          }
                 }
        }
          cell_leakage_power : 8.06994e-05;
}
}
