/*
 * 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__bufz_2) {
    area : 32.928000 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!EN&!I" ;
      value : "5.4585e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!EN&I" ;
      value : "5.4585e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "EN&!I" ;
      value : "8.2272e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "EN&I" ;
      value : "8.2227e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "8.2272e-05" ;
    }

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

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

    pin(EN) {
      capacitance : 0.008072 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 11 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.07866, 0.07708, 0.07672, 0.07894, 0.08327, 0.08998, 0.09924, \
                  0.1116, 0.1276, 0.148");
        }

        rise_power(scalar) {
          values("0");
          /* SiliconSmart: placeholder for Liberty-required model for which no measurement is available. */
        }
      }

      internal_power() {
        when : "I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.118, 0.1158, 0.1142, 0.1163, 0.1228, 0.1342, 0.1507, 0.1727, \
                  0.2007, 0.2353");
        }

        rise_power(scalar) {
          values("0");
          /* SiliconSmart: placeholder for Liberty-required model for which no measurement is available. */
        }
      }
    }

    pin(I) {
      capacitance : 0.004635 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 11 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.01246, 0.01246, 0.01246, 0.01242, 0.01244, 0.01247, 0.01246, \
                  0.01247, 0.01246, 0.01248");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.01243, -0.01245, -0.01243, -0.01241, -0.01241, -0.01244, -0.01243, \
                  -0.01244, -0.01243, -0.01245");
        }
      }
    }

    pin(Z) {
      capacitance : 0.003578 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.693 ;
      max_transition : 11 ;
      min_capacitance : 0.004578 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;
      three_state : "(!EN)" ;

      internal_power() {
        related_pin : "EN" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.1016, 0.1016, 0.1016, 0.1015, 0.1016, 0.1016, 0.1016, 0.1016, 0.1016, 0.1016",\
                 "0.1016, 0.1016, 0.1016, 0.1016, 0.1016, 0.1017, 0.1017, 0.1017, 0.1017, 0.1017",\
                 "0.1036, 0.1036, 0.1036, 0.1035, 0.1035, 0.1036, 0.1036, 0.1036, 0.1036, 0.1036",\
                 "0.1073, 0.1073, 0.1073, 0.1072, 0.1072, 0.1072, 0.1073, 0.1073, 0.1073, 0.1073",\
                 "0.1139, 0.1138, 0.1138, 0.1139, 0.1138, 0.1138, 0.1139, 0.1138, 0.1138, 0.1139",\
                 "0.1237, 0.1237, 0.1237, 0.1237, 0.1237, 0.1237, 0.1237, 0.1237, 0.1237, 0.1237",\
                 "0.137, 0.137, 0.137, 0.1369, 0.137, 0.137, 0.137, 0.137, 0.137, 0.137",\
                 "0.1539, 0.1539, 0.1538, 0.1538, 0.1538, 0.1538, 0.1538, 0.1539, 0.1539, 0.1539",\
                 "0.1743, 0.1743, 0.1743, 0.1742, 0.1742, 0.1743, 0.1743, 0.1743, 0.1743, 0.1743",\
                 "0.1987, 0.1987, 0.1986, 0.1986, 0.1986, 0.1986, 0.1986, 0.1986, 0.1986, 0.1986");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.06559, 0.06566, 0.06567, 0.06567, 0.06613, 0.0668, 0.06783, 0.06881, 0.07072, 0.0894",\
                 "0.06467, 0.06474, 0.06466, 0.06474, 0.06538, 0.0659, 0.06687, 0.06791, 0.07073, 0.08872",\
                 "0.0637, 0.06366, 0.06374, 0.06375, 0.06442, 0.06494, 0.06594, 0.06701, 0.06953, 0.08962",\
                 "0.06542, 0.06539, 0.06557, 0.06555, 0.06616, 0.0668, 0.06792, 0.06911, 0.07106, 0.0952",\
                 "0.07123, 0.07132, 0.07088, 0.0717, 0.07183, 0.07241, 0.07314, 0.07421, 0.0771, 0.1041",\
                 "0.08143, 0.08153, 0.08135, 0.08127, 0.08248, 0.08282, 0.08319, 0.08411, 0.08766, 0.1224",\
                 "0.09655, 0.0967, 0.09654, 0.09657, 0.0967, 0.09854, 0.09909, 0.09933, 0.1034, 0.147",\
                 "0.117, 0.117, 0.117, 0.1171, 0.117, 0.1173, 0.12, 0.1212, 0.1258, 0.1869",\
                 "0.1428, 0.1428, 0.1428, 0.143, 0.1427, 0.1425, 0.1441, 0.1477, 0.1579, 0.2462",\
                 "0.1744, 0.1744, 0.1746, 0.1745, 0.1746, 0.1748, 0.1749, 0.1768, 0.201, 0.3434");
        }
      }

      internal_power() {
        related_pin : "I" ;
        when : "EN" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.1602, 0.1607, 0.1623, 0.1638, 0.1648, 0.1653, 0.1656, 0.1658, 0.1659, 0.166",\
                 "0.1592, 0.1598, 0.1614, 0.163, 0.1639, 0.1645, 0.1648, 0.165, 0.1651, 0.1652",\
                 "0.1582, 0.1587, 0.1603, 0.1618, 0.1628, 0.1634, 0.1637, 0.1639, 0.164, 0.1641",\
                 "0.1591, 0.1594, 0.1605, 0.162, 0.163, 0.1637, 0.1641, 0.1644, 0.1645, 0.1647",\
                 "0.1638, 0.1636, 0.1638, 0.1647, 0.1657, 0.1664, 0.1668, 0.1671, 0.1673, 0.1675",\
                 "0.1717, 0.1709, 0.1702, 0.1705, 0.1712, 0.1719, 0.1723, 0.1727, 0.1729, 0.173",\
                 "0.1828, 0.1816, 0.1801, 0.1797, 0.18, 0.1805, 0.1808, 0.1812, 0.1813, 0.1815",\
                 "0.197, 0.1952, 0.1931, 0.1921, 0.1921, 0.1923, 0.1927, 0.1929, 0.1931, 0.1933",\
                 "0.2148, 0.2125, 0.2096, 0.208, 0.2075, 0.2076, 0.2078, 0.208, 0.2082, 0.2083",\
                 "0.236, 0.2335, 0.2299, 0.2277, 0.2268, 0.2265, 0.2266, 0.2268, 0.2269, 0.2271");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.07116, 0.07222, 0.07427, 0.07615, 0.0777, 0.07897, 0.08006, 0.08103, 0.08416, 0.1053",\
                 "0.07069, 0.07183, 0.07392, 0.07561, 0.0771, 0.07828, 0.07967, 0.08073, 0.08386, 0.1031",\
                 "0.06983, 0.07082, 0.07259, 0.0742, 0.07596, 0.07708, 0.07859, 0.07983, 0.08297, 0.1037",\
                 "0.06931, 0.07015, 0.07166, 0.07327, 0.07509, 0.07651, 0.07808, 0.07923, 0.08239, 0.1074",\
                 "0.07068, 0.0712, 0.07247, 0.07417, 0.07599, 0.07723, 0.07901, 0.08073, 0.08395, 0.114",\
                 "0.0748, 0.07517, 0.07598, 0.07765, 0.07959, 0.08071, 0.08267, 0.08373, 0.08821, 0.1277",\
                 "0.08221, 0.08239, 0.08286, 0.08371, 0.08529, 0.08764, 0.08876, 0.08996, 0.09524, 0.1466",\
                 "0.0931, 0.0927, 0.09296, 0.09343, 0.09459, 0.09604, 0.09914, 0.1004, 0.1084, 0.178",\
                 "0.1076, 0.107, 0.1067, 0.1067, 0.108, 0.1088, 0.1107, 0.1143, 0.1275, 0.2323",\
                 "0.1258, 0.1249, 0.1241, 0.1239, 0.1249, 0.1253, 0.1254, 0.1302, 0.1579, 0.3258");
        }
      }

      timing() {
        related_pin : "EN" ;
        timing_sense : negative_unate ;
        timing_type : three_state_disable ;

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.253, 0.281, 0.376, 0.549, 0.747, 0.969, 1.225, 1.521, 1.854, \
                  2.23");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.374, 0.394, 0.489, 0.656, 0.848, 1.069, 1.329, 1.631, 1.976, \
                  2.362");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }
      }

      timing() {
        related_pin : "EN" ;
        timing_sense : positive_unate ;
        timing_type : three_state_enable ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.335, 0.408, 0.5686, 0.7814, 1.057, 1.414, 1.872, 2.446, 3.146, 3.98",\
                 "0.3589, 0.432, 0.5927, 0.8057, 1.081, 1.438, 1.896, 2.47, 3.17, 4.004",\
                 "0.4408, 0.512, 0.6707, 0.8828, 1.158, 1.515, 1.973, 2.547, 3.247, 4.081",\
                 "0.5607, 0.6279, 0.7809, 0.9901, 1.264, 1.621, 2.079, 2.653, 3.353, 4.187",\
                 "0.6197, 0.6859, 0.8381, 1.047, 1.319, 1.675, 2.133, 2.707, 3.407, 4.241",\
                 "0.6362, 0.7024, 0.8544, 1.063, 1.336, 1.692, 2.148, 2.721, 3.421, 4.255",\
                 "0.6167, 0.683, 0.8345, 1.043, 1.316, 1.671, 2.128, 2.701, 3.4, 4.233",\
                 "0.562, 0.6275, 0.7785, 0.9858, 1.258, 1.614, 2.071, 2.644, 3.343, 4.176",\
                 "0.4682, 0.5341, 0.6846, 0.891, 1.162, 1.518, 1.975, 2.548, 3.247, 4.08",\
                 "0.3345, 0.4008, 0.551, 0.7568, 1.028, 1.382, 1.839, 2.413, 3.112, 3.946");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.2627, 0.3252, 0.4975, 0.7961, 1.257, 1.903, 2.754, 3.825, 5.133, 6.693",\
                 "0.2835, 0.346, 0.5182, 0.8169, 1.277, 1.924, 2.775, 3.846, 5.155, 6.713",\
                 "0.356, 0.4189, 0.5912, 0.8899, 1.35, 1.996, 2.848, 3.919, 5.228, 6.782",\
                 "0.4393, 0.5068, 0.6839, 0.9841, 1.444, 2.09, 2.94, 4.013, 5.32, 6.88",\
                 "0.496, 0.5715, 0.7547, 1.057, 1.519, 2.165, 3.014, 4.087, 5.394, 6.953",\
                 "0.5235, 0.6089, 0.8018, 1.105, 1.567, 2.215, 3.064, 4.134, 5.445, 7.005",\
                 "0.5195, 0.6172, 0.8238, 1.13, 1.592, 2.238, 3.089, 4.16, 5.468, 7.028",\
                 "0.4799, 0.5903, 0.8161, 1.128, 1.59, 2.236, 3.086, 4.158, 5.465, 7.022",\
                 "0.4026, 0.526, 0.7739, 1.095, 1.559, 2.205, 3.055, 4.126, 5.434, 6.991",\
                 "0.286, 0.4226, 0.6945, 1.028, 1.496, 2.144, 2.994, 4.065, 5.372, 6.93");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.1632, 0.2209, 0.3624, 0.5994, 0.9664, 1.502, 2.233, 3.173, 4.327, 5.704",\
                 "0.1635, 0.2213, 0.3626, 0.5991, 0.9668, 1.502, 2.234, 3.173, 4.328, 5.702",\
                 "0.1577, 0.2161, 0.3595, 0.5975, 0.9638, 1.503, 2.235, 3.171, 4.328, 5.698",\
                 "0.152, 0.2056, 0.3504, 0.5924, 0.962, 1.499, 2.235, 3.172, 4.325, 5.702",\
                 "0.1494, 0.204, 0.3496, 0.59, 0.9578, 1.497, 2.232, 3.173, 4.328, 5.701",\
                 "0.1482, 0.2032, 0.3492, 0.5906, 0.9584, 1.495, 2.226, 3.168, 4.327, 5.7",\
                 "0.148, 0.2022, 0.3484, 0.5894, 0.9594, 1.497, 2.228, 3.163, 4.316, 5.692",\
                 "0.1478, 0.2016, 0.347, 0.5882, 0.9578, 1.496, 2.228, 3.164, 4.315, 5.685",\
                 "0.149, 0.202, 0.3456, 0.585, 0.9556, 1.496, 2.227, 3.165, 4.315, 5.686",\
                 "0.1502, 0.2028, 0.3448, 0.5844, 0.953, 1.495, 2.228, 3.165, 4.317, 5.689");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.1267, 0.1994, 0.4416, 0.9332, 1.72, 2.827, 4.281, 6.117, 8.357, 11.05",\
                 "0.1267, 0.1992, 0.4414, 0.9336, 1.72, 2.826, 4.283, 6.113, 8.363, 11.05",\
                 "0.1275, 0.2001, 0.4419, 0.9338, 1.72, 2.827, 4.283, 6.113, 8.362, 11.03",\
                 "0.1437, 0.2112, 0.4484, 0.9334, 1.718, 2.826, 4.286, 6.123, 8.37, 11.03",\
                 "0.1684, 0.2308, 0.4566, 0.9396, 1.721, 2.824, 4.282, 6.12, 8.36, 11.03",\
                 "0.1938, 0.2582, 0.4682, 0.9424, 1.723, 2.825, 4.277, 6.112, 8.353, 11.03",\
                 "0.2236, 0.2908, 0.486, 0.9456, 1.724, 2.827, 4.279, 6.106, 8.355, 11.03",\
                 "0.2546, 0.3272, 0.5144, 0.9532, 1.725, 2.834, 4.28, 6.109, 8.353, 11.01",\
                 "0.2862, 0.3662, 0.5498, 0.9698, 1.73, 2.827, 4.284, 6.11, 8.344, 11.01",\
                 "0.32, 0.4052, 0.5934, 0.9896, 1.744, 2.838, 4.283, 6.108, 8.344, 11.01");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.5677, 0.6515, 0.8236, 1.041, 1.318, 1.676, 2.135, 2.709, 3.409, 4.244",\
                 "0.5925, 0.6765, 0.8483, 1.066, 1.343, 1.701, 2.16, 2.734, 3.434, 4.268",\
                 "0.6869, 0.771, 0.9428, 1.16, 1.438, 1.795, 2.254, 2.828, 3.528, 4.362",\
                 "0.8719, 0.9565, 1.129, 1.347, 1.624, 1.983, 2.441, 3.016, 3.716, 4.55",\
                 "1.109, 1.203, 1.388, 1.612, 1.891, 2.25, 2.709, 3.283, 3.983, 4.818",\
                 "1.367, 1.471, 1.675, 1.91, 2.197, 2.559, 3.018, 3.592, 4.293, 5.127",\
                 "1.653, 1.762, 1.986, 2.235, 2.53, 2.896, 3.357, 3.932, 4.632, 5.466",\
                 "1.973, 2.087, 2.329, 2.592, 2.895, 3.265, 3.729, 4.304, 5.005, 5.839",\
                 "2.337, 2.453, 2.713, 2.989, 3.3, 3.675, 4.141, 4.717, 5.417, 6.252",\
                 "2.741, 2.864, 3.14, 3.432, 3.752, 4.132, 4.598, 5.177, 5.877, 6.712");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.4389, 0.5034, 0.6791, 0.9811, 1.444, 2.091, 2.943, 4.014, 5.323, 6.879",\
                 "0.4607, 0.5251, 0.701, 1.003, 1.465, 2.113, 2.965, 4.036, 5.345, 6.904",\
                 "0.5376, 0.6018, 0.777, 1.079, 1.541, 2.189, 3.041, 4.112, 5.422, 6.981",\
                 "0.6583, 0.7247, 0.9013, 1.203, 1.666, 2.315, 3.166, 4.239, 5.546, 7.108",\
                 "0.7669, 0.8401, 1.025, 1.329, 1.792, 2.439, 3.291, 4.362, 5.669, 7.229",\
                 "0.8491, 0.9308, 1.126, 1.433, 1.896, 2.544, 3.395, 4.469, 5.777, 7.339",\
                 "0.9032, 0.9938, 1.201, 1.512, 1.976, 2.624, 3.475, 4.546, 5.856, 7.416",\
                 "0.9301, 1.028, 1.25, 1.566, 2.03, 2.678, 3.528, 4.6, 5.907, 7.467",\
                 "0.9254, 1.031, 1.269, 1.593, 2.057, 2.705, 3.555, 4.627, 5.935, 7.492",\
                 "0.8859, 0.9979, 1.254, 1.589, 2.056, 2.703, 3.554, 4.625, 5.933, 7.49");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.19, 0.244, 0.3722, 0.6032, 0.9664, 1.504, 2.235, 3.171, 4.327, 5.699",\
                 "0.1901, 0.244, 0.3721, 0.6026, 0.9666, 1.501, 2.235, 3.172, 4.326, 5.701",\
                 "0.1897, 0.2436, 0.3724, 0.6028, 0.9672, 1.503, 2.235, 3.174, 4.324, 5.706",\
                 "0.1944, 0.248, 0.376, 0.6042, 0.969, 1.503, 2.235, 3.174, 4.322, 5.704",\
                 "0.2224, 0.2824, 0.3972, 0.6156, 0.9724, 1.506, 2.236, 3.173, 4.326, 5.704",\
                 "0.2454, 0.3238, 0.4352, 0.6454, 0.992, 1.514, 2.237, 3.174, 4.323, 5.701",\
                 "0.263, 0.3594, 0.477, 0.6762, 1.016, 1.529, 2.245, 3.176, 4.327, 5.704",\
                 "0.279, 0.388, 0.5188, 0.71, 1.041, 1.547, 2.255, 3.181, 4.326, 5.701",\
                 "0.2968, 0.4114, 0.5622, 0.744, 1.066, 1.563, 2.263, 3.185, 4.329, 5.699",\
                 "0.3184, 0.4388, 0.6064, 0.7808, 1.094, 1.58, 2.274, 3.19, 4.334, 5.702");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004578, 0.00933, 0.02601, 0.05786, 0.1075, 0.1771, 0.2687, 0.3842, 0.5251, 0.693");
          values("0.1242, 0.1957, 0.4396, 0.9321, 1.72, 2.828, 4.282, 6.114, 8.366, 11.04",\
                 "0.1244, 0.1964, 0.4398, 0.9319, 1.72, 2.826, 4.282, 6.114, 8.362, 11.05",\
                 "0.1244, 0.1968, 0.44, 0.9324, 1.718, 2.828, 4.281, 6.12, 8.361, 11.05",\
                 "0.1322, 0.2028, 0.4422, 0.9328, 1.72, 2.826, 4.284, 6.114, 8.358, 11.05",\
                 "0.1524, 0.2218, 0.4536, 0.9354, 1.719, 2.825, 4.287, 6.124, 8.365, 11.03",\
                 "0.1756, 0.2466, 0.4698, 0.9416, 1.72, 2.821, 4.281, 6.113, 8.358, 11.04",\
                 "0.1994, 0.2744, 0.4892, 0.9478, 1.723, 2.823, 4.276, 6.11, 8.359, 11.03",\
                 "0.2204, 0.3026, 0.5136, 0.957, 1.724, 2.826, 4.278, 6.104, 8.347, 11.02",\
                 "0.2414, 0.3324, 0.547, 0.9702, 1.727, 2.827, 4.278, 6.109, 8.339, 11.02",\
                 "0.2626, 0.3618, 0.584, 0.9926, 1.736, 2.831, 4.282, 6.109, 8.34, 11");
        }
      }
    }
  }

