/*
 * 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.
 */

  cell(gf180mcu_fd_sc_mcu7t5v0__latq_4) {
    area : 61.465600 ;

    latch(IQ1,IQN1) {
      enable : "E" ;
      data_in : "(!D)" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&!E" ;
      value : "0.00065997" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&E" ;
      value : "0.00062118" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&!E" ;
      value : "0.00073731" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&E" ;
      value : "0.00064131" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "0.00073731" ;
    }

    pg_pin(VDD) {
      voltage_name : VDD ;
      pg_type : primary_power ;
    }

    pg_pin(VSS) {
      voltage_name : VSS ;
      pg_type : primary_ground ;
    }

    pin(D) {
      capacitance : 0.002991 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 15.6 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.007089, 0.007109, 0.007094, 0.0071, 0.007108, 0.007107, 0.007107, \
                  0.007106, 0.007103, 0.007101");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.006461, -0.006456, -0.006451, -0.006495, -0.006519, -0.006521, \
                  -0.006533, -0.00654, -0.006549, -0.006548");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : hold_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-2.387, -2.351, -2.24, -2.08, -1.917, -1.727, -1.529, -1.302, -1.036, -0.717",\
                 "-2.41, -2.381, -2.263, -2.112, -1.943, -1.762, -1.56, -1.333, -1.065, -0.746",\
                 "-2.494, -2.468, -2.355, -2.199, -2.03, -1.845, -1.647, -1.413, -1.146, -0.83",\
                 "-2.644, -2.615, -2.498, -2.343, -2.177, -1.995, -1.784, -1.561, -1.285, -0.967",\
                 "-2.898, -2.864, -2.751, -2.593, -2.431, -2.243, -2.038, -1.803, -1.529, -1.205",\
                 "-3.285, -3.253, -3.139, -2.98, -2.813, -2.624, -2.419, -2.178, -1.892, -1.563",\
                 "-3.787, -3.758, -3.644, -3.481, -3.316, -3.126, -2.909, -2.663, -2.379, -2.046",\
                 "-4.385, -4.354, -4.238, -4.08, -3.906, -3.711, -3.49, -3.248, -2.961, -2.629",\
                 "-5.082, -5.051, -4.938, -4.773, -4.603, -4.403, -4.188, -3.939, -3.65, -3.317",\
                 "-5.891, -5.852, -5.74, -5.582, -5.407, -5.209, -4.987, -4.736, -4.448, -4.121");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.847, -0.818, -0.684, -0.458, -0.188, 0.118, 0.46, 0.835, 1.258, 1.722",\
                 "-0.87, -0.83, -0.698, -0.473, -0.208, 0.096, 0.44, 0.819, 1.242, 1.709",\
                 "-0.916, -0.885, -0.753, -0.524, -0.261, 0.042, 0.392, 0.769, 1.189, 1.654",\
                 "-1.015, -0.984, -0.851, -0.624, -0.359, -0.059, 0.287, 0.67, 1.09, 1.557",\
                 "-1.17, -1.136, -1.004, -0.775, -0.517, -0.213, 0.132, 0.518, 0.946, 1.415",\
                 "-1.312, -1.285, -1.153, -0.924, -0.668, -0.361, -0.019, 0.372, 0.806, 1.278",\
                 "-1.431, -1.398, -1.264, -1.041, -0.783, -0.475, -0.129, 0.257, 0.69, 1.169",\
                 "-1.503, -1.469, -1.336, -1.108, -0.847, -0.544, -0.196, 0.189, 0.619, 1.1",\
                 "-1.513, -1.479, -1.351, -1.121, -0.862, -0.553, -0.214, 0.174, 0.608, 1.084",\
                 "-1.461, -1.429, -1.29, -1.066, -0.807, -0.501, -0.157, 0.233, 0.666, 1.143");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : setup_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("2.668, 2.629, 2.529, 2.407, 2.306, 2.26, 2.302, 2.453, 2.721, 3.1",\
                 "2.696, 2.663, 2.557, 2.43, 2.328, 2.282, 2.324, 2.477, 2.743, 3.116",\
                 "2.776, 2.745, 2.636, 2.518, 2.41, 2.357, 2.4, 2.545, 2.803, 3.161",\
                 "2.921, 2.889, 2.779, 2.656, 2.555, 2.49, 2.522, 2.65, 2.889, 3.215",\
                 "3.164, 3.134, 3.029, 2.899, 2.792, 2.727, 2.74, 2.855, 3.065, 3.35",\
                 "3.552, 3.511, 3.404, 3.28, 3.166, 3.091, 3.077, 3.153, 3.307, 3.54",\
                 "4.053, 4.02, 3.914, 3.78, 3.655, 3.557, 3.506, 3.534, 3.644, 3.814",\
                 "4.651, 4.617, 4.512, 4.369, 4.234, 4.115, 4.039, 4.021, 4.081, 4.191",\
                 "5.358, 5.321, 5.217, 5.069, 4.924, 4.788, 4.685, 4.622, 4.635, 4.694",\
                 "6.171, 6.132, 6.028, 5.878, 5.727, 5.58, 5.448, 5.359, 5.315, 5.328");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("1.071, 1.042, 0.907, 0.678, 0.423, 0.129, -0.209, -0.585, -0.989, -1.433",\
                 "1.094, 1.063, 0.924, 0.701, 0.439, 0.142, -0.193, -0.567, -0.972, -1.419",\
                 "1.138, 1.104, 0.968, 0.749, 0.487, 0.189, -0.146, -0.517, -0.924, -1.366",\
                 "1.235, 1.196, 1.066, 0.841, 0.584, 0.288, -0.04, -0.416, -0.825, -1.276",\
                 "1.38, 1.347, 1.216, 0.991, 0.739, 0.443, 0.111, -0.262, -0.676, -1.132",\
                 "1.529, 1.492, 1.357, 1.134, 0.883, 0.59, 0.253, -0.117, -0.534, -1",\
                 "1.638, 1.601, 1.471, 1.243, 0.985, 0.691, 0.36, -0.013, -0.436, -0.9",\
                 "1.695, 1.658, 1.527, 1.297, 1.038, 0.747, 0.414, 0.03, -0.383, -0.85",\
                 "1.69, 1.657, 1.527, 1.293, 1.039, 0.74, 0.404, 0.025, -0.392, -0.849",\
                 "1.619, 1.587, 1.453, 1.222, 0.962, 0.664, 0.33, -0.047, -0.464, -0.931");
        }
      }
    }

    pin(E) {
      capacitance : 0.003625 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 15.6 ;
      min_pulse_width_high : 2.788 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.08111, 0.08059, 0.08069, 0.084, 0.09099, 0.1021, 0.1176, 0.1379, \
                  0.1632, 0.1938");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.04712, 0.04674, 0.04668, 0.04911, 0.05486, 0.06455, 0.07845, \
                  0.09663, 0.1193, 0.1468");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.08297, 0.08241, 0.08255, 0.08593, 0.09302, 0.1041, 0.1197, 0.1401, \
                  0.1654, 0.196");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.04627, 0.0459, 0.04584, 0.04821, 0.05392, 0.06357, 0.07743, \
                  0.09553, 0.1182, 0.1457");
        }
      }

      timing() {
        related_pin : "E" ;
        sdf_cond : "ENABLE_NOT_D === 1'b1" ;
        timing_type : min_pulse_width ;
        when : "!D" ;

        rise_constraint(scalar) {
          values("2.788");
        }
      }

      timing() {
        related_pin : "E" ;
        sdf_cond : "ENABLE_D === 1'b1" ;
        timing_type : min_pulse_width ;
        when : "D" ;

        rise_constraint(scalar) {
          values("1.76");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 1.414 ;
      max_transition : 15.6 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "D" ;
        when : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.4873, 0.466, 0.4155, 0.3699, 0.342, 0.324, 0.3117, 0.303, 0.2968, 0.2921",\
                 "0.4871, 0.4656, 0.4153, 0.3696, 0.3417, 0.3238, 0.3114, 0.3027, 0.2965, 0.2918",\
                 "0.4868, 0.4654, 0.4151, 0.3694, 0.3415, 0.3236, 0.3112, 0.3025, 0.2963, 0.2916",\
                 "0.487, 0.4655, 0.4152, 0.3694, 0.3416, 0.3236, 0.3113, 0.3027, 0.2964, 0.2918",\
                 "0.4889, 0.4675, 0.4172, 0.3714, 0.3434, 0.3254, 0.313, 0.3044, 0.2982, 0.2935",\
                 "0.4996, 0.478, 0.4271, 0.3805, 0.3517, 0.3331, 0.3203, 0.3113, 0.3049, 0.3",\
                 "0.5272, 0.5051, 0.4523, 0.4028, 0.3714, 0.3508, 0.3367, 0.3268, 0.3195, 0.3139",\
                 "0.5643, 0.5415, 0.4863, 0.4328, 0.3982, 0.3751, 0.3592, 0.3478, 0.3394, 0.3325",\
                 "0.6074, 0.5842, 0.5265, 0.4689, 0.4306, 0.4047, 0.3868, 0.3738, 0.3637, 0.3539",\
                 "0.6592, 0.6354, 0.5753, 0.5132, 0.4707, 0.4416, 0.4209, 0.4048, 0.3902, 0.3763");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.2761, 0.2597, 0.239, 0.2269, 0.2203, 0.218, 0.2177, 0.2293, 0.3499, 0.8777",\
                 "0.2756, 0.2594, 0.2383, 0.2263, 0.2202, 0.2171, 0.2165, 0.2293, 0.3554, 0.8882",\
                 "0.2754, 0.259, 0.2381, 0.2258, 0.2198, 0.2168, 0.2162, 0.2292, 0.3632, 0.9179",\
                 "0.2758, 0.2596, 0.2386, 0.2265, 0.2202, 0.2168, 0.2165, 0.2324, 0.382, 0.9842",\
                 "0.2848, 0.2681, 0.2461, 0.2325, 0.2255, 0.2216, 0.2211, 0.2403, 0.4191, 1.101",\
                 "0.3054, 0.2871, 0.2619, 0.2464, 0.2369, 0.2318, 0.2304, 0.2594, 0.4894, 1.285",\
                 "0.3317, 0.312, 0.2834, 0.2646, 0.254, 0.2471, 0.2447, 0.2901, 0.6045, 1.55",\
                 "0.3664, 0.3447, 0.3118, 0.2898, 0.2749, 0.2678, 0.2668, 0.3479, 0.7941, 1.919",\
                 "0.4098, 0.386, 0.3482, 0.3228, 0.3039, 0.2904, 0.2989, 0.4548, 1.11, 2.403",\
                 "0.4612, 0.4355, 0.3924, 0.3627, 0.3404, 0.3247, 0.3551, 0.6724, 1.601, 2.96");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.4757, 0.4544, 0.4041, 0.3584, 0.3306, 0.3127, 0.3004, 0.2917, 0.2855, 0.2808",\
                 "0.4757, 0.4543, 0.404, 0.3584, 0.3306, 0.3126, 0.3003, 0.2917, 0.2855, 0.2808",\
                 "0.4756, 0.4543, 0.4039, 0.3583, 0.3305, 0.3126, 0.3003, 0.2916, 0.2854, 0.2807",\
                 "0.4755, 0.4541, 0.4038, 0.3582, 0.3304, 0.3125, 0.3002, 0.2915, 0.2852, 0.2805",\
                 "0.4753, 0.454, 0.4036, 0.358, 0.3303, 0.3123, 0.3, 0.2914, 0.2851, 0.2804",\
                 "0.4756, 0.4542, 0.4039, 0.3583, 0.3304, 0.3125, 0.3001, 0.2915, 0.2852, 0.2804",\
                 "0.4758, 0.4543, 0.4041, 0.3583, 0.3305, 0.3125, 0.3002, 0.2915, 0.2852, 0.2803",\
                 "0.4762, 0.4548, 0.4044, 0.3588, 0.3309, 0.3129, 0.3005, 0.2918, 0.2854, 0.2802",\
                 "0.478, 0.4566, 0.4061, 0.3602, 0.3321, 0.3139, 0.3015, 0.2927, 0.2861, 0.2802",\
                 "0.4811, 0.4595, 0.4088, 0.3624, 0.3339, 0.3155, 0.3029, 0.2939, 0.2865, 0.2791");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.28, 0.2637, 0.2429, 0.2308, 0.2244, 0.2212, 0.2206, 0.2351, 0.3768, 0.9587",\
                 "0.28, 0.2637, 0.2428, 0.2308, 0.2241, 0.2216, 0.221, 0.2364, 0.379, 0.9699",\
                 "0.28, 0.2637, 0.2427, 0.2308, 0.2244, 0.2217, 0.2207, 0.2381, 0.3915, 1.013",\
                 "0.2802, 0.2639, 0.2429, 0.231, 0.2246, 0.2214, 0.2211, 0.2419, 0.4194, 1.094",\
                 "0.2802, 0.2639, 0.243, 0.231, 0.2246, 0.2214, 0.2221, 0.2474, 0.4569, 1.21",\
                 "0.2804, 0.264, 0.2432, 0.2309, 0.2249, 0.2217, 0.223, 0.2594, 0.5218, 1.381",\
                 "0.2803, 0.264, 0.2431, 0.2307, 0.2257, 0.2227, 0.2241, 0.2807, 0.629, 1.629",\
                 "0.2806, 0.2642, 0.2436, 0.2309, 0.2237, 0.2229, 0.2281, 0.321, 0.8031, 1.966",\
                 "0.2806, 0.2643, 0.2436, 0.231, 0.224, 0.22, 0.2372, 0.4087, 1.093, 2.404",\
                 "0.2807, 0.2642, 0.2435, 0.2313, 0.2237, 0.2204, 0.2628, 0.5959, 1.542, 2.904");
        }
      }

      timing() {
        related_pin : "D" ;
        timing_sense : positive_unate ;
        timing_type : combinational ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("2.577, 2.736, 3.13, 3.642, 4.229, 4.888, 5.631, 6.482, 7.466, 8.606",\
                 "2.605, 2.764, 3.158, 3.67, 4.257, 4.917, 5.66, 6.511, 7.495, 8.634",\
                 "2.691, 2.849, 3.244, 3.755, 4.342, 5.002, 5.745, 6.597, 7.58, 8.719",\
                 "2.837, 2.996, 3.39, 3.902, 4.489, 5.148, 5.892, 6.743, 7.727, 8.866",\
                 "3.089, 3.247, 3.641, 4.153, 4.74, 5.399, 6.143, 6.994, 7.978, 9.117",\
                 "3.476, 3.635, 4.028, 4.54, 5.126, 5.785, 6.528, 7.379, 8.363, 9.502",\
                 "3.979, 4.143, 4.544, 5.061, 5.651, 6.312, 7.056, 7.908, 8.892, 10.03",\
                 "4.576, 4.743, 5.155, 5.689, 6.29, 6.965, 7.714, 8.569, 9.555, 10.69",\
                 "5.274, 5.446, 5.87, 6.416, 7.033, 7.72, 8.482, 9.346, 10.34, 11.48",\
                 "6.079, 6.255, 6.691, 7.251, 7.883, 8.584, 9.359, 10.23, 11.23, 12.37");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("1.524, 1.657, 2.008, 2.523, 3.206, 4.107, 5.273, 6.74, 8.529, 10.67",\
                 "1.543, 1.675, 2.026, 2.542, 3.225, 4.126, 5.293, 6.759, 8.549, 10.69",\
                 "1.592, 1.724, 2.075, 2.591, 3.274, 4.175, 5.341, 6.806, 8.599, 10.73",\
                 "1.69, 1.822, 2.173, 2.688, 3.371, 4.271, 5.438, 6.904, 8.696, 10.83",\
                 "1.845, 1.977, 2.328, 2.843, 3.524, 4.424, 5.59, 7.056, 8.847, 10.97",\
                 "2.002, 2.14, 2.499, 3.021, 3.706, 4.604, 5.77, 7.234, 9.025, 11.16",\
                 "2.131, 2.274, 2.643, 3.177, 3.869, 4.77, 5.933, 7.398, 9.186, 11.32",\
                 "2.22, 2.369, 2.749, 3.294, 3.995, 4.899, 6.062, 7.524, 9.31, 11.44",\
                 "2.258, 2.413, 2.806, 3.364, 4.075, 4.983, 6.146, 7.606, 9.39, 11.52",\
                 "2.233, 2.394, 2.804, 3.377, 4.102, 5.018, 6.184, 7.643, 9.425, 11.55");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.6484, 0.8112, 1.188, 1.614, 2.159, 2.845, 3.737, 4.895, 6.363, 8.165",\
                 "0.6488, 0.8108, 1.187, 1.614, 2.16, 2.848, 3.74, 4.895, 6.36, 8.162",\
                 "0.6482, 0.8106, 1.187, 1.614, 2.158, 2.847, 3.737, 4.891, 6.353, 8.154",\
                 "0.6482, 0.8098, 1.187, 1.614, 2.158, 2.845, 3.737, 4.891, 6.353, 8.152",\
                 "0.6482, 0.8114, 1.187, 1.615, 2.16, 2.846, 3.737, 4.893, 6.355, 8.156",\
                 "0.6518, 0.8142, 1.191, 1.618, 2.164, 2.851, 3.742, 4.896, 6.357, 8.158",\
                 "0.689, 0.8524, 1.231, 1.649, 2.184, 2.867, 3.752, 4.904, 6.358, 8.16",\
                 "0.7284, 0.8976, 1.289, 1.714, 2.246, 2.916, 3.784, 4.928, 6.382, 8.172",\
                 "0.768, 0.942, 1.346, 1.778, 2.314, 2.99, 3.848, 4.97, 6.408, 8.192",\
                 "0.816, 0.996, 1.41, 1.848, 2.388, 3.066, 3.924, 5.034, 6.45, 8.212");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.3774, 0.52, 0.9408, 1.589, 2.599, 4.089, 6.111, 8.692, 11.84, 15.61",\
                 "0.3776, 0.5204, 0.9416, 1.589, 2.598, 4.09, 6.115, 8.691, 11.84, 15.62",\
                 "0.378, 0.5206, 0.9414, 1.592, 2.597, 4.092, 6.118, 8.681, 11.85, 15.61",\
                 "0.3778, 0.5204, 0.9412, 1.589, 2.599, 4.084, 6.104, 8.69, 11.85, 15.61",\
                 "0.3846, 0.5252, 0.945, 1.594, 2.602, 4.084, 6.104, 8.688, 11.84, 15.61",\
                 "0.4124, 0.5562, 0.9772, 1.62, 2.611, 4.095, 6.115, 8.694, 11.84, 15.61",\
                 "0.4442, 0.5904, 1.015, 1.66, 2.644, 4.104, 6.112, 8.696, 11.83, 15.61",\
                 "0.4814, 0.6308, 1.056, 1.705, 2.681, 4.128, 6.121, 8.696, 11.83, 15.61",\
                 "0.526, 0.6794, 1.109, 1.76, 2.724, 4.154, 6.136, 8.694, 11.86, 15.6",\
                 "0.582, 0.738, 1.168, 1.826, 2.784, 4.202, 6.164, 8.712, 11.85, 15.6");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : rising_edge ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("2.706, 2.865, 3.259, 3.771, 4.358, 5.018, 5.761, 6.612, 7.596, 8.735",\
                 "2.734, 2.893, 3.287, 3.799, 4.386, 5.046, 5.789, 6.64, 7.624, 8.763",\
                 "2.831, 2.99, 3.383, 3.896, 4.483, 5.143, 5.886, 6.737, 7.721, 8.86",\
                 "2.954, 3.113, 3.506, 4.019, 4.606, 5.266, 6.009, 6.86, 7.844, 8.983",\
                 "3.051, 3.209, 3.603, 4.115, 4.702, 5.362, 6.105, 6.956, 7.94, 9.079",\
                 "3.119, 3.278, 3.671, 4.183, 4.77, 5.43, 6.174, 7.025, 8.008, 9.148",\
                 "3.158, 3.317, 3.71, 4.222, 4.81, 5.47, 6.213, 7.065, 8.049, 9.188",\
                 "3.167, 3.326, 3.719, 4.232, 4.819, 5.479, 6.223, 7.073, 8.058, 9.196",\
                 "3.142, 3.3, 3.694, 4.207, 4.794, 5.454, 6.197, 7.049, 8.032, 9.172",\
                 "3.077, 3.236, 3.631, 4.144, 4.732, 5.392, 6.136, 6.988, 7.971, 9.111");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("2.173, 2.305, 2.656, 3.172, 3.855, 4.755, 5.922, 7.387, 9.18, 11.31",\
                 "2.201, 2.333, 2.684, 3.199, 3.882, 4.783, 5.949, 7.416, 9.205, 11.34",\
                 "2.301, 2.433, 2.784, 3.3, 3.983, 4.883, 6.049, 7.517, 9.305, 11.44",\
                 "2.434, 2.566, 2.917, 3.433, 4.116, 5.015, 6.182, 7.649, 9.44, 11.58",\
                 "2.538, 2.671, 3.021, 3.537, 4.22, 5.12, 6.287, 7.754, 9.541, 11.68",\
                 "2.615, 2.747, 3.098, 3.613, 4.296, 5.197, 6.363, 7.83, 9.617, 11.76",\
                 "2.658, 2.791, 3.142, 3.657, 4.339, 5.24, 6.407, 7.873, 9.662, 11.8",\
                 "2.662, 2.794, 3.146, 3.661, 4.344, 5.245, 6.411, 7.875, 9.666, 11.8",\
                 "2.622, 2.754, 3.105, 3.62, 4.303, 5.203, 6.37, 7.835, 9.623, 11.76",\
                 "2.535, 2.667, 3.018, 3.534, 4.217, 5.117, 6.284, 7.751, 9.537, 11.67");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.6482, 0.8108, 1.186, 1.615, 2.159, 2.847, 3.738, 4.894, 6.361, 8.16",\
                 "0.6486, 0.8096, 1.186, 1.614, 2.159, 2.846, 3.738, 4.891, 6.357, 8.157",\
                 "0.649, 0.8104, 1.186, 1.614, 2.159, 2.847, 3.74, 4.894, 6.356, 8.151",\
                 "0.649, 0.81, 1.186, 1.614, 2.159, 2.847, 3.74, 4.894, 6.357, 8.157",\
                 "0.6482, 0.811, 1.186, 1.614, 2.159, 2.847, 3.741, 4.894, 6.357, 8.162",\
                 "0.648, 0.8102, 1.187, 1.615, 2.159, 2.849, 3.74, 4.898, 6.357, 8.158",\
                 "0.6488, 0.8108, 1.186, 1.615, 2.16, 2.847, 3.741, 4.895, 6.358, 8.158",\
                 "0.6486, 0.8108, 1.187, 1.615, 2.161, 2.844, 3.736, 4.89, 6.362, 8.164",\
                 "0.652, 0.812, 1.19, 1.616, 2.16, 2.85, 3.736, 4.9, 6.352, 8.152",\
                 "0.654, 0.816, 1.192, 1.62, 2.166, 2.852, 3.74, 4.898, 6.354, 8.152");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.01075, 0.04499, 0.1104, 0.2123, 0.3552, 0.5433, 0.7802, 1.069, 1.414");
          values("0.3776, 0.5198, 0.941, 1.591, 2.598, 4.09, 6.115, 8.698, 11.85, 15.61",\
                 "0.3776, 0.5196, 0.9404, 1.59, 2.6, 4.089, 6.11, 8.692, 11.84, 15.61",\
                 "0.3776, 0.5198, 0.9416, 1.59, 2.6, 4.089, 6.11, 8.692, 11.84, 15.61",\
                 "0.3776, 0.5198, 0.9412, 1.59, 2.597, 4.088, 6.11, 8.69, 11.84, 15.62",\
                 "0.3778, 0.5192, 0.9412, 1.589, 2.597, 4.084, 6.111, 8.689, 11.85, 15.61",\
                 "0.3772, 0.5194, 0.9408, 1.589, 2.6, 4.084, 6.111, 8.69, 11.86, 15.61",\
                 "0.3782, 0.5194, 0.9402, 1.59, 2.597, 4.087, 6.108, 8.691, 11.84, 15.6",\
                 "0.3778, 0.5196, 0.941, 1.591, 2.598, 4.085, 6.104, 8.678, 11.86, 15.61",\
                 "0.3786, 0.5194, 0.9418, 1.59, 2.596, 4.09, 6.104, 8.68, 11.84, 15.6",\
                 "0.378, 0.52, 0.94, 1.59, 2.596, 4.088, 6.112, 8.682, 11.83, 15.59");
        }
      }
    }
  }

