/*
 * 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__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 : 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.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.25688, 4.27596, 4.32936, 4.42164, 4.55508, 4.74156, 4.98696", \
                            "4.2606, 4.27476, 4.33188, 4.42536, 4.55796, 4.74132, 4.98792", \
                            "4.25664, 4.27452, 4.32852, 4.4208, 4.55484, 4.73904, 4.98912", \
                            "4.25664, 4.27188, 4.33116, 4.42116, 4.55808, 4.74156, 4.98636", \
                            "4.26192, 4.28172, 4.335, 4.42596, 4.56132, 4.74384, 4.99092", \
                            "4.26372, 4.28136, 4.33728, 4.43112, 4.5636, 4.74996, 4.9914", \
                            "4.25184, 4.27104, 4.31952, 4.4178, 4.55208, 4.73832, 4.983" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
  	                     "0.190164, 0.210852, 0.295932, 0.465636, 0.739332, 1.14366, 1.67028" \
                          )

                          }
                          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.36992, 4.38852, 4.4436, 4.52976, 4.64592, 4.791, 4.97724", \
                            "4.37196, 4.3872, 4.446, 4.53408, 4.64784, 4.7916, 4.98168", \
                            "4.37004, 4.38768, 4.44504, 4.53156, 4.64664, 4.79184, 4.98192", \
                            "4.3698, 4.3854, 4.44744, 4.53228, 4.64532, 4.79484, 4.9788", \
                            "4.37352, 4.3932, 4.44948, 4.53636, 4.65204, 4.79532, 4.98444", \
                            "4.37556, 4.39476, 4.45176, 4.542, 4.65564, 4.80024, 4.98696", \
                            "4.36332, 4.3836, 4.43292, 4.52748, 4.6422, 4.7892, 4.97352" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
                            "0.18714, 0.208824, 0.274032, 0.388176, 0.556848, 0.798864, 1.11834" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.285194;
                  clock                : true;
                  max_transition       : 1.394;
                  min_pulse_width_high : 2.082885;
                  min_pulse_width_low  : 1.97373;
                  min_period           : 5.66085;

/* 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  ("1195.51, 1195.51, 1195.51, 1195.51, 1195.51, 1195.51, 1195.51");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("1195.51, 1195.51, 1195.51, 1195.51, 1195.51, 1195.51, 1195.51");
              }
             }
/* 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.0186604, 0.0186604, 0.0186604, 0.0186604, 0.0186604, 0.0186604, 0.0186604");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("0.0186604, 0.0186604, 0.0186604, 0.0186604, 0.0186604, 0.0186604, 0.0186604");
              }
             }
/* 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  ("1079.29, 1079.29, 1079.29, 1079.29, 1079.29, 1079.29, 1079.29");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("1079.29, 1079.29, 1079.29, 1079.29, 1079.29, 1079.29, 1079.29");
              }
             }
          }

          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.0173966;
                  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.410993, 0.407715, 0.401665, 0.406296, 0.420167, 0.444961, 0.472648", \
                            "0.410938, 0.40755, 0.401588, 0.406164, 0.418935, 0.445126, 0.471119", \
                            "0.410696, 0.407462, 0.401302, 0.405922, 0.41976, 0.44055, 0.463045", \
                            "0.410399, 0.40711, 0.401148, 0.405724, 0.419562, 0.440264, 0.452012", \
                            "0.410586, 0.407011, 0.400763, 0.405438, 0.419298, 0.440011, 0.452771", \
                            "0.410388, 0.406945, 0.400543, 0.405801, 0.416735, 0.439945, 0.456159", \
                            "0.418836, 0.414788, 0.409079, 0.414953, 0.433147, 0.468017, 0.493042" \
                          )
                          }
                          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.3883, 0.38995, 0.398321, 0.419144, 0.463881, 0.519233, 0.579964", \
                            "0.388157, 0.390005, 0.397012, 0.418979, 0.462605, 0.519057, 0.579799", \
                            "0.387937, 0.389499, 0.397914, 0.418737, 0.464134, 0.518815, 0.579568", \
                            "0.387783, 0.389587, 0.396561, 0.418539, 0.463287, 0.518639, 0.57937", \
                            "0.387486, 0.389059, 0.396242, 0.418011, 0.463023, 0.518397, 0.579106", \
                            "0.387508, 0.389257, 0.39622, 0.418198, 0.461582, 0.518364, 0.579029", \
                            "0.387332, 0.388894, 0.395978, 0.417901, 0.463551, 0.518232, 0.578963" \
                          )
                          }
                  }
                  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.07676, 1.08005, 1.08609, 1.08147, 1.06759, 1.05034, 1.03412", \
                            "1.09018, 1.09357, 1.09953, 1.09495, 1.08218, 1.06031, 1.04764", \
                            "1.1036, 1.10682, 1.11299, 1.10837, 1.09453, 1.07373, 1.06208", \
                            "1.12146, 1.12475, 1.13071, 1.12614, 1.1123, 1.0916, 1.07985", \
                            "1.1563, 1.15988, 1.16613, 1.16146, 1.14759, 1.12687, 1.11412", \
                            "1.18546, 1.18889, 1.19529, 1.19004, 1.1791, 1.15589, 1.14314", \
                            "1.20551, 1.20915, 1.21484, 1.21018, 1.19882, 1.17564, 1.16288" \
                          )
                          }
                          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.09946, 1.0978, 1.08943, 1.06861, 1.02388, 0.968528, 0.907786", \
                            "1.11295, 1.11111, 1.1041, 1.08214, 1.03851, 0.982058, 0.921316", \
                            "1.12635, 1.12479, 1.11638, 1.09555, 1.05016, 0.995467, 0.934725", \
                            "1.14407, 1.14227, 1.1353, 1.11332, 1.06857, 1.01322, 0.95249", \
                            "1.17941, 1.17782, 1.17064, 1.14887, 1.10387, 1.0485, 0.987789", \
                            "1.20833, 1.20658, 1.19962, 1.17764, 1.13425, 1.07747, 1.01681", \
                            "1.22817, 1.22661, 1.21953, 1.1976, 1.15195, 1.09727, 1.03654" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0490479;
                  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.561946, 0.564762, 0.571208, 0.59323, 0.629728, 0.676214, 0.720346", \
                            "0.560923, 0.564256, 0.570592, 0.592526, 0.628936, 0.674872, 0.71962", \
                            "0.553916, 0.557271, 0.563508, 0.585541, 0.622061, 0.667909, 0.712107", \
                            "0.535975, 0.539297, 0.545831, 0.567754, 0.604164, 0.650606, 0.694342", \
                            "0.497937, 0.501292, 0.507342, 0.529551, 0.56606, 0.612579, 0.656667", \
                            "0.466697, 0.469095, 0.474958, 0.497387, 0.533863, 0.580382, 0.624448", \
                            "0.438339, 0.441474, 0.44792, 0.469942, 0.506418, 0.553025, 0.597047" \
                          )
                          }
                          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.588808, 0.591701, 0.607464, 0.640948, 0.701778, 0.778789, 0.878064", \
                            "0.588093, 0.590997, 0.605957, 0.640178, 0.698335, 0.778756, 0.876942", \
                            "0.581097, 0.584023, 0.599874, 0.633226, 0.694606, 0.771221, 0.870463", \
                            "0.563288, 0.566236, 0.581196, 0.615483, 0.676225, 0.753324, 0.852544", \
                            "0.525118, 0.528033, 0.542993, 0.577049, 0.638, 0.717673, 0.813989", \
                            "0.492888, 0.496023, 0.510796, 0.545479, 0.60643, 0.685531, 0.781792", \
                            "0.465498, 0.468424, 0.483384, 0.517462, 0.578699, 0.655501, 0.754369" \
                          )
                          }
                  }
                  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.80564, 0.802868, 0.797126, 0.778954, 0.756756, 0.739838, 0.734514", \
                            "0.805211, 0.80256, 0.796257, 0.778602, 0.756239, 0.740509, 0.734173", \
                            "0.804881, 0.802252, 0.796444, 0.778261, 0.756063, 0.740157, 0.730466", \
                            "0.803935, 0.800998, 0.79541, 0.777238, 0.754864, 0.737913, 0.729443", \
                            "0.810733, 0.808247, 0.802241, 0.784674, 0.762234, 0.745294, 0.73997", \
                            "0.812988, 0.810733, 0.804958, 0.786775, 0.764566, 0.74767, 0.742346", \
                            "0.79937, 0.796873, 0.790911, 0.773014, 0.75053, 0.733634, 0.72831" \
                          )
                          }
                          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.471669, 0.468468, 0.452562, 0.419419, 0.359865, 0.285043, 0.188921", \
                            "0.470393, 0.467643, 0.452628, 0.418682, 0.361911, 0.285263, 0.188533", \
                            "0.470844, 0.467324, 0.452001, 0.419254, 0.35816, 0.283679, 0.188036", \
                            "0.469458, 0.46629, 0.451572, 0.418, 0.357247, 0.283338, 0.18702", \
                            "0.476894, 0.473451, 0.458733, 0.424831, 0.365299, 0.287364, 0.194378", \
                            "0.479281, 0.47608, 0.460801, 0.427713, 0.36575, 0.289718, 0.196889", \
                            "0.523402, 0.51997, 0.504746, 0.470008, 0.405779, 0.328273, 0.235949" \
                          )
                          }
                 }
          }
          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.231818, 0.235098, 0.250515, 0.28402, 0.343222, 0.417934, 0.51458", \
                            "0.232108, 0.235358, 0.251066, 0.283745, 0.340769, 0.418077, 0.514239", \
                            "0.232777, 0.236368, 0.251946, 0.285109, 0.345708, 0.420255, 0.515141", \
                            "0.232709, 0.237417, 0.250876, 0.284944, 0.346313, 0.419188, 0.515471", \
                            "0.225831, 0.229859, 0.244874, 0.278751, 0.338327, 0.416416, 0.50853", \
                            "0.224528, 0.229145, 0.243056, 0.27577, 0.337788, 0.41415, 0.506154", \
                            "0.237122, 0.240798, 0.254608, 0.289586, 0.348931, 0.422895, 0.51887" \
                          )
                          }
                  }
                  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.80564, 0.80344, 0.797126, 0.778954, 0.756756, 0.739838, 0.734514", \
                            "0.805211, 0.803297, 0.796257, 0.778602, 0.756239, 0.740509, 0.734173", \
                            "0.804881, 0.802736, 0.796444, 0.778261, 0.756063, 0.740157, 0.73106", \
                            "0.803935, 0.801724, 0.79541, 0.777238, 0.754864, 0.737913, 0.730037", \
                            "0.810733, 0.808863, 0.802241, 0.784674, 0.762234, 0.745294, 0.73997", \
                            "0.812988, 0.810986, 0.804958, 0.786775, 0.764566, 0.74767, 0.742346", \
                            "0.79937, 0.797225, 0.790911, 0.773014, 0.75053, 0.733634, 0.72831" \
                          )
                          }
                          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.471669, 0.468468, 0.452562, 0.419419, 0.359865, 0.285043, 0.188921", \
                            "0.471339, 0.467643, 0.452628, 0.419727, 0.361911, 0.285263, 0.188533", \
                            "0.470844, 0.467324, 0.452001, 0.419254, 0.35816, 0.283679, 0.188036", \
                            "0.469535, 0.46629, 0.451572, 0.418, 0.357247, 0.283338, 0.18702", \
                            "0.477411, 0.473451, 0.458733, 0.425216, 0.365299, 0.287364, 0.194378", \
                            "0.479281, 0.47608, 0.460801, 0.427713, 0.36575, 0.289718, 0.196889", \
                            "0.464992, 0.461813, 0.447073, 0.413556, 0.353177, 0.278762, 0.18289" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0376076;
                  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.474485, 0.471955, 0.467346, 0.471867, 0.496111, 0.525822, 0.554037", \
                            "0.475431, 0.473, 0.467687, 0.471405, 0.493449, 0.526471, 0.55286", \
                            "0.475552, 0.472428, 0.468072, 0.471361, 0.496408, 0.52822, 0.553003", \
                            "0.476157, 0.473583, 0.468369, 0.471823, 0.494351, 0.527483, 0.552101", \
                            "0.46948, 0.467115, 0.463804, 0.467632, 0.490457, 0.521543, 0.547965", \
                            "0.467665, 0.464596, 0.45991, 0.464662, 0.48587, 0.519398, 0.545688", \
                            "0.480029, 0.475541, 0.472241, 0.477587, 0.499081, 0.528484, 0.558855" \
                          )
                          }
                          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.606903, 0.609884, 0.620455, 0.640255, 0.685267, 0.75163, 0.830929", \
                            "0.607673, 0.609378, 0.620488, 0.640948, 0.686279, 0.751531, 0.82324", \
                            "0.609697, 0.610005, 0.620532, 0.64163, 0.685597, 0.753115, 0.827816", \
                            "0.610368, 0.610247, 0.619674, 0.641751, 0.686323, 0.753313, 0.83127", \
                            "0.603317, 0.604175, 0.614691, 0.635228, 0.680713, 0.746592, 0.82258", \
                            "0.600182, 0.602096, 0.612293, 0.633875, 0.678117, 0.743413, 0.821843", \
                            "0.61358, 0.614009, 0.625196, 0.645601, 0.689568, 0.756734, 0.834878" \
                          )
                          }
                  }
                  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.493559, 0.49654, 0.497992, 0.495308, 0.495242, 0.49522, 0.494362", \
                            "0.496419, 0.499466, 0.500918, 0.498234, 0.498168, 0.498146, 0.497288", \
                            "0.50424, 0.507287, 0.508739, 0.506055, 0.505989, 0.505967, 0.505109", \
                            "0.523435, 0.526482, 0.527945, 0.52525, 0.525195, 0.525173, 0.524304", \
                            "0.55132, 0.554378, 0.55583, 0.553146, 0.55308, 0.553058, 0.5522", \
                            "0.582076, 0.585266, 0.586575, 0.583891, 0.583825, 0.583803, 0.582945", \
                            "0.606111, 0.609092, 0.610544, 0.60786, 0.607794, 0.607772, 0.606914" \
                          )
                          }
                          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.50171, 0.500236, 0.490435, 0.477378, 0.475211, 0.481448, 0.488807", \
                            "0.504603, 0.503162, 0.493361, 0.480315, 0.478137, 0.484374, 0.491733", \
                            "0.512424, 0.510609, 0.501182, 0.488125, 0.485958, 0.492195, 0.499554", \
                            "0.531982, 0.529848, 0.520377, 0.507331, 0.505153, 0.511401, 0.518749", \
                            "0.559922, 0.558074, 0.548273, 0.535227, 0.533049, 0.539297, 0.546645", \
                            "0.590601, 0.588456, 0.579018, 0.565972, 0.563794, 0.570042, 0.57739", \
                            "0.614229, 0.612788, 0.602987, 0.589941, 0.587763, 0.594011, 0.601359" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0157294;
                  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.402809, 0.405207, 0.410993, 0.417021, 0.406703, 0.381491, 0.339603", \
                            "0.400488, 0.405724, 0.410982, 0.416119, 0.40524, 0.384219, 0.342067", \
                            "0.402248, 0.405306, 0.413193, 0.415855, 0.407649, 0.385044, 0.341979", \
                            "0.403282, 0.405031, 0.413633, 0.417626, 0.408045, 0.385572, 0.341055", \
                            "0.397628, 0.399311, 0.406637, 0.410388, 0.402017, 0.377718, 0.333916", \
                            "0.395263, 0.398255, 0.404415, 0.408738, 0.398915, 0.375826, 0.332354", \
                            "0.408276, 0.40744, 0.417538, 0.420871, 0.411356, 0.390478, 0.343893" \
                          )
                          }
                          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.0931337, 0.0952138, 0.111448, 0.156911, 0.230205, 0.327987, 0.452155", \
                            "0.0935143, 0.0943492, 0.111492, 0.156823, 0.230259, 0.327778, 0.451979", \
                            "0.0943448, 0.0942513, 0.111772, 0.157289, 0.230295, 0.328515, 0.452925", \
                            "0.0944427, 0.0940214, 0.111805, 0.157447, 0.231331, 0.328592, 0.453002", \
                            "0.0885544, 0.0886127, 0.105997, 0.151376, 0.223247, 0.322685, 0.447128", \
                            "0.0854865, 0.0855965, 0.1037, 0.149174, 0.220792, 0.319979, 0.444114", \
                            "0.0985138, 0.0991507, 0.115847, 0.161096, 0.2331, 0.332442, 0.456918" \
                          )
                          }
                  }
                  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.479853, 0.47828, 0.471009, 0.465377, 0.476014, 0.500643, 0.54362", \
                            "0.479523, 0.477939, 0.47091, 0.46486, 0.475728, 0.499301, 0.541024", \
                            "0.479193, 0.477477, 0.47003, 0.464376, 0.474507, 0.497684, 0.541915", \
                            "0.478104, 0.476278, 0.470129, 0.464079, 0.474738, 0.498069, 0.541585", \
                            "0.485056, 0.481921, 0.476322, 0.471581, 0.480282, 0.504669, 0.54879", \
                            "0.487025, 0.484671, 0.478467, 0.474485, 0.483527, 0.506044, 0.54802", \
                            "0.474452, 0.47443, 0.466147, 0.462055, 0.471592, 0.493856, 0.539319" \
                          )
                          }
                          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.644633, 0.643159, 0.627099, 0.581251, 0.507738, 0.410344, 0.287903", \
                            "0.643951, 0.643478, 0.626582, 0.580723, 0.507221, 0.409827, 0.2882", \
                            "0.643368, 0.643016, 0.62612, 0.580272, 0.507342, 0.409365, 0.287254", \
                            "0.642796, 0.642653, 0.625801, 0.579953, 0.506451, 0.409046, 0.286605", \
                            "0.649011, 0.648791, 0.631895, 0.586047, 0.513161, 0.41514, 0.292699", \
                            "0.652355, 0.651365, 0.634513, 0.588665, 0.515163, 0.417758, 0.295328", \
                            "0.639463, 0.63954, 0.622369, 0.576521, 0.503437, 0.405614, 0.283173" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.0186604;
}
}
