/*
 * 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__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 : 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      : 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.51512, 4.53216, 4.58664, 4.67784, 4.81044, 4.99872, 5.24256", \
                            "4.51524, 4.53324, 4.59072, 4.677, 4.812, 4.9974, 5.24508", \
                            "4.51608, 4.52916, 4.58604, 4.67676, 4.81164, 4.99656, 5.24412", \
                            "4.51296, 4.53288, 4.5876, 4.67784, 4.81392, 4.998, 5.2416", \
                            "4.52076, 4.53708, 4.59192, 4.68456, 4.81896, 5.00304, 5.24448", \
                            "4.5216, 4.54176, 4.5954, 4.68312, 4.8192, 5.00448, 5.24988", \
                            "4.51308, 4.5348, 4.58868, 4.67532, 4.809, 4.99524, 5.23716" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
  	                     "0.189252, 0.213504, 0.296232, 0.467052, 0.739128, 1.14301, 1.66944" \
                          )

                          }
                          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.6284, 4.64568, 4.70388, 4.79112, 4.90524, 5.05056, 5.23776", \
                            "4.62948, 4.64604, 4.707, 4.78752, 4.9032, 5.05044, 5.24076", \
                            "4.62876, 4.64352, 4.69812, 4.78776, 4.90092, 5.0448, 5.2368", \
                            "4.62696, 4.64352, 4.70184, 4.78632, 4.90392, 5.04828, 5.23632", \
                            "4.6344, 4.64988, 4.70628, 4.7958, 4.91004, 5.05716, 5.2398", \
                            "4.63584, 4.65444, 4.70988, 4.79652, 4.91124, 5.05812, 5.24664", \
                            "4.62312, 4.64604, 4.70136, 4.78356, 4.89768, 5.04564, 5.2296" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.01, 0.02988, 0.09966, 0.2329, 0.4405, 0.7318, 1.115");
                          values  ( \
                            "0.187752, 0.208884, 0.274332, 0.386436, 0.55596, 0.798216, 1.12002" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.284845;
                  clock                : true;
                  max_transition       : 1.394;
                  min_pulse_width_high : 2.103825;
                  min_pulse_width_low  : 1.981425;
                  min_period           : 6.07704;

/* 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  ("1293.85, 1293.85, 1293.85, 1293.85, 1293.85, 1293.85, 1293.85");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("1293.85, 1293.85, 1293.85, 1293.85, 1293.85, 1293.85, 1293.85");
              }
             }
/* 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.030899, 0.030899, 0.030899, 0.030899, 0.030899, 0.030899, 0.030899");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("0.030899, 0.030899, 0.030899, 0.030899, 0.030899, 0.030899, 0.030899");
              }
             }
/* 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  ("1165.42, 1165.42, 1165.42, 1165.42, 1165.42, 1165.42, 1165.42");
              }
              fall_power(power_template) {
                index_1 ("0.02, 0.04471, 0.1314, 0.2971, 0.5551, 0.9172, 1.394");
                values  ("1165.42, 1165.42, 1165.42, 1165.42, 1165.42, 1165.42, 1165.42");
              }
             }
          }

          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.0173055;
                  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.411015, 0.407924, 0.402347, 0.404899, 0.423368, 0.447172, 0.472615", \
                            "0.411048, 0.407935, 0.402215, 0.404734, 0.423203, 0.445665, 0.470448", \
                            "0.409937, 0.407495, 0.401357, 0.404492, 0.423654, 0.440605, 0.46222", \
                            "0.410784, 0.407407, 0.401291, 0.404316, 0.422774, 0.440418, 0.453024", \
                            "0.409915, 0.407286, 0.400972, 0.404041, 0.422521, 0.440165, 0.452771", \
                            "0.409959, 0.406516, 0.400785, 0.403953, 0.423115, 0.440066, 0.454069", \
                            "0.419188, 0.415811, 0.41008, 0.414502, 0.438669, 0.465487, 0.492426" \
                          )
                          }
                          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.388872, 0.390258, 0.399113, 0.42064, 0.465267, 0.519519, 0.580701", \
                            "0.388938, 0.390093, 0.398937, 0.420475, 0.465102, 0.519409, 0.580536", \
                            "0.389169, 0.389862, 0.399311, 0.420244, 0.46486, 0.519167, 0.580294", \
                            "0.388509, 0.389664, 0.398508, 0.420035, 0.464673, 0.518947, 0.580107", \
                            "0.388245, 0.3894, 0.398255, 0.419793, 0.46442, 0.518694, 0.579854", \
                            "0.387871, 0.389312, 0.398167, 0.419694, 0.464321, 0.518628, 0.579755", \
                            "0.388619, 0.38929, 0.398167, 0.419683, 0.464277, 0.518628, 0.579755" \
                          )
                          }
                  }
                  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.07749, 1.08059, 1.08616, 1.08361, 1.06514, 1.0475, 1.03488", \
                            "1.09031, 1.09343, 1.09914, 1.09662, 1.07815, 1.06051, 1.0479", \
                            "1.10274, 1.10518, 1.11132, 1.10818, 1.08902, 1.07206, 1.05945", \
                            "1.12333, 1.12671, 1.13282, 1.1298, 1.11134, 1.0937, 1.08109", \
                            "1.15544, 1.15807, 1.16438, 1.16131, 1.14283, 1.1252, 1.11258", \
                            "1.1817, 1.18515, 1.19087, 1.18771, 1.16855, 1.1516, 1.13898", \
                            "1.20181, 1.20518, 1.21124, 1.20783, 1.18979, 1.17294, 1.15948" \
                          )
                          }
                          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.09964, 1.09825, 1.0894, 1.06787, 1.02324, 0.96899, 0.907808", \
                            "1.11242, 1.11126, 1.10242, 1.08088, 1.03625, 0.981948, 0.920821", \
                            "1.12351, 1.1228, 1.11337, 1.09243, 1.04781, 0.993498, 0.932371", \
                            "1.14562, 1.14445, 1.13562, 1.11408, 1.06944, 1.01518, 0.954008", \
                            "1.17711, 1.17596, 1.1671, 1.14557, 1.10094, 1.04667, 0.985501", \
                            "1.2038, 1.20234, 1.1935, 1.17197, 1.12735, 1.07304, 1.01191", \
                            "1.22354, 1.22287, 1.21399, 1.19248, 1.14788, 1.09353, 1.03241" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0490477;
                  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.562232, 0.564278, 0.570702, 0.591107, 0.627374, 0.675554, 0.717057", \
                            "0.561407, 0.563816, 0.570471, 0.590832, 0.627704, 0.675521, 0.719356", \
                            "0.554301, 0.556545, 0.563233, 0.583627, 0.619993, 0.668338, 0.713317", \
                            "0.533929, 0.536316, 0.542828, 0.563145, 0.599423, 0.64757, 0.691669", \
                            "0.499994, 0.502678, 0.509025, 0.529342, 0.565851, 0.614053, 0.659285", \
                            "0.469095, 0.471845, 0.478335, 0.498674, 0.535601, 0.583099, 0.628298", \
                            "0.441573, 0.444246, 0.450758, 0.471086, 0.507353, 0.555786, 0.60071" \
                          )
                          }
                          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.587928, 0.590832, 0.604758, 0.639155, 0.697631, 0.778217, 0.874478", \
                            "0.587246, 0.590557, 0.605825, 0.639683, 0.697356, 0.779801, 0.876018", \
                            "0.580272, 0.583396, 0.59818, 0.631741, 0.693308, 0.770924, 0.866525", \
                            "0.55957, 0.56287, 0.577709, 0.61138, 0.671484, 0.752741, 0.846329", \
                            "0.525767, 0.528869, 0.543895, 0.577577, 0.639023, 0.718938, 0.814539", \
                            "0.495308, 0.498399, 0.512325, 0.546909, 0.605198, 0.687566, 0.781583", \
                            "0.467731, 0.4708, 0.485628, 0.5192, 0.577599, 0.659637, 0.753984" \
                          )
                          }
                  }
                  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.818994, 0.817993, 0.810986, 0.793848, 0.771023, 0.757361, 0.752433", \
                            "0.819511, 0.818785, 0.811316, 0.794167, 0.771331, 0.757658, 0.746812", \
                            "0.816728, 0.814605, 0.808269, 0.791131, 0.768306, 0.754611, 0.742005", \
                            "0.818774, 0.81774, 0.810634, 0.793397, 0.77055, 0.75691, 0.746042", \
                            "0.822173, 0.820281, 0.814033, 0.79684, 0.774004, 0.760342, 0.747725", \
                            "0.825187, 0.823009, 0.816706, 0.799568, 0.776743, 0.76307, 0.750442", \
                            "0.813912, 0.812691, 0.805706, 0.788557, 0.765743, 0.752037, 0.739431" \
                          )
                          }
                          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.485144, 0.482218, 0.467709, 0.43252, 0.373813, 0.298122, 0.203966", \
                            "0.485661, 0.482988, 0.468061, 0.433488, 0.374132, 0.295625, 0.203605", \
                            "0.483252, 0.479875, 0.465036, 0.430111, 0.369644, 0.293161, 0.201254", \
                            "0.485408, 0.4818, 0.467324, 0.432476, 0.374649, 0.296384, 0.203231", \
                            "0.488719, 0.485221, 0.470734, 0.43582, 0.375364, 0.299827, 0.206272", \
                            "0.491766, 0.488092, 0.473011, 0.438548, 0.379533, 0.302819, 0.209004", \
                            "0.518474, 0.514734, 0.499851, 0.46508, 0.404206, 0.32208, 0.233776" \
                          )
                          }
                 }
          }
          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.218044, 0.222242, 0.236276, 0.271538, 0.330693, 0.405834, 0.50083", \
                            "0.2166, 0.220381, 0.234883, 0.2696, 0.32912, 0.407748, 0.500335", \
                            "0.219079, 0.222958, 0.237272, 0.272348, 0.332959, 0.4092, 0.502821", \
                            "0.216993, 0.221209, 0.234903, 0.270689, 0.328581, 0.406824, 0.500599", \
                            "0.214657, 0.21895, 0.232943, 0.26851, 0.32802, 0.40458, 0.498927", \
                            "0.211681, 0.21556, 0.230441, 0.265261, 0.324588, 0.400367, 0.494879", \
                            "0.221971, 0.226207, 0.24069, 0.275594, 0.33462, 0.412049, 0.506088" \
                          )
                          }
                  }
                  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.818994, 0.817993, 0.810986, 0.793848, 0.771023, 0.757361, 0.752433", \
                            "0.819511, 0.818785, 0.811316, 0.794167, 0.771331, 0.757658, 0.746812", \
                            "0.816728, 0.815364, 0.808269, 0.791131, 0.768306, 0.754611, 0.743677", \
                            "0.818774, 0.81774, 0.810634, 0.793397, 0.77055, 0.75691, 0.746042", \
                            "0.822173, 0.820754, 0.814033, 0.79684, 0.774004, 0.760342, 0.749078", \
                            "0.825187, 0.823471, 0.816706, 0.799568, 0.776743, 0.76307, 0.751784", \
                            "0.813912, 0.812691, 0.805706, 0.788557, 0.765743, 0.752037, 0.740784" \
                          )
                          }
                          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.485144, 0.482218, 0.467709, 0.43252, 0.373813, 0.298122, 0.203966", \
                            "0.485661, 0.482988, 0.468061, 0.433488, 0.374132, 0.295625, 0.203605", \
                            "0.48367, 0.479875, 0.465036, 0.430111, 0.369644, 0.293161, 0.201254", \
                            "0.485408, 0.4818, 0.467324, 0.432476, 0.374649, 0.296384, 0.203231", \
                            "0.488719, 0.485221, 0.470734, 0.43582, 0.375375, 0.299827, 0.206272", \
                            "0.491799, 0.488092, 0.473011, 0.438548, 0.379533, 0.302819, 0.209004", \
                            "0.480799, 0.476883, 0.462297, 0.427548, 0.368522, 0.290928, 0.19799" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0375921;
                  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.578677, 0.573518, 0.570845, 0.577269, 0.602866, 0.634095, 0.662805", \
                            "0.577643, 0.574959, 0.5687, 0.577016, 0.600413, 0.632918, 0.661078", \
                            "0.577016, 0.573155, 0.570482, 0.579249, 0.603075, 0.636515, 0.660748", \
                            "0.578556, 0.572253, 0.569679, 0.576015, 0.601909, 0.635107, 0.658999", \
                            "0.576576, 0.572572, 0.56859, 0.574134, 0.599632, 0.632126, 0.656711", \
                            "0.573947, 0.566093, 0.563486, 0.571813, 0.59642, 0.629321, 0.653873", \
                            "0.584265, 0.580558, 0.573628, 0.582923, 0.606221, 0.640618, 0.664697" \
                          )
                          }
                          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.864347, 0.866822, 0.875798, 0.897402, 0.945648, 1.00675, 1.08746", \
                            "0.863929, 0.866536, 0.873939, 0.897072, 0.942832, 1.00566, 1.08688", \
                            "0.86603, 0.869462, 0.878152, 0.896335, 0.944009, 1.00883, 1.08728", \
                            "0.866921, 0.866965, 0.875061, 0.897149, 0.941523, 1.00652, 1.08623", \
                            "0.862686, 0.86592, 0.872839, 0.895312, 0.937849, 1.00412, 1.08485", \
                            "0.860772, 0.863643, 0.868879, 0.890725, 0.939532, 1.00082, 1.08031", \
                            "0.870221, 0.872751, 0.881144, 0.901802, 0.946638, 1.00978, 1.09216" \
                          )
                          }
                  }
                  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.495913, 0.499741, 0.501204, 0.498476, 0.498366, 0.495297, 0.495506", \
                            "0.498058, 0.501545, 0.502986, 0.500291, 0.500181, 0.497112, 0.49731", \
                            "0.506066, 0.509916, 0.511401, 0.508651, 0.508541, 0.505472, 0.505681", \
                            "0.525613, 0.528308, 0.529749, 0.527065, 0.526944, 0.523886, 0.524084", \
                            "0.553366, 0.556193, 0.557667, 0.554928, 0.554818, 0.551749, 0.551947", \
                            "0.585024, 0.588995, 0.59048, 0.587741, 0.587631, 0.584562, 0.58476", \
                            "0.604406, 0.608146, 0.60962, 0.606892, 0.606782, 0.603713, 0.603911" \
                          )
                          }
                          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.505505, 0.503459, 0.494197, 0.481536, 0.479369, 0.488675, 0.495495", \
                            "0.507474, 0.505252, 0.496001, 0.483351, 0.481239, 0.490501, 0.49731", \
                            "0.515812, 0.513634, 0.504361, 0.492294, 0.493416, 0.498861, 0.50567", \
                            "0.534226, 0.532026, 0.522775, 0.510334, 0.51183, 0.517275, 0.524084", \
                            "0.562089, 0.5599, 0.550649, 0.537988, 0.539693, 0.545127, 0.551947", \
                            "0.594814, 0.592724, 0.583462, 0.571384, 0.568667, 0.577951, 0.58476", \
                            "0.613888, 0.611864, 0.602646, 0.59015, 0.591657, 0.597091, 0.603911" \
                          )
                          }
                 }
          }
          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.391215, 0.39204, 0.399421, 0.40315, 0.389928, 0.371118, 0.326744", \
                            "0.388487, 0.391226, 0.397441, 0.402182, 0.391732, 0.371294, 0.325061", \
                            "0.390852, 0.393184, 0.399542, 0.402809, 0.39193, 0.372207, 0.326535", \
                            "0.38852, 0.391567, 0.400059, 0.403062, 0.392942, 0.370667, 0.326524", \
                            "0.387156, 0.388905, 0.397232, 0.39776, 0.392227, 0.369512, 0.321552", \
                            "0.383581, 0.385407, 0.392469, 0.395879, 0.386342, 0.364991, 0.322234", \
                            "0.394317, 0.395802, 0.404327, 0.405856, 0.399619, 0.375639, 0.332398" \
                          )
                          }
                          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.0803055, 0.0811426, 0.0958408, 0.143787, 0.217157, 0.314666, 0.438845", \
                            "0.0798226, 0.0787336, 0.0954899, 0.142509, 0.216312, 0.314435, 0.438251", \
                            "0.0814836, 0.0806839, 0.0972356, 0.144946, 0.218242, 0.316096, 0.439989", \
                            "0.0809699, 0.0802208, 0.0965272, 0.143107, 0.216429, 0.314391, 0.438141", \
                            "0.0778052, 0.0787391, 0.0948332, 0.14126, 0.214953, 0.312697, 0.436678", \
                            "0.0738716, 0.0749969, 0.0914683, 0.138119, 0.211224, 0.308748, 0.433158", \
                            "0.0855943, 0.0848683, 0.10161, 0.149079, 0.222158, 0.319682, 0.443938" \
                          )
                          }
                  }
                  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.49137, 0.49225, 0.483989, 0.479446, 0.489423, 0.513139, 0.556127", \
                            "0.493537, 0.493174, 0.485419, 0.480898, 0.490842, 0.512347, 0.559086", \
                            "0.492514, 0.491557, 0.483186, 0.479446, 0.488631, 0.511819, 0.554862", \
                            "0.493647, 0.493108, 0.485254, 0.480634, 0.490666, 0.513513, 0.557095", \
                            "0.495847, 0.494054, 0.486706, 0.483032, 0.492272, 0.514888, 0.558877", \
                            "0.499158, 0.49764, 0.489687, 0.485694, 0.495253, 0.518837, 0.561297", \
                            "0.489291, 0.487641, 0.480282, 0.476201, 0.484924, 0.509399, 0.551958" \
                          )
                          }
                          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.658053, 0.65714, 0.640266, 0.594374, 0.521323, 0.4235, 0.30107", \
                            "0.658537, 0.658768, 0.641696, 0.595837, 0.522753, 0.42493, 0.3025", \
                            "0.656403, 0.656337, 0.639463, 0.593604, 0.52052, 0.422697, 0.300267", \
                            "0.65868, 0.658603, 0.641531, 0.595672, 0.522588, 0.424765, 0.302335", \
                            "0.660187, 0.66, 0.643126, 0.597267, 0.524183, 0.426371, 0.30393", \
                            "0.663784, 0.663036, 0.645953, 0.600105, 0.527021, 0.429198, 0.306768", \
                            "0.653147, 0.653059, 0.63624, 0.590392, 0.517308, 0.419485, 0.297055" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.030899;
}
}
