/*
 * 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_1) {
    area : 43.904000 ;

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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.01187, 0.0119, 0.01185, 0.01185, 0.01186, 0.01188, 0.01188, \
                  0.01188, 0.01188, 0.01187");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.01082, -0.01081, -0.0108, -0.01081, -0.01082, -0.01086, -0.01088, \
                  -0.01088, -0.01089, -0.01089");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.487, -0.473, -0.436, -0.38, -0.329, -0.267, -0.187, -0.093, 0.016, 0.149",\
                 "-0.496, -0.481, -0.441, -0.387, -0.336, -0.276, -0.192, -0.101, 0.014, 0.148",\
                 "-0.522, -0.51, -0.466, -0.417, -0.362, -0.301, -0.219, -0.125, -0.009, 0.124",\
                 "-0.589, -0.579, -0.538, -0.489, -0.432, -0.364, -0.282, -0.185, -0.071, 0.065",\
                 "-0.734, -0.718, -0.675, -0.626, -0.565, -0.501, -0.414, -0.317, -0.198, -0.064",\
                 "-0.93, -0.919, -0.879, -0.825, -0.767, -0.704, -0.624, -0.528, -0.405, -0.274",\
                 "-1.181, -1.169, -1.131, -1.074, -1.017, -0.966, -0.888, -0.796, -0.687, -0.557",\
                 "-1.481, -1.47, -1.429, -1.375, -1.326, -1.267, -1.205, -1.118, -1.017, -0.895",\
                 "-1.816, -1.802, -1.761, -1.715, -1.668, -1.617, -1.56, -1.484, -1.39, -1.283",\
                 "-2.184, -2.179, -2.137, -2.087, -2.047, -2.005, -1.944, -1.88, -1.794, -1.694");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.109, -0.093, -0.04, 0.047, 0.153, 0.273, 0.416, 0.574, 0.747, 0.951",\
                 "-0.108, -0.1, -0.045, 0.047, 0.149, 0.272, 0.413, 0.568, 0.744, 0.946",\
                 "-0.121, -0.109, -0.058, 0.034, 0.145, 0.264, 0.404, 0.566, 0.744, 0.94",\
                 "-0.146, -0.135, -0.081, 0.013, 0.125, 0.249, 0.395, 0.551, 0.739, 0.936",\
                 "-0.16, -0.143, -0.091, 0.005, 0.112, 0.24, 0.391, 0.55, 0.735, 0.935",\
                 "-0.142, -0.128, -0.074, 0.019, 0.134, 0.262, 0.41, 0.574, 0.756, 0.96",\
                 "-0.086, -0.078, -0.018, 0.073, 0.195, 0.326, 0.475, 0.639, 0.825, 1.033",\
                 "0.006, 0.018, 0.071, 0.167, 0.291, 0.433, 0.585, 0.752, 0.936, 1.144",\
                 "0.136, 0.153, 0.21, 0.313, 0.436, 0.577, 0.738, 0.913, 1.102, 1.313",\
                 "0.319, 0.333, 0.386, 0.497, 0.625, 0.772, 0.94, 1.116, 1.315, 1.528");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.693, 0.68, 0.641, 0.594, 0.567, 0.6, 0.716, 0.887, 1.108, 1.382",\
                 "0.702, 0.687, 0.649, 0.604, 0.568, 0.606, 0.722, 0.889, 1.106, 1.375",\
                 "0.728, 0.719, 0.681, 0.629, 0.6, 0.641, 0.747, 0.918, 1.134, 1.397",\
                 "0.795, 0.787, 0.739, 0.692, 0.664, 0.69, 0.777, 0.915, 1.1, 1.329",\
                 "0.925, 0.909, 0.874, 0.82, 0.789, 0.798, 0.861, 0.972, 1.124, 1.31",\
                 "1.117, 1.105, 1.069, 1.016, 0.98, 0.976, 1.015, 1.111, 1.248, 1.42",\
                 "1.365, 1.355, 1.32, 1.273, 1.226, 1.211, 1.245, 1.328, 1.453, 1.624",\
                 "1.661, 1.646, 1.613, 1.572, 1.525, 1.507, 1.526, 1.613, 1.741, 1.914",\
                 "1.995, 1.982, 1.947, 1.911, 1.873, 1.843, 1.857, 1.928, 2.056, 2.24",\
                 "2.356, 2.351, 2.322, 2.29, 2.249, 2.216, 2.228, 2.294, 2.416, 2.605");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.218, 0.206, 0.15, 0.06, -0.054, -0.168, -0.292, -0.435, -0.595, -0.77",\
                 "0.221, 0.206, 0.149, 0.056, -0.047, -0.164, -0.294, -0.433, -0.591, -0.773",\
                 "0.231, 0.219, 0.165, 0.069, -0.037, -0.158, -0.286, -0.431, -0.593, -0.773",\
                 "0.252, 0.239, 0.185, 0.095, -0.014, -0.141, -0.283, -0.436, -0.603, -0.79",\
                 "0.252, 0.238, 0.183, 0.097, -0.018, -0.149, -0.282, -0.447, -0.62, -0.822",\
                 "0.223, 0.21, 0.152, 0.064, -0.05, -0.179, -0.329, -0.486, -0.665, -0.865",\
                 "0.152, 0.137, 0.081, -0.013, -0.126, -0.268, -0.413, -0.58, -0.764, -0.958",\
                 "0.041, 0.028, -0.028, -0.127, -0.246, -0.389, -0.543, -0.712, -0.901, -1.102",\
                 "-0.101, -0.111, -0.174, -0.275, -0.403, -0.55, -0.712, -0.889, -1.074, -1.281",\
                 "-0.283, -0.296, -0.358, -0.467, -0.604, -0.755, -0.921, -1.101, -1.299, -1.509");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1182, 0.118, 0.1232, 0.1408, 0.173, 0.221, 0.2858, 0.3681, 0.4689, \
                  0.5891");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.06702, 0.06671, 0.07079, 0.08516, 0.1129, 0.1548, 0.2119, 0.2848, \
                  0.3745, 0.4819");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1206, 0.1203, 0.1257, 0.1435, 0.1758, 0.2238, 0.2885, 0.3707, \
                  0.4717, 0.592");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.0654, 0.06515, 0.06915, 0.08347, 0.111, 0.1528, 0.2099, 0.2829, \
                  0.3726, 0.48");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.3616 ;
      max_transition : 7.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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.2511, 0.2458, 0.2334, 0.2219, 0.2145, 0.2095, 0.206, 0.2035, 0.2017, 0.2003",\
                 "0.2507, 0.2454, 0.233, 0.2215, 0.214, 0.209, 0.2054, 0.2029, 0.2011, 0.1998",\
                 "0.2511, 0.2458, 0.2333, 0.2219, 0.2144, 0.2095, 0.2059, 0.2034, 0.2015, 0.2003",\
                 "0.2602, 0.2548, 0.2421, 0.2303, 0.2225, 0.2172, 0.2137, 0.2111, 0.2093, 0.2079",\
                 "0.2887, 0.2829, 0.269, 0.2557, 0.2467, 0.2406, 0.2363, 0.2333, 0.2311, 0.2295",\
                 "0.3407, 0.3343, 0.3185, 0.3025, 0.291, 0.283, 0.2774, 0.2734, 0.2705, 0.2684",\
                 "0.4151, 0.4082, 0.3903, 0.3707, 0.3558, 0.345, 0.3373, 0.3317, 0.3277, 0.3246",\
                 "0.5096, 0.5021, 0.4822, 0.4589, 0.44, 0.426, 0.4156, 0.4078, 0.4021, 0.3978",\
                 "0.6229, 0.6149, 0.5933, 0.5665, 0.5431, 0.5252, 0.5117, 0.5015, 0.4938, 0.4879",\
                 "0.755, 0.7464, 0.7234, 0.6935, 0.6656, 0.6435, 0.6264, 0.6133, 0.6033, 0.5955");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.1631, 0.1595, 0.1538, 0.1501, 0.148, 0.1471, 0.1468, 0.1466, 0.147, 0.1494",\
                 "0.1625, 0.1589, 0.1531, 0.1495, 0.1474, 0.1465, 0.1462, 0.1461, 0.1463, 0.1487",\
                 "0.1633, 0.1598, 0.1539, 0.1502, 0.1479, 0.147, 0.1467, 0.1465, 0.147, 0.1493",\
                 "0.1747, 0.1709, 0.1644, 0.1598, 0.1569, 0.1555, 0.1549, 0.1549, 0.1549, 0.1571",\
                 "0.2015, 0.1971, 0.189, 0.1829, 0.1785, 0.176, 0.1745, 0.174, 0.174, 0.1763",\
                 "0.2448, 0.2394, 0.2292, 0.2206, 0.2146, 0.2107, 0.2078, 0.2062, 0.2055, 0.2076",\
                 "0.3043, 0.2982, 0.2857, 0.2742, 0.2654, 0.2599, 0.2562, 0.2532, 0.2516, 0.2538",\
                 "0.3804, 0.3736, 0.3586, 0.3442, 0.3325, 0.324, 0.319, 0.3149, 0.3119, 0.3145",\
                 "0.4737, 0.4664, 0.449, 0.4319, 0.4173, 0.4056, 0.3975, 0.3926, 0.3894, 0.3916",\
                 "0.5848, 0.577, 0.5574, 0.5368, 0.5194, 0.5043, 0.4932, 0.4856, 0.481, 0.4854");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.2281, 0.223, 0.211, 0.2, 0.1928, 0.1881, 0.1847, 0.1823, 0.1806, 0.1793",\
                 "0.2282, 0.223, 0.2111, 0.2001, 0.1929, 0.1882, 0.1848, 0.1824, 0.1807, 0.1794",\
                 "0.228, 0.2229, 0.2109, 0.1999, 0.1928, 0.188, 0.1847, 0.1823, 0.1805, 0.1792",\
                 "0.2287, 0.2236, 0.2117, 0.2006, 0.1935, 0.1887, 0.1854, 0.183, 0.1813, 0.18",\
                 "0.2306, 0.2254, 0.2134, 0.2024, 0.1952, 0.1904, 0.187, 0.1846, 0.1829, 0.1816",\
                 "0.2345, 0.2293, 0.217, 0.2058, 0.1985, 0.1936, 0.1902, 0.1877, 0.186, 0.1847",\
                 "0.2402, 0.2349, 0.2224, 0.2109, 0.2033, 0.1982, 0.1948, 0.1922, 0.1903, 0.189",\
                 "0.2473, 0.2418, 0.229, 0.2171, 0.2093, 0.2039, 0.2003, 0.1977, 0.1958, 0.1944",\
                 "0.2557, 0.2501, 0.2369, 0.2246, 0.2164, 0.2109, 0.207, 0.2043, 0.2023, 0.2009",\
                 "0.2657, 0.26, 0.2465, 0.2336, 0.225, 0.2192, 0.2152, 0.2124, 0.2103, 0.2088");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.1729, 0.1693, 0.1634, 0.1595, 0.1572, 0.1561, 0.1554, 0.156, 0.1565, 0.1584",\
                 "0.1729, 0.1693, 0.1635, 0.1596, 0.1572, 0.1562, 0.1557, 0.1558, 0.1564, 0.1585",\
                 "0.1731, 0.1694, 0.1636, 0.1597, 0.1573, 0.1563, 0.1559, 0.156, 0.1559, 0.1588",\
                 "0.1735, 0.1699, 0.1641, 0.16, 0.1577, 0.1567, 0.1563, 0.1564, 0.1564, 0.1591",\
                 "0.174, 0.1704, 0.1647, 0.1606, 0.1582, 0.1572, 0.1567, 0.1569, 0.1575, 0.1607",\
                 "0.1745, 0.1709, 0.165, 0.1611, 0.1591, 0.1581, 0.1574, 0.1573, 0.1582, 0.1611",\
                 "0.1748, 0.1713, 0.1655, 0.1613, 0.159, 0.159, 0.1586, 0.1582, 0.1585, 0.1623",\
                 "0.1752, 0.1716, 0.1656, 0.1616, 0.1589, 0.1584, 0.1594, 0.1594, 0.1599, 0.164",\
                 "0.1755, 0.172, 0.1661, 0.1619, 0.1591, 0.1582, 0.1584, 0.1601, 0.1609, 0.168",\
                 "0.1758, 0.1722, 0.1662, 0.1624, 0.1595, 0.1582, 0.1577, 0.1591, 0.1618, 0.172");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.5427, 0.5852, 0.7006, 0.8681, 1.078, 1.337, 1.658, 2.053, 2.533, 3.104",\
                 "0.551, 0.5933, 0.7087, 0.8763, 1.086, 1.345, 1.666, 2.061, 2.541, 3.113",\
                 "0.5767, 0.6191, 0.7343, 0.9018, 1.111, 1.371, 1.691, 2.087, 2.567, 3.138",\
                 "0.6476, 0.6898, 0.8045, 0.9717, 1.181, 1.44, 1.761, 2.156, 2.636, 3.207",\
                 "0.7813, 0.8241, 0.9398, 1.107, 1.317, 1.576, 1.896, 2.291, 2.771, 3.342",\
                 "0.9696, 1.014, 1.134, 1.306, 1.519, 1.779, 2.099, 2.493, 2.972, 3.542",\
                 "1.199, 1.247, 1.376, 1.558, 1.777, 2.042, 2.364, 2.758, 3.236, 3.806",\
                 "1.465, 1.517, 1.655, 1.851, 2.084, 2.359, 2.687, 3.083, 3.56, 4.129",\
                 "1.769, 1.825, 1.972, 2.182, 2.431, 2.721, 3.062, 3.466, 3.945, 4.514",\
                 "2.113, 2.171, 2.328, 2.552, 2.818, 3.125, 3.483, 3.902, 4.391, 4.963");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.398, 0.4354, 0.5473, 0.7409, 1.029, 1.431, 1.961, 2.631, 3.447, 4.417",\
                 "0.4013, 0.4386, 0.5506, 0.7442, 1.032, 1.434, 1.965, 2.634, 3.451, 4.421",\
                 "0.4116, 0.4489, 0.5608, 0.7541, 1.042, 1.444, 1.974, 2.644, 3.46, 4.43",\
                 "0.4377, 0.4752, 0.5868, 0.779, 1.066, 1.467, 1.998, 2.666, 3.483, 4.457",\
                 "0.4586, 0.4979, 0.6116, 0.8045, 1.09, 1.49, 2.019, 2.686, 3.502, 4.474",\
                 "0.4564, 0.498, 0.6166, 0.8133, 1.1, 1.498, 2.024, 2.691, 3.504, 4.476",\
                 "0.4232, 0.4682, 0.593, 0.7949, 1.086, 1.486, 2.011, 2.675, 3.488, 4.46",\
                 "0.354, 0.4024, 0.5346, 0.7428, 1.041, 1.447, 1.976, 2.639, 3.45, 4.419",\
                 "0.248, 0.2996, 0.4399, 0.6552, 0.9592, 1.373, 1.91, 2.579, 3.39, 4.357",\
                 "0.1021, 0.1577, 0.3066, 0.5295, 0.8395, 1.26, 1.807, 2.486, 3.305, 4.273");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.2033, 0.2462, 0.3628, 0.5393, 0.7897, 1.154, 1.651, 2.305, 3.119, 4.104",\
                 "0.2031, 0.2461, 0.3628, 0.5391, 0.7905, 1.153, 1.651, 2.304, 3.121, 4.099",\
                 "0.2031, 0.2461, 0.3631, 0.5395, 0.79, 1.152, 1.652, 2.305, 3.119, 4.103",\
                 "0.2031, 0.2463, 0.364, 0.5404, 0.7912, 1.154, 1.651, 2.305, 3.118, 4.103",\
                 "0.2156, 0.2594, 0.3752, 0.5488, 0.7966, 1.156, 1.652, 2.303, 3.12, 4.101",\
                 "0.2434, 0.287, 0.4036, 0.574, 0.8142, 1.167, 1.658, 2.309, 3.121, 4.103",\
                 "0.2808, 0.3292, 0.452, 0.6222, 0.8528, 1.193, 1.673, 2.315, 3.122, 4.102",\
                 "0.324, 0.3766, 0.5104, 0.6896, 0.9172, 1.247, 1.708, 2.331, 3.132, 4.105",\
                 "0.3688, 0.4264, 0.5732, 0.7646, 0.9976, 1.326, 1.779, 2.379, 3.154, 4.113",\
                 "0.416, 0.4794, 0.6386, 0.8456, 1.088, 1.421, 1.876, 2.466, 3.217, 4.147");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.1505, 0.1975, 0.3643, 0.6818, 1.191, 1.928, 2.897, 4.122, 5.618, 7.4",\
                 "0.1505, 0.1975, 0.3643, 0.6819, 1.191, 1.928, 2.897, 4.122, 5.618, 7.399",\
                 "0.1499, 0.1974, 0.3644, 0.6818, 1.191, 1.928, 2.897, 4.122, 5.618, 7.4",\
                 "0.154, 0.2008, 0.3664, 0.6825, 1.191, 1.928, 2.901, 4.123, 5.615, 7.402",\
                 "0.1682, 0.215, 0.3778, 0.6904, 1.195, 1.928, 2.9, 4.122, 5.618, 7.397",\
                 "0.187, 0.2362, 0.3988, 0.708, 1.204, 1.929, 2.898, 4.125, 5.616, 7.397",\
                 "0.2122, 0.2626, 0.4254, 0.7358, 1.229, 1.944, 2.907, 4.131, 5.629, 7.4",\
                 "0.2392, 0.292, 0.4582, 0.7682, 1.266, 1.978, 2.928, 4.133, 5.628, 7.404",\
                 "0.2684, 0.3254, 0.495, 0.8042, 1.307, 2.026, 2.974, 4.168, 5.638, 7.416",\
                 "0.3034, 0.3622, 0.536, 0.8422, 1.347, 2.079, 3.038, 4.231, 5.682, 7.43");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.5902, 0.6326, 0.748, 0.9155, 1.125, 1.385, 1.705, 2.101, 2.581, 3.152",\
                 "0.5995, 0.6418, 0.7571, 0.9248, 1.134, 1.394, 1.715, 2.11, 2.59, 3.162",\
                 "0.6325, 0.675, 0.7903, 0.958, 1.168, 1.427, 1.748, 2.143, 2.623, 3.194",\
                 "0.6715, 0.7138, 0.8291, 0.9965, 1.206, 1.466, 1.786, 2.182, 2.662, 3.233",\
                 "0.7012, 0.7435, 0.8589, 1.026, 1.236, 1.495, 1.816, 2.211, 2.692, 3.263",\
                 "0.7201, 0.7624, 0.8777, 1.045, 1.255, 1.515, 1.835, 2.231, 2.711, 3.282",\
                 "0.7224, 0.7647, 0.8807, 1.049, 1.259, 1.519, 1.84, 2.235, 2.715, 3.287",\
                 "0.7053, 0.7482, 0.8644, 1.033, 1.244, 1.504, 1.825, 2.221, 2.7, 3.272",\
                 "0.6686, 0.7112, 0.828, 0.9974, 1.209, 1.47, 1.791, 2.187, 2.666, 3.238",\
                 "0.61, 0.653, 0.77, 0.9401, 1.152, 1.413, 1.735, 2.131, 2.61, 3.182");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.6536, 0.6908, 0.8027, 0.9959, 1.284, 1.685, 2.216, 2.885, 3.702, 4.675",\
                 "0.6629, 0.7002, 0.812, 1.005, 1.293, 1.694, 2.225, 2.894, 3.711, 4.684",\
                 "0.699, 0.7363, 0.8482, 1.041, 1.329, 1.731, 2.262, 2.93, 3.747, 4.72",\
                 "0.7418, 0.7788, 0.8906, 1.084, 1.372, 1.773, 2.304, 2.973, 3.79, 4.763",\
                 "0.7735, 0.8107, 0.9226, 1.116, 1.403, 1.805, 2.336, 3.004, 3.821, 4.795",\
                 "0.7893, 0.8266, 0.9383, 1.131, 1.419, 1.821, 2.352, 3.02, 3.837, 4.811",\
                 "0.7864, 0.8237, 0.9357, 1.129, 1.417, 1.819, 2.348, 3.016, 3.834, 4.806",\
                 "0.7624, 0.7997, 0.9115, 1.105, 1.392, 1.794, 2.323, 2.992, 3.807, 4.78",\
                 "0.7164, 0.7535, 0.8652, 1.058, 1.346, 1.748, 2.277, 2.946, 3.761, 4.734",\
                 "0.6465, 0.6836, 0.7954, 0.9884, 1.276, 1.678, 2.208, 2.875, 3.692, 4.664");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.2002, 0.2427, 0.3606, 0.537, 0.789, 1.153, 1.651, 2.305, 3.12, 4.103",\
                 "0.2003, 0.2427, 0.3601, 0.5374, 0.789, 1.153, 1.651, 2.305, 3.121, 4.097",\
                 "0.2001, 0.243, 0.3598, 0.537, 0.7892, 1.152, 1.651, 2.306, 3.121, 4.103",\
                 "0.2004, 0.2422, 0.3598, 0.5368, 0.7892, 1.153, 1.651, 2.305, 3.122, 4.1",\
                 "0.1998, 0.2428, 0.3606, 0.5376, 0.7896, 1.152, 1.651, 2.303, 3.12, 4.1",\
                 "0.2016, 0.2446, 0.3616, 0.5388, 0.7894, 1.151, 1.652, 2.306, 3.122, 4.1",\
                 "0.2042, 0.247, 0.365, 0.5416, 0.7926, 1.155, 1.65, 2.303, 3.121, 4.098",\
                 "0.207, 0.2506, 0.3686, 0.545, 0.7956, 1.156, 1.652, 2.304, 3.118, 4.096",\
                 "0.2106, 0.2536, 0.3722, 0.5488, 0.799, 1.158, 1.655, 2.307, 3.119, 4.096",\
                 "0.2144, 0.2578, 0.3764, 0.5538, 0.8028, 1.162, 1.657, 2.309, 3.12, 4.098");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003489, 0.01223, 0.02891, 0.05491, 0.09138, 0.1394, 0.1998, 0.2737, 0.3616");
          values("0.1504, 0.1978, 0.3644, 0.6827, 1.192, 1.928, 2.897, 4.122, 5.619, 7.398",\
                 "0.1504, 0.1979, 0.3643, 0.6826, 1.192, 1.928, 2.897, 4.123, 5.616, 7.399",\
                 "0.1504, 0.1979, 0.3643, 0.6826, 1.192, 1.928, 2.901, 4.122, 5.618, 7.399",\
                 "0.1504, 0.1974, 0.3644, 0.6826, 1.192, 1.928, 2.901, 4.122, 5.618, 7.399",\
                 "0.1504, 0.1978, 0.3644, 0.6824, 1.191, 1.928, 2.902, 4.122, 5.62, 7.403",\
                 "0.15, 0.1974, 0.3644, 0.682, 1.191, 1.928, 2.902, 4.122, 5.62, 7.402",\
                 "0.15, 0.1972, 0.3642, 0.6824, 1.192, 1.925, 2.901, 4.13, 5.618, 7.398",\
                 "0.1496, 0.1974, 0.3644, 0.682, 1.192, 1.925, 2.897, 4.123, 5.624, 7.4",\
                 "0.1494, 0.1976, 0.3642, 0.6826, 1.191, 1.925, 2.899, 4.123, 5.617, 7.401",\
                 "0.1498, 0.197, 0.3642, 0.6826, 1.191, 1.924, 2.897, 4.122, 5.619, 7.399");
        }
      }
    }
  }

