/*
 * 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_mcu9t5v0__latq_4) {
    area : 79.027200 ;

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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.005139, 0.005136, 0.005128, 0.00513, 0.005139, 0.005141, 0.005141, \
                  0.00514, 0.00514, 0.005138");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.004655, -0.004652, -0.004657, -0.004663, -0.004676, -0.004695, \
                  -0.004703, -0.004707, -0.004713, -0.004716");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-1.672, -1.66, -1.597, -1.504, -1.407, -1.295, -1.174, -1.044, -0.892, -0.716",\
                 "-1.69, -1.674, -1.61, -1.522, -1.416, -1.311, -1.187, -1.06, -0.902, -0.728",\
                 "-1.737, -1.72, -1.66, -1.567, -1.467, -1.36, -1.238, -1.106, -0.956, -0.776",\
                 "-1.814, -1.798, -1.741, -1.645, -1.546, -1.438, -1.313, -1.181, -1.028, -0.85",\
                 "-1.937, -1.924, -1.858, -1.768, -1.666, -1.556, -1.439, -1.306, -1.149, -0.968",\
                 "-2.127, -2.113, -2.053, -1.955, -1.856, -1.753, -1.625, -1.493, -1.333, -1.144",\
                 "-2.391, -2.369, -2.317, -2.224, -2.125, -2.011, -1.887, -1.739, -1.585, -1.397",\
                 "-2.708, -2.69, -2.626, -2.536, -2.437, -2.319, -2.191, -2.053, -1.89, -1.699",\
                 "-3.069, -3.054, -2.992, -2.893, -2.791, -2.682, -2.556, -2.412, -2.243, -2.052",\
                 "-3.487, -3.467, -3.407, -3.317, -3.212, -3.096, -2.968, -2.823, -2.657, -2.469");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.578, -0.564, -0.493, -0.359, -0.202, -0.026, 0.18, 0.399, 0.649, 0.923",\
                 "-0.594, -0.577, -0.504, -0.374, -0.219, -0.041, 0.163, 0.389, 0.636, 0.911",\
                 "-0.622, -0.608, -0.536, -0.406, -0.247, -0.066, 0.136, 0.358, 0.605, 0.88",\
                 "-0.678, -0.66, -0.597, -0.466, -0.305, -0.128, 0.074, 0.302, 0.553, 0.823",\
                 "-0.769, -0.757, -0.69, -0.558, -0.401, -0.227, -0.023, 0.2, 0.46, 0.732",\
                 "-0.881, -0.866, -0.797, -0.666, -0.51, -0.338, -0.137, 0.096, 0.347, 0.625",\
                 "-0.972, -0.96, -0.89, -0.758, -0.609, -0.43, -0.229, -0.003, 0.251, 0.534",\
                 "-1.051, -1.032, -0.967, -0.838, -0.678, -0.508, -0.302, -0.078, 0.181, 0.461",\
                 "-1.093, -1.076, -1.01, -0.877, -0.728, -0.552, -0.35, -0.122, 0.129, 0.413",\
                 "-1.111, -1.09, -1.027, -0.894, -0.738, -0.562, -0.367, -0.133, 0.116, 0.4");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("1.878, 1.858, 1.798, 1.719, 1.648, 1.599, 1.586, 1.633, 1.732, 1.902",\
                 "1.887, 1.871, 1.814, 1.74, 1.659, 1.611, 1.598, 1.637, 1.742, 1.907",\
                 "1.938, 1.924, 1.86, 1.783, 1.714, 1.659, 1.645, 1.689, 1.788, 1.95",\
                 "2.02, 1.997, 1.94, 1.856, 1.785, 1.732, 1.714, 1.749, 1.848, 1.999",\
                 "2.135, 2.121, 2.063, 1.981, 1.904, 1.848, 1.825, 1.856, 1.936, 2.069",\
                 "2.319, 2.303, 2.246, 2.162, 2.087, 2.028, 2.001, 2.02, 2.081, 2.2",\
                 "2.589, 2.57, 2.511, 2.429, 2.348, 2.281, 2.242, 2.245, 2.284, 2.374",\
                 "2.91, 2.888, 2.832, 2.745, 2.662, 2.591, 2.535, 2.511, 2.524, 2.588",\
                 "3.279, 3.258, 3.201, 3.115, 3.023, 2.938, 2.868, 2.821, 2.813, 2.844",\
                 "3.702, 3.688, 3.627, 3.536, 3.446, 3.349, 3.268, 3.205, 3.176, 3.18");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.744, 0.727, 0.657, 0.529, 0.37, 0.195, -0.006, -0.226, -0.47, -0.739",\
                 "0.757, 0.742, 0.667, 0.535, 0.386, 0.208, 0.013, -0.214, -0.456, -0.726",\
                 "0.781, 0.765, 0.697, 0.565, 0.409, 0.235, 0.041, -0.183, -0.428, -0.697",\
                 "0.839, 0.821, 0.75, 0.624, 0.466, 0.293, 0.102, -0.126, -0.373, -0.637",\
                 "0.93, 0.909, 0.844, 0.714, 0.56, 0.391, 0.192, -0.026, -0.275, -0.545",\
                 "1.034, 1.021, 0.952, 0.824, 0.673, 0.496, 0.301, 0.085, -0.168, -0.436",\
                 "1.129, 1.111, 1.04, 0.915, 0.76, 0.594, 0.395, 0.175, -0.072, -0.346",\
                 "1.201, 1.183, 1.112, 0.981, 0.83, 0.664, 0.464, 0.246, -0.003, -0.274",\
                 "1.241, 1.225, 1.155, 1.022, 0.877, 0.7, 0.506, 0.28, 0.038, -0.236",\
                 "1.249, 1.229, 1.163, 1.031, 0.878, 0.708, 0.513, 0.29, 0.043, -0.23");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.04657, 0.04623, 0.04593, 0.04703, 0.04988, 0.05463, 0.0614, \
                  0.07046, 0.08188, 0.09581");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.02664, 0.02644, 0.02623, 0.02699, 0.02925, 0.03334, 0.03941, \
                  0.04756, 0.05783, 0.07032");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.04704, 0.04666, 0.04639, 0.04752, 0.05045, 0.05523, 0.06206, \
                  0.0711, 0.08256, 0.09654");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.02621, 0.02601, 0.02582, 0.02657, 0.02881, 0.03285, 0.03885, \
                  0.04696, 0.05719, 0.06966");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 1.313 ;
      max_transition : 8.4 ;
      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.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.3091, 0.2998, 0.2747, 0.2459, 0.2248, 0.2111, 0.2017, 0.195, 0.19, 0.1863",\
                 "0.3089, 0.2996, 0.2745, 0.2458, 0.2246, 0.2109, 0.2015, 0.1948, 0.1899, 0.1862",\
                 "0.3087, 0.2994, 0.2743, 0.2456, 0.2245, 0.2108, 0.2013, 0.1946, 0.1897, 0.186",\
                 "0.3086, 0.2993, 0.2742, 0.2454, 0.2243, 0.2106, 0.2012, 0.1945, 0.1896, 0.1859",\
                 "0.3089, 0.2996, 0.2745, 0.2457, 0.2245, 0.2108, 0.2014, 0.1947, 0.1898, 0.1861",\
                 "0.3114, 0.3021, 0.2769, 0.248, 0.2266, 0.2128, 0.2032, 0.1965, 0.1915, 0.1878",\
                 "0.3207, 0.3112, 0.2857, 0.256, 0.2339, 0.2193, 0.2093, 0.2021, 0.1969, 0.193",\
                 "0.3382, 0.3286, 0.3022, 0.2709, 0.2471, 0.2313, 0.2202, 0.2122, 0.2063, 0.202",\
                 "0.3598, 0.3499, 0.3226, 0.2898, 0.2638, 0.2463, 0.2339, 0.225, 0.2184, 0.2134",\
                 "0.3843, 0.3741, 0.3461, 0.3114, 0.2832, 0.2639, 0.2503, 0.2402, 0.2328, 0.2272");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.1645, 0.1571, 0.1453, 0.1381, 0.1343, 0.1328, 0.1318, 0.1318, 0.1333, 0.14",\
                 "0.1643, 0.1569, 0.1451, 0.1379, 0.1341, 0.1326, 0.1316, 0.1316, 0.1331, 0.1392",\
                 "0.1641, 0.1567, 0.1449, 0.1377, 0.1339, 0.1323, 0.1316, 0.1314, 0.1329, 0.14",\
                 "0.164, 0.1566, 0.1448, 0.1376, 0.1337, 0.1321, 0.1314, 0.1314, 0.1327, 0.14",\
                 "0.1662, 0.1587, 0.1468, 0.1394, 0.1352, 0.1332, 0.1324, 0.1321, 0.1337, 0.1426",\
                 "0.1748, 0.1669, 0.1539, 0.1453, 0.1401, 0.1375, 0.136, 0.1353, 0.1371, 0.1473",\
                 "0.1871, 0.1784, 0.1636, 0.1536, 0.1478, 0.1442, 0.1419, 0.1411, 0.1424, 0.1556",\
                 "0.2024, 0.1931, 0.1764, 0.1648, 0.1572, 0.1533, 0.1505, 0.1489, 0.1499, 0.1668",\
                 "0.2216, 0.2115, 0.1926, 0.1791, 0.1699, 0.164, 0.1615, 0.1594, 0.1606, 0.1851",\
                 "0.2447, 0.2337, 0.2125, 0.1972, 0.1861, 0.1782, 0.1732, 0.1717, 0.1754, 0.2138");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.3002, 0.2909, 0.2658, 0.2371, 0.216, 0.2024, 0.193, 0.1863, 0.1813, 0.1776",\
                 "0.3002, 0.2909, 0.2658, 0.2371, 0.216, 0.2023, 0.193, 0.1862, 0.1813, 0.1776",\
                 "0.3001, 0.2908, 0.2657, 0.237, 0.2159, 0.2023, 0.1929, 0.1862, 0.1813, 0.1776",\
                 "0.3, 0.2907, 0.2656, 0.2369, 0.2158, 0.2022, 0.1928, 0.1861, 0.1811, 0.1775",\
                 "0.2999, 0.2906, 0.2655, 0.2367, 0.2157, 0.202, 0.1926, 0.1859, 0.181, 0.1773",\
                 "0.2999, 0.2906, 0.2655, 0.2367, 0.2157, 0.202, 0.1926, 0.1859, 0.181, 0.1773",\
                 "0.3, 0.2907, 0.2656, 0.2368, 0.2157, 0.202, 0.1926, 0.1859, 0.181, 0.1773",\
                 "0.3001, 0.2907, 0.2656, 0.2369, 0.2158, 0.202, 0.1926, 0.1859, 0.181, 0.1773",\
                 "0.3005, 0.2912, 0.2661, 0.2373, 0.2161, 0.2024, 0.193, 0.1862, 0.1812, 0.1775",\
                 "0.3017, 0.2924, 0.2671, 0.2382, 0.2169, 0.2031, 0.1936, 0.1868, 0.1818, 0.1781");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.167, 0.1596, 0.1479, 0.1408, 0.1371, 0.1351, 0.1345, 0.1346, 0.1346, 0.1437",\
                 "0.167, 0.1596, 0.1478, 0.1406, 0.137, 0.1351, 0.1345, 0.1343, 0.1348, 0.1435",\
                 "0.167, 0.1596, 0.1478, 0.1406, 0.1367, 0.1351, 0.1345, 0.1344, 0.1352, 0.1442",\
                 "0.167, 0.1596, 0.1479, 0.1407, 0.1371, 0.1354, 0.1346, 0.1341, 0.1356, 0.1445",\
                 "0.167, 0.1596, 0.1478, 0.1407, 0.1371, 0.1351, 0.1347, 0.1346, 0.1354, 0.1457",\
                 "0.1672, 0.1597, 0.1481, 0.1407, 0.137, 0.1352, 0.1348, 0.1347, 0.1353, 0.1481",\
                 "0.1672, 0.1598, 0.148, 0.1412, 0.1376, 0.1355, 0.135, 0.135, 0.1362, 0.1522",\
                 "0.1674, 0.16, 0.1482, 0.1408, 0.1365, 0.1361, 0.1354, 0.135, 0.1372, 0.1565",\
                 "0.1674, 0.16, 0.1482, 0.141, 0.1366, 0.1348, 0.1356, 0.136, 0.139, 0.1644",\
                 "0.1675, 0.16, 0.1483, 0.1413, 0.1368, 0.1355, 0.1346, 0.1369, 0.142, 0.1808");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("1.874, 1.953, 2.165, 2.459, 2.792, 3.163, 3.57, 4.017, 4.515, 5.073",\
                 "1.888, 1.968, 2.18, 2.473, 2.807, 3.178, 3.585, 4.032, 4.529, 5.088",\
                 "1.938, 2.017, 2.229, 2.522, 2.856, 3.227, 3.634, 4.081, 4.578, 5.137",\
                 "2.014, 2.094, 2.305, 2.599, 2.933, 3.304, 3.711, 4.158, 4.655, 5.214",\
                 "2.138, 2.217, 2.428, 2.722, 3.056, 3.426, 3.834, 4.281, 4.778, 5.337",\
                 "2.327, 2.407, 2.618, 2.911, 3.244, 3.615, 4.022, 4.47, 4.967, 5.526",\
                 "2.592, 2.672, 2.883, 3.176, 3.509, 3.88, 4.287, 4.734, 5.232, 5.79",\
                 "2.909, 2.992, 3.208, 3.507, 3.845, 4.22, 4.628, 5.077, 5.575, 6.134",\
                 "3.276, 3.36, 3.582, 3.889, 4.236, 4.618, 5.035, 5.487, 5.988, 6.549",\
                 "3.696, 3.781, 4.009, 4.324, 4.679, 5.07, 5.495, 5.956, 6.462, 7.027");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("1.048, 1.115, 1.304, 1.591, 1.966, 2.449, 3.067, 3.842, 4.786, 5.913",\
                 "1.06, 1.127, 1.317, 1.603, 1.978, 2.461, 3.079, 3.854, 4.798, 5.923",\
                 "1.09, 1.158, 1.347, 1.633, 2.008, 2.491, 3.109, 3.884, 4.828, 5.955",\
                 "1.147, 1.215, 1.404, 1.69, 2.065, 2.548, 3.167, 3.94, 4.885, 6.01",\
                 "1.24, 1.307, 1.496, 1.782, 2.156, 2.639, 3.257, 4.031, 4.975, 6.102",\
                 "1.351, 1.42, 1.611, 1.899, 2.273, 2.755, 3.372, 4.146, 5.09, 6.216",\
                 "1.451, 1.522, 1.718, 2.012, 2.391, 2.874, 3.491, 4.264, 5.207, 6.333",\
                 "1.532, 1.606, 1.807, 2.107, 2.491, 2.978, 3.595, 4.366, 5.309, 6.434",\
                 "1.589, 1.666, 1.873, 2.179, 2.569, 3.059, 3.677, 4.448, 5.389, 6.511",\
                 "1.617, 1.696, 1.91, 2.224, 2.621, 3.115, 3.733, 4.504, 5.444, 6.565");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.5272, 0.608, 0.8176, 1.067, 1.348, 1.701, 2.127, 2.656, 3.314, 4.128",\
                 "0.5272, 0.6076, 0.8176, 1.067, 1.349, 1.701, 2.127, 2.657, 3.314, 4.133",\
                 "0.5272, 0.607, 0.8174, 1.067, 1.349, 1.702, 2.127, 2.657, 3.317, 4.134",\
                 "0.5278, 0.6068, 0.8188, 1.067, 1.348, 1.701, 2.129, 2.656, 3.315, 4.126",\
                 "0.5276, 0.6088, 0.8176, 1.067, 1.349, 1.702, 2.13, 2.658, 3.315, 4.134",\
                 "0.5266, 0.6072, 0.8178, 1.068, 1.349, 1.702, 2.131, 2.659, 3.316, 4.133",\
                 "0.5388, 0.6174, 0.8274, 1.076, 1.356, 1.707, 2.133, 2.664, 3.317, 4.135",\
                 "0.572, 0.6532, 0.8672, 1.113, 1.385, 1.73, 2.152, 2.674, 3.331, 4.141",\
                 "0.6036, 0.686, 0.9078, 1.161, 1.433, 1.777, 2.192, 2.705, 3.352, 4.15",\
                 "0.6354, 0.7222, 0.9484, 1.208, 1.484, 1.828, 2.247, 2.754, 3.39, 4.178");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.2776, 0.352, 0.5804, 0.9394, 1.47, 2.252, 3.318, 4.698, 6.388, 8.405",\
                 "0.2778, 0.3518, 0.5804, 0.9396, 1.47, 2.253, 3.318, 4.697, 6.388, 8.397",\
                 "0.2774, 0.3522, 0.5804, 0.9396, 1.47, 2.253, 3.319, 4.696, 6.386, 8.404",\
                 "0.2774, 0.352, 0.5802, 0.9398, 1.473, 2.254, 3.326, 4.692, 6.38, 8.398",\
                 "0.2784, 0.352, 0.5806, 0.9392, 1.471, 2.251, 3.323, 4.691, 6.389, 8.409",\
                 "0.294, 0.3676, 0.593, 0.9482, 1.476, 2.255, 3.321, 4.696, 6.388, 8.406",\
                 "0.3146, 0.389, 0.6176, 0.975, 1.496, 2.266, 3.323, 4.693, 6.388, 8.408",\
                 "0.3382, 0.4144, 0.644, 1.004, 1.522, 2.28, 3.333, 4.694, 6.389, 8.395",\
                 "0.3668, 0.4434, 0.674, 1.036, 1.55, 2.301, 3.345, 4.702, 6.391, 8.393",\
                 "0.3998, 0.477, 0.709, 1.073, 1.583, 2.325, 3.361, 4.71, 6.388, 8.398");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("1.898, 1.978, 2.189, 2.483, 2.817, 3.188, 3.595, 4.042, 4.539, 5.098",\
                 "1.914, 1.993, 2.205, 2.498, 2.832, 3.203, 3.61, 4.057, 4.555, 5.113",\
                 "1.965, 2.044, 2.256, 2.55, 2.883, 3.255, 3.662, 4.109, 4.606, 5.165",\
                 "2.034, 2.113, 2.325, 2.618, 2.952, 3.323, 3.73, 4.177, 4.675, 5.233",\
                 "2.087, 2.166, 2.378, 2.671, 3.005, 3.376, 3.783, 4.23, 4.728, 5.286",\
                 "2.121, 2.201, 2.412, 2.705, 3.039, 3.411, 3.817, 4.264, 4.762, 5.321",\
                 "2.137, 2.216, 2.428, 2.721, 3.055, 3.426, 3.834, 4.281, 4.778, 5.336",\
                 "2.133, 2.212, 2.424, 2.717, 3.051, 3.423, 3.83, 4.277, 4.775, 5.333",\
                 "2.109, 2.189, 2.4, 2.694, 3.028, 3.399, 3.806, 4.253, 4.751, 5.31",\
                 "2.063, 2.142, 2.354, 2.648, 2.981, 3.353, 3.76, 4.207, 4.705, 5.264");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("1.449, 1.517, 1.706, 1.992, 2.367, 2.85, 3.468, 4.243, 5.187, 6.313",\
                 "1.464, 1.532, 1.721, 2.007, 2.382, 2.865, 3.483, 4.257, 5.202, 6.328",\
                 "1.518, 1.586, 1.774, 2.061, 2.435, 2.919, 3.537, 4.311, 5.255, 6.38",\
                 "1.593, 1.66, 1.849, 2.135, 2.51, 2.994, 3.612, 4.386, 5.33, 6.457",\
                 "1.651, 1.719, 1.907, 2.194, 2.568, 3.051, 3.67, 4.444, 5.388, 6.515",\
                 "1.69, 1.758, 1.947, 2.233, 2.608, 3.091, 3.709, 4.484, 5.428, 6.554",\
                 "1.71, 1.778, 1.967, 2.253, 2.628, 3.111, 3.73, 4.504, 5.448, 6.573",\
                 "1.706, 1.774, 1.963, 2.249, 2.623, 3.107, 3.725, 4.499, 5.442, 6.567",\
                 "1.676, 1.744, 1.932, 2.219, 2.593, 3.077, 3.695, 4.468, 5.412, 6.536",\
                 "1.617, 1.685, 1.873, 2.16, 2.534, 3.018, 3.636, 4.41, 5.355, 6.478");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.527, 0.6088, 0.8166, 1.067, 1.349, 1.703, 2.127, 2.656, 3.314, 4.129",\
                 "0.527, 0.6076, 0.8168, 1.067, 1.349, 1.701, 2.126, 2.656, 3.314, 4.129",\
                 "0.528, 0.607, 0.8162, 1.067, 1.349, 1.7, 2.126, 2.654, 3.314, 4.129",\
                 "0.5276, 0.609, 0.8164, 1.067, 1.348, 1.701, 2.126, 2.654, 3.315, 4.129",\
                 "0.5276, 0.608, 0.8164, 1.067, 1.349, 1.701, 2.126, 2.656, 3.315, 4.125",\
                 "0.5262, 0.6064, 0.8164, 1.067, 1.349, 1.701, 2.126, 2.656, 3.315, 4.125",\
                 "0.5282, 0.6092, 0.8172, 1.067, 1.349, 1.702, 2.129, 2.658, 3.32, 4.132",\
                 "0.5284, 0.6074, 0.8168, 1.068, 1.348, 1.701, 2.127, 2.655, 3.315, 4.132",\
                 "0.528, 0.6084, 0.818, 1.068, 1.35, 1.702, 2.128, 2.655, 3.317, 4.125",\
                 "0.5302, 0.6116, 0.82, 1.07, 1.351, 1.702, 2.13, 2.66, 3.317, 4.125");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.001, 0.01006, 0.04185, 0.1026, 0.1972, 0.3299, 0.5045, 0.7246, 0.9931, 1.313");
          values("0.2776, 0.3508, 0.579, 0.9402, 1.471, 2.254, 3.32, 4.689, 6.38, 8.396",\
                 "0.2774, 0.351, 0.5794, 0.94, 1.471, 2.254, 3.318, 4.693, 6.38, 8.396",\
                 "0.2774, 0.351, 0.5796, 0.9404, 1.472, 2.254, 3.32, 4.693, 6.381, 8.396",\
                 "0.278, 0.351, 0.579, 0.9398, 1.471, 2.251, 3.318, 4.695, 6.386, 8.396",\
                 "0.2772, 0.3506, 0.5794, 0.9402, 1.471, 2.254, 3.32, 4.689, 6.38, 8.405",\
                 "0.2776, 0.351, 0.5794, 0.939, 1.47, 2.254, 3.32, 4.69, 6.38, 8.395",\
                 "0.2778, 0.3508, 0.5798, 0.939, 1.47, 2.253, 3.319, 4.692, 6.38, 8.397",\
                 "0.2776, 0.3508, 0.58, 0.9396, 1.473, 2.25, 3.319, 4.699, 6.378, 8.391",\
                 "0.278, 0.3512, 0.5796, 0.94, 1.471, 2.249, 3.318, 4.69, 6.38, 8.39",\
                 "0.2778, 0.351, 0.579, 0.9404, 1.471, 2.25, 3.318, 4.692, 6.376, 8.392");
        }
      }
    }
  }

