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

library(gf180mcu_fd_ip_sram__sram512x8m8wm1__tt_025C_3v30) {
        delay_model             : table_lookup;
        revision                : 1.0;
        date                    : "June 20, 2014";
        comment                 : "GF 180nm 5V Green";
        voltage_unit            : "1V";
        time_unit               : "1ns";
        current_unit            : "1mA";
        leakage_power_unit      : "1mW";
        nom_process             : 1;
        nom_temperature         : 25;
        nom_voltage             : 3.3;
        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         : 3.1779;
        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.3);
         voltage_map (VSS, 0.00);
         operating_conditions(tt_3p3v_25C) {
                process       : 1;
                temperature   : 25;
                voltage       : 3.3;
                tree_type     : balanced_tree;
         }

         default_operating_conditions : tt_3p3v_25C;
         wire_load("Estimate") {
                resistance    : 1.44e-05;
                capacitance   : 0.00018;
                area          : 1.7;
                slope         : 500;
                fanout_length (1,500);
         }
         power_lut_template(power_template) {
            variable_1 : input_transition_time;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }
         lu_table_template(q_delay_template) {
            variable_1 : input_net_transition;
            variable_2 : total_output_net_capacitance;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
                 index_2 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }
         lu_table_template(q_slew_template) {
            variable_1 : total_output_net_capacitance;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }
         lu_table_template(constraint_template) {
            variable_1 : related_pin_transition;
            variable_2 : constrained_pin_transition;
                 index_1 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
                 index_2 ("1001, 1002, 1003, 1004, 1005, 1006, 1007");
         }

         library_features(report_delay_calculation);

         type (A_BUS) {
                base_type : array;
                data_type : bit;
                bit_width : 9;
                bit_from  : 8;
                bit_to    : 0;
                downto    : true;
         }
         type (Q_BUS) {
                base_type : array;
                data_type : bit;
                bit_width : 8;
                bit_from  : 7;
                bit_to    : 0;
                downto    : true;
         }
 cell(gf180mcu_fd_ip_sram__sram512x8m8wm1) {
        area             : 209400.2768;
        dont_use         : TRUE;
        dont_touch       : TRUE;
        interface_timing : TRUE;
        memory() {
                type          : ram;
                address_width : 9;
                word_width    : 8;
        }

                 bus(Q)   {
                  bus_type             : Q_BUS;
                  direction            : output;
                  max_capacitance      : 1.0423;
                  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.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
			  index_2 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
                            "6.9234, 6.95652, 7.03452, 7.17396, 7.3776, 7.65684, 8.0352", \
                            "6.91956, 6.95424, 7.035, 7.1754, 7.38084, 7.6608, 8.0238", \
                            "6.9432, 6.9624, 7.05048, 7.19136, 7.4088, 7.67436, 8.0724", \
                            "6.9738, 6.9912, 7.08108, 7.22916, 7.42416, 7.704, 8.0772", \
                            "6.98856, 7.02672, 7.09632, 7.23984, 7.44456, 7.73736, 8.09448", \
                            "7.00092, 7.04172, 7.11504, 7.25664, 7.46064, 7.75836, 8.13084", \
                            "7.00104, 7.02072, 7.104, 7.2438, 7.44984, 7.73256, 8.10336" \
                          )
                          }
                          rise_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
  	                     "0.227676, 0.266148, 0.399252, 0.646284, 1.03256, 1.59804, 2.33544" \
                          )

                          }
                          cell_fall(q_delay_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
                            "7.17732, 7.20636, 7.2762, 7.3968, 7.55184, 7.7292, 7.97664", \
                            "7.1754, 7.20504, 7.27392, 7.39608, 7.5558, 7.73496, 7.96656", \
                            "7.19184, 7.21116, 7.29408, 7.41468, 7.57452, 7.7562, 8.01096", \
                            "7.22556, 7.24188, 7.32672, 7.45092, 7.59864, 7.7832, 8.01732", \
                            "7.24164, 7.27764, 7.34172, 7.46136, 7.614, 7.81248, 8.03592", \
                            "7.25136, 7.29696, 7.35468, 7.47636, 7.62948, 7.83264, 8.06604", \
                            "7.25364, 7.26672, 7.34784, 7.46424, 7.61688, 7.80852, 8.04" \
                          )
                          }
                          fall_transition(q_slew_template) {
                          index_1 ("0.0100, 0.0286, 0.0937, 0.2182, 0.4121, 0.6842, 1.0423");
                          values  ( \
                            "0.228072, 0.25524, 0.345948, 0.484512, 0.691248, 0.986772, 1.35444" \
                          )
                          }
                  }
          }
          pin(CLK)   {
                  direction            : input;
                  capacitance          : 0.293159;
                  clock                : true;
                  max_transition       : 3.1779;
                  min_pulse_width_high : 3.58023;
                  min_pulse_width_low  : 3.33447;
                  min_period           : 9.24063;

/* 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.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("408.606, 408.606, 408.606, 408.606, 408.606, 408.606, 408.606");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("408.606, 408.606, 408.606, 408.606, 408.606, 408.606, 408.606");
              }
             }
/* DISABLED POWER */
             internal_power() {
              when : "CEN";
              rise_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("0.000271659, 0.000271659, 0.000271659, 0.000271659, 0.000271659, 0.000271659, 0.000271659");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("0.000271659, 0.000271659, 0.000271659, 0.000271659, 0.000271659, 0.000271659, 0.000271659");
              }
             }
/* READ POWER */
             internal_power() {
             when : "!CEN & GWEN";
             rise_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("369.6, 369.6, 369.6, 369.6, 369.6, 369.6, 369.6");
              }
              fall_power(power_template) {
                index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                values  ("369.6, 369.6, 369.6, 369.6, 369.6, 369.6, 369.6");
              }
             }
          }

          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.01827;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.612843, 0.599731, 0.603845, 0.657217, 0.736076, 0.787589, 0.826936", \
                            "0.602283, 0.589182, 0.592801, 0.646679, 0.725516, 0.777007, 0.816343", \
                            "0.585101, 0.576026, 0.575718, 0.621478, 0.691548, 0.746086, 0.785323", \
                            "0.586025, 0.574739, 0.575465, 0.621214, 0.676643, 0.696036, 0.735427", \
                            "0.584375, 0.57541, 0.575036, 0.620851, 0.676225, 0.696542, 0.719455", \
                            "0.584903, 0.574156, 0.574893, 0.620631, 0.676071, 0.695464, 0.719191", \
                            "0.585189, 0.575234, 0.574618, 0.620367, 0.675147, 0.724823, 0.763081" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.541519, 0.549307, 0.58278, 0.663564, 0.789701, 0.927014, 1.07832", \
                            "0.540804, 0.547723, 0.581603, 0.662442, 0.786786, 0.926486, 1.07716", \
                            "0.539033, 0.54637, 0.580932, 0.659857, 0.778998, 0.925045, 1.07572", \
                            "0.538989, 0.546458, 0.579898, 0.66066, 0.778525, 0.924132, 1.07545", \
                            "0.537999, 0.545776, 0.580217, 0.659241, 0.778162, 0.923076, 1.07509", \
                            "0.538527, 0.545556, 0.579293, 0.659021, 0.784542, 0.923571, 1.07484", \
                            "0.537856, 0.545171, 0.579788, 0.659813, 0.784245, 0.923945, 1.0746" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.59346, 1.60347, 1.60281, 1.55804, 1.5015, 1.48214, 1.45838", \
                            "1.6016, 1.61161, 1.61095, 1.56618, 1.50964, 1.49028, 1.46652", \
                            "1.6335, 1.64263, 1.64285, 1.59709, 1.54462, 1.52229, 1.49864", \
                            "1.70797, 1.7193, 1.71853, 1.67277, 1.61733, 1.59808, 1.57421", \
                            "1.79795, 1.80686, 1.8073, 1.76143, 1.7061, 1.68575, 1.66287", \
                            "1.88386, 1.89464, 1.89387, 1.84811, 1.79267, 1.77331, 1.74955", \
                            "1.93138, 1.94128, 1.94194, 1.89618, 1.8414, 1.82039, 1.79762" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.63955, 1.63174, 1.5983, 1.51745, 1.39139, 1.25404, 1.10274", \
                            "1.64725, 1.64032, 1.60644, 1.52559, 1.40118, 1.26154, 1.11086", \
                            "1.67959, 1.67222, 1.63768, 1.5587, 1.43957, 1.29357, 1.1429", \
                            "1.75505, 1.74757, 1.71413, 1.63339, 1.51547, 1.36994, 1.21859", \
                            "1.84426, 1.83656, 1.80213, 1.72304, 1.60413, 1.45926, 1.30724", \
                            "1.93017, 1.92324, 1.88947, 1.80972, 1.68421, 1.54517, 1.39392", \
                            "1.97868, 1.97131, 1.93677, 1.85669, 1.73228, 1.59258, 1.44188" \
                          )
                          }
                 }
          }
          pin(GWEN)   {
                  direction            : input;
                  capacitance          : 0.0480111;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.823812, 0.834031, 0.867086, 0.936188, 1.03114, 1.12515, 1.204", \
                            "0.81433, 0.824263, 0.857769, 0.926871, 1.02167, 1.1157, 1.19408", \
                            "0.782056, 0.792264, 0.825495, 0.894487, 0.989593, 1.08284, 1.16228", \
                            "0.714472, 0.724526, 0.757702, 0.826826, 0.921624, 1.01565, 1.0945", \
                            "0.644413, 0.654456, 0.687687, 0.756778, 0.851565, 0.94556, 1.02454", \
                            "0.58454, 0.594616, 0.6281, 0.697224, 0.792154, 0.88605, 0.963116", \
                            "0.548504, 0.558272, 0.591734, 0.660253, 0.755656, 0.849112, 0.928059" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.917543, 0.924572, 0.971333, 1.0668, 1.21642, 1.40173, 1.60677", \
                            "0.910195, 0.915101, 0.961884, 1.05737, 1.20591, 1.39205, 1.59533", \
                            "0.878163, 0.882871, 0.926992, 1.02509, 1.16882, 1.35982, 1.5631", \
                            "0.810381, 0.815067, 0.861355, 0.957297, 1.10048, 1.29216, 1.49534", \
                            "0.738133, 0.745052, 0.789162, 0.887293, 1.03074, 1.22197, 1.42725", \
                            "0.678634, 0.685388, 0.733271, 0.827695, 0.976294, 1.16254, 1.36576", \
                            "0.642202, 0.649033, 0.693066, 0.79134, 0.940302, 1.12598, 1.33056" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.18247, 1.17357, 1.13966, 1.07916, 1.03014, 0.991661, 0.981893", \
                            "1.18807, 1.17972, 1.14524, 1.08473, 1.03439, 0.997238, 0.98747", \
                            "1.20634, 1.19751, 1.16361, 1.1031, 1.05373, 1.01581, 1.00585", \
                            "1.22243, 1.21355, 1.17965, 1.11915, 1.07012, 1.03165, 1.02188", \
                            "1.25178, 1.24242, 1.20853, 1.14795, 1.099, 1.06052, 1.05075", \
                            "1.25957, 1.25068, 1.21678, 1.15621, 1.10733, 1.06878, 1.05905", \
                            "1.24632, 1.23744, 1.20354, 1.14304, 1.09402, 1.05554, 1.04578" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.633259, 0.627088, 0.581339, 0.486178, 0.340505, 0.164949, 0", \
                            "0.641168, 0.633138, 0.586608, 0.491711, 0.348568, 0.170074, 0", \
                            "0.660473, 0.651486, 0.606837, 0.510092, 0.373978, 0.18847, 0", \
                            "0.676522, 0.667876, 0.618915, 0.526108, 0.388905, 0.205104, 0.005742", \
                            "0.703186, 0.696784, 0.65175, 0.554994, 0.42009, 0.23329, 0.034034", \
                            "0.753698, 0.745107, 0.699215, 0.602063, 0.452397, 0.278688, 0.0854788", \
                            "0.830621, 0.821414, 0.778217, 0.678337, 0.528374, 0.355179, 0.161108" \
                          )
                          }
                 }
          }
          bus(WEN)   {
                  bus_type             : Q_BUS;
                  direction            : input;
                  capacitance          : 0.00764901;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0, 0, 0, 0, 0, 0, 0.004906", \
                            "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.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.336743, 0.342419, 0.39193, 0.483923, 0.628837, 0.805519, 1.00633", \
                            "0.327085, 0.336171, 0.38577, 0.477873, 0.620466, 0.799986, 0.998679", \
                            "0.306845, 0.315931, 0.363506, 0.457633, 0.597366, 0.778921, 0.979649", \
                            "0.293207, 0.302207, 0.35123, 0.443597, 0.581328, 0.764643, 0.964722", \
                            "0.264718, 0.272611, 0.319935, 0.414117, 0.55264, 0.736098, 0.937772", \
                            "0.255087, 0.263103, 0.311905, 0.404536, 0.548064, 0.726176, 0.926717", \
                            "0.270129, 0.278254, 0.324896, 0.419991, 0.564773, 0.742038, 0.938751" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.18295, 1.1751, 1.14313, 1.08192, 1.0306, 0.991683, 0.981893", \
                            "1.18853, 1.18067, 1.14871, 1.08749, 1.03619, 0.997271, 0.98747", \
                            "1.2069, 1.19904, 1.16707, 1.10585, 1.05455, 1.01581, 1.00585", \
                            "1.22296, 1.2151, 1.18314, 1.12192, 1.07061, 1.0317, 1.02188", \
                            "1.2518, 1.24395, 1.21198, 1.15077, 1.09946, 1.06054, 1.05075", \
                            "1.26014, 1.25228, 1.22032, 1.1591, 1.1078, 1.06888, 1.05905", \
                            "1.24686, 1.23902, 1.20704, 1.14583, 1.09452, 1.0556, 1.04578" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.633644, 0.627088, 0.581339, 0.486178, 0.34221, 0.166309, 0", \
                            "0.641685, 0.633138, 0.586608, 0.491711, 0.350141, 0.171576, 0", \
                            "0.660902, 0.651486, 0.606837, 0.510092, 0.373978, 0.189939, 0", \
                            "0.67694, 0.667876, 0.618915, 0.526108, 0.389554, 0.206381, 0.010109", \
                            "0.703483, 0.696784, 0.65175, 0.554994, 0.42009, 0.234784, 0.034034", \
                            "0.711293, 0.704495, 0.657811, 0.563354, 0.42174, 0.243569, 0.047289", \
                            "0.699501, 0.691427, 0.646668, 0.55, 0.406934, 0.229913, 0.032912" \
                          )
                          }
                 }
          }
          bus(A)   {
                  bus_type             : A_BUS;
                  direction            : input;
                  capacitance          : 0.0401976;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.927531, 0.921415, 0.926255, 0.974149, 1.05517, 1.119, 1.1672", \
                            "0.919204, 0.913077, 0.921525, 0.970101, 1.05143, 1.1155, 1.16056", \
                            "0.900504, 0.894179, 0.897193, 0.948772, 1.02886, 1.09529, 1.13702", \
                            "0.885929, 0.882728, 0.884554, 0.9339, 1.01702, 1.08132, 1.1268", \
                            "0.856009, 0.849123, 0.853138, 0.904772, 0.986106, 1.05075, 1.0942", \
                            "0.844118, 0.841698, 0.845713, 0.894993, 0.977174, 1.04117, 1.08379", \
                            "0.867581, 0.855503, 0.859881, 0.911141, 0.99011, 1.05724, 1.10372" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "1.28151, 1.29789, 1.33397, 1.41955, 1.55375, 1.70258, 1.87616", \
                            "1.28539, 1.29282, 1.3266, 1.41031, 1.54363, 1.69796, 1.86637", \
                            "1.26179, 1.26672, 1.31021, 1.38479, 1.51987, 1.67893, 1.84844", \
                            "1.24512, 1.25588, 1.29174, 1.37335, 1.5048, 1.6632, 1.83601", \
                            "1.21519, 1.22553, 1.26427, 1.34288, 1.47763, 1.62789, 1.80664", \
                            "1.21045, 1.21243, 1.25155, 1.33122, 1.46652, 1.62206, 1.79652", \
                            "1.2242, 1.23344, 1.26839, 1.34959, 1.48236, 1.64164, 1.80906" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.697433, 0.704792, 0.696707, 0.678095, 0.668107, 0.659835, 0.649253", \
                            "0.708851, 0.716287, 0.708191, 0.689579, 0.679602, 0.671319, 0.660737", \
                            "0.742335, 0.74954, 0.741433, 0.722832, 0.712855, 0.704583, 0.694001", \
                            "0.808049, 0.815463, 0.807378, 0.788766, 0.778778, 0.770506, 0.759935", \
                            "0.902792, 0.910151, 0.902066, 0.883454, 0.873466, 0.865194, 0.854612", \
                            "0.968242, 0.975667, 0.967571, 0.948959, 0.938971, 0.93071, 0.920117", \
                            "1.02463, 1.03378, 1.0257, 1.00707, 0.997095, 0.988823, 0.978241" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.732336, 0.723283, 0.68541, 0.641905, 0.61721, 0.608872, 0.614658", \
                            "0.743798, 0.734921, 0.696894, 0.653389, 0.628683, 0.620345, 0.626142", \
                            "0.77704, 0.768163, 0.730147, 0.686653, 0.661947, 0.653609, 0.659406", \
                            "0.842996, 0.834097, 0.796081, 0.752587, 0.727859, 0.719521, 0.725329", \
                            "0.937673, 0.928785, 0.890769, 0.847264, 0.822547, 0.814209, 0.820017", \
                            "1.00318, 0.99429, 0.956274, 0.91278, 0.888052, 0.879736, 0.885533", \
                            "1.06109, 1.05238, 1.01439, 0.970893, 0.946187, 0.937849, 0.943646" \
                          )
                          }
                 }
          }
          bus(D)   {
                  bus_type             : Q_BUS;
                  memory_write() {
                          address      : A;
                          clocked_on   : "CLK";
                  }
                  direction            : input;
                  capacitance          : 0.0166433;
                  timing() {
                          related_pin  : CLK;
                          timing_type  : setup_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.673915, 0.685487, 0.715605, 0.730136, 0.730642, 0.698412, 0.624811", \
                            "0.670571, 0.680999, 0.706948, 0.72578, 0.724328, 0.694188, 0.620708", \
                            "0.649682, 0.655336, 0.686488, 0.704561, 0.704462, 0.671231, 0.596992", \
                            "0.636647, 0.642279, 0.674388, 0.689876, 0.689425, 0.657107, 0.581746", \
                            "0.608025, 0.615912, 0.643357, 0.657778, 0.657525, 0.626043, 0.553432", \
                            "0.596376, 0.601777, 0.636449, 0.647735, 0.650221, 0.616077, 0.545952", \
                            "0.612645, 0.618112, 0.649253, 0.665775, 0.665698, 0.631774, 0.557425" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.118923, 0.124299, 0.164125, 0.267174, 0.420365, 0.608333, 0.83864", \
                            "0.116481, 0.119727, 0.156112, 0.261004, 0.414678, 0.601216, 0.832986", \
                            "0.0926827, 0.0983312, 0.1377, 0.240265, 0.393965, 0.581669, 0.812966", \
                            "0.078155, 0.081972, 0.123365, 0.226406, 0.379599, 0.567677, 0.798633", \
                            "0.048741, 0.049753, 0.0926266, 0.195653, 0.348865, 0.536008, 0.767074", \
                            "0.040304, 0.045067, 0.0844338, 0.187476, 0.34067, 0.528627, 0.757636", \
                            "0.055297, 0.05973, 0.0995115, 0.202474, 0.357214, 0.543785, 0.772959" \
                          )
                          }
                  }
                  timing() {
                          related_pin     : CLK;
                          timing_type     : hold_rising;
                          rise_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.592383, 0.581185, 0.545171, 0.534996, 0.534985, 0.566137, 0.635899", \
                            "0.595606, 0.585673, 0.557491, 0.539176, 0.53955, 0.571923, 0.644963", \
                            "0.617639, 0.608146, 0.576169, 0.559856, 0.560967, 0.591844, 0.666347", \
                            "0.627088, 0.620499, 0.584793, 0.574618, 0.573958, 0.605759, 0.675532", \
                            "0.651101, 0.650771, 0.61666, 0.604362, 0.604472, 0.636284, 0.710303", \
                            "0.665973, 0.65923, 0.623392, 0.612623, 0.613415, 0.651288, 0.718388", \
                            "0.657349, 0.641729, 0.611226, 0.599742, 0.600358, 0.63151, 0.705551" \
                          )
                          }
                          fall_constraint(constraint_template) {
                          index_1 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          index_2 ("0.0200, 0.0768, 0.2762, 0.6570, 1.2503, 2.0822, 3.1779");
                          values  ( \
                            "0.906411, 0.904607, 0.864754, 0.759275, 0.607816, 0.419111, 0.193216", \
                            "0.911361, 0.909073, 0.86955, 0.764082, 0.612612, 0.423918, 0.198024", \
                            "0.931909, 0.930204, 0.89045, 0.784982, 0.633512, 0.444818, 0.218926", \
                            "0.946033, 0.94391, 0.904365, 0.798897, 0.647438, 0.458733, 0.232844", \
                            "0.97669, 0.977669, 0.93489, 0.829444, 0.677952, 0.489258, 0.263362", \
                            "0.984797, 0.982718, 0.942975, 0.837507, 0.686037, 0.497343, 0.271448", \
                            "0.971949, 0.96998, 0.930127, 0.82467, 0.673178, 0.484484, 0.257858" \
                          )
                          }
                 }
        }
          cell_leakage_power : 0.0002716593;
}
}
