/*
 * 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__ss_125C_3v00) {
        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             : 3.0;
        capacitive_load_unit    (1,pf);
        pulling_resistance_unit : "1kohm";

        /* additional header data */
        default_fanout_load            : 1;
        default_inout_pin_cap          : 0.045;
        default_input_pin_cap          : 0.045;
        default_output_pin_cap         : 0;
        default_max_transition         : 7.0901;
        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.0);
         voltage_map (VSS, 0.00);
         operating_conditions(ss_3p0v_125C) {
                process       : 1;
                temperature   : 125;
                voltage       : 3.0;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : ss_3p0v_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 : 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.1270;
                  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.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
			  index_2 ("0.0100, 0.0301, 0.1006, 0.2353, 0.4451, 0.7395, 1.1270");
                          values  ( \
                            "12.588, 12.6504, 12.8256, 13.1088, 13.5144, 14.0712, 14.7672", \
                            "12.6456, 12.6936, 12.8604, 13.134, 13.5276, 14.0664, 14.7972", \
                            "12.6876, 12.7524, 12.9, 13.182, 13.5936, 14.1552, 14.8668", \
                            "12.7632, 12.8148, 12.9864, 13.266, 13.662, 14.184, 14.922", \
                            "12.8244, 12.8856, 13.0488, 13.3476, 13.746, 14.3088, 15.0072", \
                            "12.864, 12.918, 13.1088, 13.3668, 13.788, 14.3352, 15.0276", \
                            "12.8388, 12.8844, 13.0584, 13.3428, 13.7352, 14.2872, 15.0012" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0301, 0.1006, 0.2353, 0.4451, 0.7395, 1.1270");
                          values  ( \
  	                     "0.431196, 0.512736, 0.77676, 1.24884, 2.01432, 3.10884, 4.54896" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0100, 0.0301, 0.1006, 0.2353, 0.4451, 0.7395, 1.1270");
                          values  ( \
                            "13.1052, 13.1652, 13.32, 13.5432, 13.8408, 14.2056, 14.6268", \
                            "13.1592, 13.2, 13.3428, 13.5792, 13.8564, 14.2092, 14.6484", \
                            "13.2036, 13.2648, 13.3956, 13.6248, 13.9296, 14.292, 14.7276", \
                            "13.278, 13.3296, 13.4712, 13.7076, 13.9968, 14.3256, 14.7816", \
                            "13.3416, 13.392, 13.5492, 13.7856, 14.0796, 14.4384, 14.8632", \
                            "13.3812, 13.4328, 13.6104, 13.8132, 14.1192, 14.4756, 14.8872", \
                            "13.3524, 13.3764, 13.5516, 13.782, 14.0724, 14.4204, 14.862" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0301, 0.1006, 0.2353, 0.4451, 0.7395, 1.1270");
                          values  ( \
                            "0.425016, 0.473628, 0.658908, 0.940344, 1.32276, 1.87296, 2.55216" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.314096;
                  clock                : true;
                  max_transition       : 7.0901;
                  min_pulse_width_high : 5.18775;
                  min_pulse_width_low  : 6.276795;
                  min_period           : 17.08635;

/* 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.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                values  ("318.3, 318.3, 318.3, 318.3, 318.3, 318.3, 318.3");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                values  ("318.3, 318.3, 318.3, 318.3, 318.3, 318.3, 318.3");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                values  ("0.000156966, 0.000156966, 0.000156966, 0.000156966, 0.000156966, 0.000156966, 0.000156966");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                values  ("0.000156966, 0.000156966, 0.000156966, 0.000156966, 0.000156966, 0.000156966, 0.000156966");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                values  ("288.78, 288.78, 288.78, 288.78, 288.78, 288.78, 288.78");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                values  ("288.78, 288.78, 288.78, 288.78, 288.78, 288.78, 288.78");
              }
             }
          }

          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.0199854;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.07745, 1.06179, 1.07813, 1.23086, 1.46696, 1.63999, 1.74218", \
                            "1.0474, 1.03836, 1.05515, 1.20921, 1.43528, 1.61832, 1.71457", \
                            "0.965635, 0.954206, 0.972719, 1.11612, 1.34937, 1.52768, 1.62668", \
                            "0.966262, 0.952248, 0.971146, 1.10939, 1.28579, 1.40756, 1.50403", \
                            "0.96558, 0.951676, 0.970552, 1.10746, 1.26799, 1.37588, 1.42384", \
                            "0.965173, 0.948662, 0.970871, 1.10671, 1.28274, 1.37951, 1.42604", \
                            "0.963358, 0.947826, 0.969881, 1.10921, 1.28198, 1.39568, 1.47741" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "0.85173, 0.866393, 0.967296, 1.16884, 1.48016, 1.81456, 2.16282", \
                            "0.844426, 0.861586, 0.960058, 1.15354, 1.46586, 1.78915, 2.13367", \
                            "0.842589, 0.856548, 0.957825, 1.15805, 1.46388, 1.78684, 2.12443", \
                            "0.841148, 0.855008, 0.956296, 1.15996, 1.46234, 1.7853, 2.12289", \
                            "0.840444, 0.857285, 0.955658, 1.15929, 1.46146, 1.78475, 2.11607", \
                            "0.841313, 0.856603, 0.954998, 1.15873, 1.46102, 1.78409, 2.12157", \
                            "0.839036, 0.855844, 0.954184, 1.15961, 1.46025, 1.78321, 2.1208" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "2.849, 2.86319, 2.84405, 2.70721, 2.53121, 2.43353, 2.40493", \
                            "2.87056, 2.88343, 2.8644, 2.72426, 2.55277, 2.45201, 2.41802", \
                            "2.95405, 2.96549, 2.94701, 2.81017, 2.63219, 2.5366, 2.50008", \
                            "3.12598, 3.13995, 3.12103, 2.98287, 2.80643, 2.71205, 2.6818", \
                            "3.34873, 3.36259, 3.34367, 3.20683, 3.04623, 2.93843, 2.89443", \
                            "3.52176, 3.53837, 3.51615, 3.3803, 3.20419, 3.1075, 3.07703", \
                            "3.63836, 3.65398, 3.63187, 3.4925, 3.3198, 3.2219, 3.20507" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "2.97418, 2.95724, 2.8589, 2.65518, 2.35312, 2.02983, 1.69235", \
                            "2.99486, 2.9777, 2.87925, 2.68576, 2.37347, 2.05018, 1.71545", \
                            "3.07714, 3.06317, 2.96186, 2.76166, 2.45586, 2.1329, 1.79531", \
                            "3.25105, 3.23719, 3.13588, 2.93227, 2.62988, 2.30692, 1.96933", \
                            "3.4738, 3.45697, 3.35863, 3.15502, 2.85274, 2.52945, 2.19813", \
                            "3.64562, 3.63033, 3.53199, 3.32827, 3.02588, 2.70292, 2.36533", \
                            "3.76277, 3.74594, 3.6476, 3.44212, 3.14149, 2.81853, 2.48094" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0496645;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.42945, 1.45354, 1.54033, 1.70984, 1.93556, 2.13631, 2.31077", \
                            "1.40976, 1.43363, 1.52097, 1.68674, 1.91488, 2.1186, 2.29955", \
                            "1.32429, 1.34827, 1.4344, 1.60248, 1.83491, 2.03027, 2.20616", \
                            "1.15834, 1.18105, 1.26992, 1.43605, 1.66452, 1.87022, 2.04479", \
                            "0.986513, 1.00995, 1.09751, 1.26513, 1.49325, 1.69554, 1.86186", \
                            "0.863621, 0.887271, 0.97427, 1.14232, 1.37115, 1.57003, 1.74471", \
                            "0.775291, 0.799106, 0.886765, 1.05366, 1.28583, 1.48082, 1.65858" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.64549, 1.672, 1.77892, 1.99804, 2.34861, 2.75627, 3.21189", \
                            "1.62525, 1.65209, 1.7589, 1.97868, 2.32881, 2.73625, 3.19297", \
                            "1.53901, 1.56684, 1.67365, 1.88914, 2.24334, 2.651, 3.10662", \
                            "1.3739, 1.40085, 1.50766, 1.72161, 2.07735, 2.48644, 2.94063", \
                            "1.20369, 1.22904, 1.33584, 1.54979, 1.90388, 2.31319, 2.76419", \
                            "1.07876, 1.10575, 1.21256, 1.43176, 1.78046, 2.19142, 2.6455", \
                            "0.990638, 1.01758, 1.12442, 1.33727, 1.69411, 2.10177, 2.55739" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "2.09484, 2.07548, 1.99045, 1.84514, 1.72293, 1.64791, 1.59192", \
                            "2.07922, 2.05942, 1.97395, 1.83348, 1.70357, 1.62525, 1.5829", \
                            "2.10474, 2.08538, 2.00079, 1.85493, 1.72843, 1.64945, 1.6027", \
                            "2.15809, 2.13862, 2.05227, 1.90773, 1.77661, 1.69587, 1.64945", \
                            "2.22497, 2.20748, 2.11915, 1.9734, 1.84569, 1.76715, 1.72557", \
                            "2.24323, 2.2275, 2.13994, 1.99342, 1.86846, 1.79597, 1.74152", \
                            "2.23014, 2.21375, 2.12597, 1.98242, 1.85779, 1.77507, 1.72909" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.02518, 0.997326, 0.88616, 0.662981, 0.340076, 0, 0", \
                            "1.00849, 0.983565, 0.869968, 0.651112, 0.327624, 0, 0", \
                            "1.02989, 1.00724, 0.896544, 0.677336, 0.353045, 0, 0", \
                            "1.08356, 1.05466, 0.946528, 0.730323, 0.402798, 0.008272, 0", \
                            "1.17568, 1.14827, 1.04201, 0.822316, 0.467225, 0.0894542, 0", \
                            "1.38248, 1.35498, 1.24877, 1.02397, 0.674069, 0.296124, 0", \
                            "1.55111, 1.52372, 1.41746, 1.19776, 0.842776, 0.464915, 0.050457" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00804241;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          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.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "0.494516, 0.520454, 0.637373, 0.855052, 1.18116, 1.57102, 2.02312", \
                            "0.507078, 0.535414, 0.64746, 0.86724, 1.19236, 1.58411, 2.03753", \
                            "0.483362, 0.50644, 0.620818, 0.837353, 1.16433, 1.55617, 2.0075", \
                            "0.428439, 0.451077, 0.564124, 0.782672, 1.10969, 1.50139, 1.95492", \
                            "0.365442, 0.386672, 0.501457, 0.71654, 1.04971, 1.43682, 1.8843", \
                            "0.347776, 0.375342, 0.488444, 0.706574, 1.02391, 1.42219, 1.87286", \
                            "0.361174, 0.385253, 0.498817, 0.70873, 1.03903, 1.43341, 1.88342" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "2.09583, 2.07548, 1.99045, 1.8469, 1.72634, 1.64791, 1.59632", \
                            "2.08241, 2.0603, 1.97527, 1.83348, 1.71281, 1.62525, 1.5829", \
                            "2.10782, 2.08582, 2.00079, 1.85889, 1.73822, 1.64945, 1.60831", \
                            "2.15809, 2.13862, 2.05227, 1.90872, 1.78805, 1.69829, 1.65814", \
                            "2.22497, 2.20748, 2.11915, 1.97549, 1.85493, 1.76715, 1.72557", \
                            "2.24521, 2.2275, 2.13994, 1.99617, 1.87561, 1.79597, 1.74559", \
                            "2.23135, 2.21375, 2.12597, 1.98242, 1.86175, 1.77507, 1.73184" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.02518, 0.997326, 0.88616, 0.662981, 0.340076, 0, 0", \
                            "1.00849, 0.983565, 0.869968, 0.651112, 0.327624, 0, 0", \
                            "1.03133, 1.00839, 0.896544, 0.677666, 0.354761, 0, 0", \
                            "1.08356, 1.05837, 0.946528, 0.730323, 0.404635, 0.008272, 0", \
                            "1.14956, 1.12565, 1.01396, 0.797225, 0.463562, 0.075383, 0", \
                            "1.17149, 1.14647, 1.0359, 0.812361, 0.495561, 0.0963754, 0", \
                            "1.15677, 1.13295, 1.02212, 0.806905, 0.478654, 0.082291, 0" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0442684;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.26245, 1.25393, 1.28233, 1.42835, 1.66892, 1.85955, 1.98352", \
                            "1.27637, 1.27232, 1.29811, 1.44111, 1.68443, 1.86835, 1.99793", \
                            "1.25357, 1.24927, 1.27403, 1.41867, 1.65616, 1.84811, 1.97362", \
                            "1.20328, 1.1894, 1.2196, 1.36081, 1.60446, 1.7941, 1.92478", \
                            "1.13049, 1.12674, 1.15205, 1.2991, 1.53923, 1.72579, 1.85042", \
                            "1.11279, 1.10988, 1.13174, 1.28077, 1.52702, 1.71193, 1.83073", \
                            "1.1294, 1.11832, 1.15333, 1.29569, 1.54209, 1.72601, 1.84525" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.54363, 1.56915, 1.66309, 1.8612, 2.19758, 2.53748, 2.90972", \
                            "1.56387, 1.57762, 1.66551, 1.88386, 2.21254, 2.55585, 2.937", \
                            "1.53538, 1.55441, 1.65011, 1.85064, 2.18647, 2.52901, 2.90477", \
                            "1.47895, 1.50205, 1.59786, 1.79905, 2.12883, 2.47665, 2.85725", \
                            "1.41482, 1.43, 1.53109, 1.72766, 2.06206, 2.40889, 2.78883", \
                            "1.39436, 1.4157, 1.5125, 1.71259, 2.05073, 2.39382, 2.76914", \
                            "1.41229, 1.43022, 1.52009, 1.72909, 2.05722, 2.41505, 2.78542" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.15012, 1.16108, 1.11689, 1.04318, 0.97834, 0.952908, 0.914628", \
                            "1.17146, 1.18226, 1.14198, 1.06739, 1.01377, 0.982113, 0.943701", \
                            "1.2559, 1.26687, 1.22361, 1.14942, 1.08413, 1.05859, 1.02043", \
                            "1.42725, 1.4388, 1.39403, 1.31835, 1.25446, 1.22895, 1.19935", \
                            "1.62833, 1.63878, 1.59698, 1.52174, 1.45618, 1.43011, 1.39986", \
                            "1.82468, 1.83601, 1.79102, 1.71699, 1.65165, 1.6269, 1.59445", \
                            "1.958, 1.96922, 1.92478, 1.85097, 1.7853, 1.76044, 1.72249" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.23625, 1.21452, 1.11971, 1.01432, 0.915926, 0.862543, 0.824725", \
                            "1.25483, 1.23814, 1.14721, 1.03543, 0.937068, 0.883531, 0.845988", \
                            "1.34178, 1.32066, 1.2255, 1.12008, 1.02354, 0.96833, 0.930633", \
                            "1.51305, 1.49237, 1.39689, 1.29156, 1.19439, 1.13955, 1.102", \
                            "1.71413, 1.69345, 1.59797, 1.4927, 1.39601, 1.34079, 1.30295", \
                            "1.91081, 1.88914, 1.79421, 1.68894, 1.59049, 1.53692, 1.49941", \
                            "2.04391, 2.02312, 1.93391, 1.82215, 1.72546, 1.67035, 1.63273" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0174724;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.23989, 1.25757, 1.32484, 1.38754, 1.37621, 1.31824, 1.21883", \
                            "1.25655, 1.26514, 1.34167, 1.40635, 1.39821, 1.3376, 1.21291", \
                            "1.22912, 1.24597, 1.32495, 1.3783, 1.3717, 1.309, 1.19835", \
                            "1.16914, 1.19574, 1.26232, 1.31263, 1.32286, 1.24389, 1.13361", \
                            "1.10087, 1.12258, 1.20487, 1.25252, 1.25799, 1.17835, 1.05855", \
                            "1.08413, 1.11291, 1.18424, 1.23693, 1.22799, 1.16998, 1.05727", \
                            "1.097, 1.12333, 1.19344, 1.2603, 1.2487, 1.18379, 1.0602" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "0.06754, 0.077132, 0.184144, 0.420244, 0.761112, 1.1673, 1.62536", \
                            "0.0894949, 0.0930743, 0.200589, 0.436557, 0.77759, 1.17878, 1.63801", \
                            "0.068552, 0.066737, 0.174008, 0.410586, 0.751036, 1.15639, 1.61183", \
                            "0.013266, 0.011748, 0.119383, 0.355949, 0.696454, 1.10185, 1.55573", \
                            "0, 0, 0.049731, 0.290887, 0.631378, 1.03678, 1.49182", \
                            "0, 0, 0.033, 0.272323, 0.613349, 1.01875, 1.47411", \
                            "0, 0, 0.050204, 0.279133, 0.627231, 1.02619, 1.48786" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "0.879483, 0.874654, 0.79354, 0.737462, 0.738947, 0.805002, 0.902748", \
                            "0.864996, 0.855261, 0.78144, 0.718894, 0.720918, 0.780846, 0.905916", \
                            "0.903056, 0.877426, 0.802945, 0.74811, 0.746834, 0.810887, 0.922416", \
                            "0.961147, 0.930699, 0.862697, 0.812702, 0.80322, 0.888063, 0.99088", \
                            "1.02709, 1.00549, 0.921668, 0.878053, 0.868604, 0.948321, 1.05631", \
                            "1.04169, 1.0045, 0.939686, 0.884961, 0.885489, 0.951632, 1.07306", \
                            "1.03253, 1.00565, 0.932833, 0.876216, 0.877679, 0.938927, 1.06579" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          index_2 ("0.0200, 0.1472, 0.5937, 1.4462, 2.7748, 4.6388, 7.0901");
                          values  ( \
                            "1.5609, 1.55639, 1.45574, 1.2198, 0.881089, 0.478599, 0.020834", \
                            "1.54484, 1.54088, 1.44034, 1.20438, 0.865326, 0.463177, 0.005412", \
                            "1.57234, 1.56706, 1.46652, 1.2305, 0.89144, 0.489291, 0.031636", \
                            "1.6313, 1.6258, 1.52526, 1.28924, 0.950202, 0.548042, 0.0902781", \
                            "1.69631, 1.69092, 1.5906, 1.35465, 1.01557, 0.613426, 0.155692", \
                            "1.70841, 1.70269, 1.60226, 1.3662, 1.02717, 0.62502, 0.167343", \
                            "1.69829, 1.6951, 1.59456, 1.3585, 1.01949, 0.618992, 0.159675" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.000156966;
}
}
