/*
 * 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__invz_8) {
    area : 85.612800 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!EN&!I" ;
      value : "0.002649438" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!EN&I" ;
      value : "0.0016777926" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "EN&!I" ;
      value : "0.005615676" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "EN&I" ;
      value : "0.003190968" ;
    }

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.07501, 0.07444, 0.07411, 0.07562, 0.07964, 0.08656, 0.09696, \
                  0.1113, 0.1299, 0.153");
        }

        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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.03821, 0.03772, 0.03761, 0.03901, 0.04193, 0.04654, 0.05302, \
                  0.0617, 0.07311, 0.0877");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.06061, 0.05982, 0.05931, 0.06129, 0.06616, 0.07437, 0.0862, \
                  0.1019, 0.1219, 0.1465");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.02128, 0.02094, 0.0209, 0.02223, 0.02616, 0.03314, 0.04352, \
                  0.05751, 0.07536, 0.09711");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.01619 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 1.815 ;
      max_transition : 8.9 ;
      min_capacitance : 0.01719 ;
      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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.1209, 0.1208, 0.1209, 0.1208, 0.1208, 0.1208, 0.1208, 0.1209, 0.1209, 0.1209",\
                 "0.1209, 0.1209, 0.1209, 0.1209, 0.1209, 0.1209, 0.1209, 0.1209, 0.1209, 0.121",\
                 "0.1221, 0.122, 0.1221, 0.122, 0.122, 0.122, 0.1221, 0.1221, 0.1221, 0.1221",\
                 "0.1245, 0.1245, 0.1244, 0.1244, 0.1244, 0.1244, 0.1244, 0.1245, 0.1245, 0.1245",\
                 "0.1287, 0.1287, 0.1287, 0.1287, 0.1287, 0.1287, 0.1287, 0.1287, 0.1287, 0.1287",\
                 "0.135, 0.1349, 0.1349, 0.1349, 0.1349, 0.1349, 0.1349, 0.1349, 0.1349, 0.1349",\
                 "0.1434, 0.1434, 0.1434, 0.1434, 0.1434, 0.1434, 0.1434, 0.1434, 0.1434, 0.1434",\
                 "0.1543, 0.1544, 0.1543, 0.1543, 0.1543, 0.1543, 0.1543, 0.1543, 0.1543, 0.1543",\
                 "0.1677, 0.1677, 0.1677, 0.1676, 0.1676, 0.1675, 0.1676, 0.1676, 0.1676, 0.1676",\
                 "0.1837, 0.1836, 0.1836, 0.1835, 0.1835, 0.1835, 0.1835, 0.1835, 0.1835, 0.1835");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.1062, 0.1064, 0.1064, 0.1062, 0.1067, 0.1071, 0.1082, 0.1097, 0.1117, 0.1238",\
                 "0.1059, 0.106, 0.1059, 0.106, 0.1064, 0.1071, 0.1082, 0.1085, 0.1115, 0.1224",\
                 "0.1058, 0.1059, 0.1058, 0.1059, 0.1063, 0.1072, 0.108, 0.1087, 0.1113, 0.1235",\
                 "0.107, 0.1071, 0.1072, 0.107, 0.1074, 0.1082, 0.1092, 0.1105, 0.1124, 0.126",\
                 "0.1105, 0.1105, 0.1108, 0.1109, 0.1113, 0.1119, 0.1127, 0.1134, 0.116, 0.1321",\
                 "0.1167, 0.1168, 0.1168, 0.1167, 0.118, 0.1184, 0.1195, 0.1202, 0.1228, 0.1421",\
                 "0.1263, 0.1264, 0.1265, 0.1261, 0.1267, 0.1285, 0.1294, 0.1301, 0.1322, 0.1576",\
                 "0.1394, 0.1394, 0.14, 0.1398, 0.1392, 0.1405, 0.143, 0.1443, 0.1472, 0.179",\
                 "0.1562, 0.1562, 0.1564, 0.1567, 0.1564, 0.1565, 0.1585, 0.1629, 0.1674, 0.2108",\
                 "0.177, 0.177, 0.1772, 0.1776, 0.1772, 0.1773, 0.1777, 0.1808, 0.1933, 0.2579");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.1947, 0.1964, 0.2001, 0.2029, 0.2044, 0.2052, 0.2057, 0.206, 0.2062, 0.2064",\
                 "0.1944, 0.196, 0.1997, 0.2026, 0.2041, 0.2049, 0.2054, 0.2057, 0.2059, 0.206",\
                 "0.1938, 0.1956, 0.1992, 0.2021, 0.2036, 0.2044, 0.2049, 0.2052, 0.2054, 0.2055",\
                 "0.1951, 0.1967, 0.2002, 0.203, 0.2046, 0.2055, 0.206, 0.2063, 0.2065, 0.2067",\
                 "0.1991, 0.2007, 0.2041, 0.2069, 0.2085, 0.2093, 0.21, 0.2103, 0.2105, 0.2106",\
                 "0.2068, 0.2083, 0.2115, 0.2143, 0.216, 0.217, 0.2175, 0.2179, 0.2181, 0.2183",\
                 "0.2185, 0.2197, 0.2227, 0.2255, 0.2272, 0.2283, 0.2289, 0.2293, 0.2295, 0.2297",\
                 "0.2343, 0.2354, 0.2382, 0.2409, 0.2426, 0.2437, 0.2444, 0.2449, 0.2451, 0.2453",\
                 "0.2543, 0.2553, 0.2579, 0.2604, 0.2622, 0.2634, 0.2641, 0.2645, 0.2649, 0.2651",\
                 "0.2793, 0.2801, 0.2823, 0.2848, 0.2866, 0.2878, 0.2885, 0.289, 0.2894, 0.2896");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.187, 0.1887, 0.1918, 0.1948, 0.1972, 0.1991, 0.2005, 0.2026, 0.2046, 0.2165",\
                 "0.1862, 0.1878, 0.191, 0.1941, 0.1965, 0.1983, 0.1995, 0.2018, 0.2037, 0.2176",\
                 "0.1856, 0.1873, 0.1906, 0.1934, 0.196, 0.1975, 0.1992, 0.2012, 0.2034, 0.2171",\
                 "0.1875, 0.189, 0.1923, 0.195, 0.1974, 0.1993, 0.2007, 0.2022, 0.2048, 0.2213",\
                 "0.1924, 0.1939, 0.1969, 0.1996, 0.2022, 0.2044, 0.2061, 0.2078, 0.2112, 0.2291",\
                 "0.2011, 0.2025, 0.2052, 0.2085, 0.2109, 0.2132, 0.2146, 0.2175, 0.2204, 0.2433",\
                 "0.2137, 0.215, 0.2175, 0.2204, 0.2233, 0.2256, 0.2277, 0.229, 0.2337, 0.2653",\
                 "0.2309, 0.2321, 0.2346, 0.2369, 0.2395, 0.2429, 0.2451, 0.2472, 0.2519, 0.2964",\
                 "0.2529, 0.254, 0.2564, 0.2587, 0.2609, 0.2636, 0.2679, 0.2701, 0.2797, 0.3441",\
                 "0.28, 0.2812, 0.2834, 0.2856, 0.2882, 0.2896, 0.2922, 0.2981, 0.3169, 0.4242");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.664, 0.688, 0.761, 0.903, 1.135, 1.429, 1.749, 2.101, 2.493, \
                  2.923");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.585, 0.602, 0.672, 0.809, 0.983, 1.185, 1.426, 1.703, 2.019, \
                  2.373");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.4033, 0.4686, 0.6305, 0.8405, 1.087, 1.374, 1.712, 2.112, 2.585, 3.142",\
                 "0.421, 0.4865, 0.6481, 0.8586, 1.105, 1.392, 1.73, 2.129, 2.603, 3.16",\
                 "0.4858, 0.5512, 0.7125, 0.9229, 1.169, 1.456, 1.794, 2.193, 2.667, 3.224",\
                 "0.5945, 0.6605, 0.8215, 1.032, 1.278, 1.566, 1.903, 2.303, 2.776, 3.333",\
                 "0.6876, 0.7595, 0.9272, 1.139, 1.386, 1.673, 2.011, 2.41, 2.884, 3.44",\
                 "0.725, 0.7974, 0.9655, 1.177, 1.424, 1.711, 2.048, 2.448, 2.921, 3.478",\
                 "0.7188, 0.7916, 0.96, 1.172, 1.419, 1.706, 2.043, 2.442, 2.915, 3.472",\
                 "0.6743, 0.7478, 0.917, 1.13, 1.377, 1.665, 2.002, 2.401, 2.874, 3.431",\
                 "0.5909, 0.6656, 0.8366, 1.05, 1.298, 1.586, 1.923, 2.323, 2.796, 3.352",\
                 "0.4697, 0.5443, 0.7169, 0.9323, 1.181, 1.47, 1.808, 2.207, 2.68, 3.237");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.433, 0.4997, 0.6681, 0.9205, 1.281, 1.777, 2.428, 3.249, 4.251, 5.446",\
                 "0.4492, 0.5158, 0.6842, 0.9366, 1.297, 1.792, 2.445, 3.265, 4.268, 5.463",\
                 "0.5067, 0.5734, 0.7418, 0.9942, 1.354, 1.85, 2.502, 3.322, 4.325, 5.52",\
                 "0.6068, 0.6755, 0.8459, 1.099, 1.459, 1.955, 2.607, 3.426, 4.43, 5.625",\
                 "0.6986, 0.7783, 0.9637, 1.223, 1.585, 2.081, 2.732, 3.554, 4.553, 5.749",\
                 "0.7563, 0.8487, 1.055, 1.327, 1.694, 2.191, 2.842, 3.663, 4.662, 5.858",\
                 "0.7801, 0.8855, 1.116, 1.403, 1.776, 2.274, 2.925, 3.744, 4.745, 5.94",\
                 "0.7666, 0.8861, 1.144, 1.451, 1.831, 2.332, 2.983, 3.803, 4.803, 5.996",\
                 "0.7131, 0.8471, 1.134, 1.466, 1.858, 2.362, 3.013, 3.833, 4.834, 6.025",\
                 "0.6172, 0.7659, 1.085, 1.446, 1.853, 2.363, 3.017, 3.837, 4.838, 6.03");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.2144, 0.2773, 0.4318, 0.6407, 0.9105, 1.271, 1.75, 2.367, 3.144, 4.091",\
                 "0.2148, 0.2772, 0.4325, 0.6399, 0.9106, 1.272, 1.75, 2.369, 3.146, 4.089",\
                 "0.2136, 0.2765, 0.4326, 0.6394, 0.9114, 1.272, 1.749, 2.367, 3.145, 4.094",\
                 "0.2185, 0.2792, 0.432, 0.64, 0.9108, 1.271, 1.75, 2.366, 3.143, 4.093",\
                 "0.249, 0.3068, 0.4466, 0.6448, 0.914, 1.274, 1.751, 2.367, 3.142, 4.092",\
                 "0.2562, 0.3114, 0.4486, 0.6458, 0.9122, 1.27, 1.749, 2.367, 3.141, 4.092",\
                 "0.2584, 0.3134, 0.4508, 0.6474, 0.9152, 1.272, 1.747, 2.363, 3.142, 4.089",\
                 "0.262, 0.3164, 0.4524, 0.6498, 0.914, 1.275, 1.748, 2.366, 3.14, 4.082",\
                 "0.266, 0.3204, 0.456, 0.6522, 0.9198, 1.275, 1.75, 2.367, 3.14, 4.083",\
                 "0.271, 0.3256, 0.4612, 0.6552, 0.9224, 1.279, 1.753, 2.369, 3.144, 4.087");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.203, 0.2677, 0.4617, 0.8298, 1.438, 2.316, 3.479, 4.958, 6.748, 8.891",\
                 "0.2032, 0.2662, 0.4612, 0.8298, 1.438, 2.315, 3.485, 4.953, 6.756, 8.888",\
                 "0.2031, 0.2668, 0.4613, 0.8299, 1.438, 2.318, 3.484, 4.949, 6.757, 8.893",\
                 "0.2123, 0.273, 0.4644, 0.8308, 1.436, 2.314, 3.485, 4.957, 6.746, 8.892",\
                 "0.2536, 0.3122, 0.4908, 0.8434, 1.439, 2.313, 3.483, 4.949, 6.746, 8.893",\
                 "0.2968, 0.3592, 0.5332, 0.8678, 1.451, 2.321, 3.483, 4.948, 6.747, 8.892",\
                 "0.3416, 0.4092, 0.581, 0.8998, 1.469, 2.325, 3.488, 4.952, 6.745, 8.901",\
                 "0.3894, 0.4644, 0.6412, 0.9412, 1.486, 2.334, 3.487, 4.958, 6.759, 8.897",\
                 "0.4398, 0.5234, 0.704, 0.9954, 1.517, 2.345, 3.492, 4.959, 6.75, 8.903",\
                 "0.4916, 0.584, 0.7786, 1.062, 1.558, 2.367, 3.504, 4.962, 6.751, 8.888");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.7333, 0.8032, 0.9707, 1.183, 1.43, 1.717, 2.054, 2.454, 2.927, 3.484",\
                 "0.7496, 0.8196, 0.9871, 1.199, 1.446, 1.733, 2.071, 2.47, 2.944, 3.501",\
                 "0.8054, 0.8754, 1.043, 1.255, 1.502, 1.789, 2.126, 2.526, 2.999, 3.557",\
                 "0.8722, 0.9423, 1.11, 1.322, 1.569, 1.856, 2.194, 2.594, 3.067, 3.624",\
                 "0.9161, 0.9862, 1.154, 1.367, 1.614, 1.901, 2.239, 2.638, 3.112, 3.669",\
                 "0.9351, 1.005, 1.174, 1.387, 1.634, 1.922, 2.26, 2.66, 3.133, 3.69",\
                 "0.9261, 0.9967, 1.166, 1.379, 1.627, 1.915, 2.253, 2.653, 3.126, 3.684",\
                 "0.8849, 0.956, 1.126, 1.341, 1.589, 1.877, 2.216, 2.616, 3.089, 3.647",\
                 "0.8085, 0.8807, 1.051, 1.267, 1.517, 1.806, 2.144, 2.544, 3.018, 3.575",\
                 "0.6964, 0.7686, 0.9409, 1.159, 1.409, 1.698, 2.037, 2.437, 2.911, 3.468");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.8805, 0.9487, 1.12, 1.374, 1.737, 2.234, 2.887, 3.709, 4.711, 5.907",\
                 "0.8969, 0.965, 1.136, 1.391, 1.753, 2.251, 2.903, 3.725, 4.725, 5.923",\
                 "0.9669, 1.035, 1.206, 1.461, 1.823, 2.321, 2.973, 3.795, 4.797, 5.988",\
                 "1.107, 1.175, 1.346, 1.601, 1.963, 2.461, 3.113, 3.935, 4.935, 6.128",\
                 "1.29, 1.358, 1.529, 1.784, 2.147, 2.644, 3.297, 4.117, 5.122, 6.316",\
                 "1.501, 1.569, 1.741, 1.997, 2.359, 2.857, 3.511, 4.332, 5.335, 6.53",\
                 "1.747, 1.816, 1.988, 2.244, 2.607, 3.104, 3.757, 4.579, 5.579, 6.779",\
                 "2.03, 2.1, 2.273, 2.528, 2.892, 3.39, 4.043, 4.863, 5.864, 7.06",\
                 "2.352, 2.422, 2.596, 2.853, 3.217, 3.715, 4.367, 5.188, 6.189, 7.382",\
                 "2.715, 2.786, 2.96, 3.217, 3.582, 4.08, 4.733, 5.553, 6.555, 7.748");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.2165, 0.2778, 0.4293, 0.6366, 0.908, 1.269, 1.749, 2.367, 3.147, 4.091",\
                 "0.2166, 0.2779, 0.4293, 0.636, 0.9072, 1.27, 1.748, 2.365, 3.142, 4.093",\
                 "0.217, 0.2778, 0.4292, 0.6368, 0.9072, 1.27, 1.749, 2.368, 3.147, 4.092",\
                 "0.2176, 0.2788, 0.4304, 0.6362, 0.9074, 1.27, 1.748, 2.366, 3.145, 4.087",\
                 "0.2188, 0.2798, 0.4308, 0.637, 0.9084, 1.27, 1.749, 2.366, 3.144, 4.087",\
                 "0.2204, 0.2814, 0.4336, 0.6374, 0.9078, 1.269, 1.747, 2.365, 3.147, 4.093",\
                 "0.2228, 0.2844, 0.4352, 0.6394, 0.909, 1.27, 1.747, 2.365, 3.148, 4.088",\
                 "0.2262, 0.2876, 0.4382, 0.6424, 0.912, 1.272, 1.748, 2.366, 3.141, 4.086",\
                 "0.23, 0.2918, 0.4428, 0.6458, 0.9136, 1.272, 1.752, 2.367, 3.142, 4.086",\
                 "0.2348, 0.2966, 0.4466, 0.6492, 0.9166, 1.277, 1.753, 2.37, 3.144, 4.092");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.01719, 0.0296, 0.07315, 0.1563, 0.2859, 0.4677, 0.7069, 1.008, 1.376, 1.815");
          values("0.1941, 0.257, 0.4544, 0.8266, 1.437, 2.314, 3.478, 4.958, 6.748, 8.894",\
                 "0.1941, 0.2576, 0.4552, 0.8258, 1.435, 2.314, 3.48, 4.958, 6.748, 8.894",\
                 "0.194, 0.2582, 0.4554, 0.8262, 1.438, 2.314, 3.48, 4.957, 6.749, 8.885",\
                 "0.1946, 0.2584, 0.4556, 0.8264, 1.434, 2.317, 3.485, 4.949, 6.745, 8.888",\
                 "0.1964, 0.2598, 0.4554, 0.8266, 1.435, 2.318, 3.484, 4.953, 6.757, 8.893",\
                 "0.1974, 0.2604, 0.4564, 0.827, 1.436, 2.314, 3.478, 4.958, 6.748, 8.893",\
                 "0.1984, 0.262, 0.4582, 0.8286, 1.436, 2.315, 3.485, 4.948, 6.744, 8.9",\
                 "0.2012, 0.264, 0.4598, 0.8306, 1.437, 2.314, 3.48, 4.954, 6.748, 8.89",\
                 "0.2044, 0.2668, 0.4614, 0.8314, 1.438, 2.314, 3.48, 4.948, 6.753, 8.879",\
                 "0.2064, 0.2702, 0.4652, 0.8328, 1.439, 2.316, 3.482, 4.948, 6.744, 8.886");
        }
      }
    }
  }

