/*
 * 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 : "6.66732e-05" ;
    }

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.09674, 0.0952, 0.09766, 0.1072, 0.1238, 0.1486, 0.184, 0.233, \
                 0.2965, 0.3749");
        }

        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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.1414, 0.1394, 0.1421, 0.1553, 0.1821, 0.2245, 0.284, 0.3617, \
                 0.4586, 0.5759");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.01569, 0.01572, 0.01571, 0.0157, 0.01568, 0.01572, 0.0157, 0.01571, \
                 0.01571, 0.0157");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.01565, -0.01561, -0.01564, -0.01563, -0.01562, -0.01565, -0.01565, \
                 -0.01565, -0.01567, -0.01567");
        }
      }
    }

    pin(Z) {
      capacitance : 0.00358 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.6973 ;
      max_transition : 8.6 ;
      min_capacitance : 0.00458 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.1233, 0.1232, 0.1231, 0.123, 0.1231, 0.1231, 0.1232, 0.1232, 0.1232, 0.1232",\
                 "0.1238, 0.1237, 0.1236, 0.1235, 0.1235, 0.1235, 0.1236, 0.1236, 0.1236, 0.1236",\
                 "0.1292, 0.1291, 0.1291, 0.129, 0.1291, 0.1291, 0.1291, 0.1291, 0.1291, 0.1292",\
                 "0.1415, 0.1415, 0.1415, 0.1414, 0.1415, 0.1415, 0.1415, 0.1415, 0.1415, 0.1415",\
                 "0.1624, 0.1624, 0.1624, 0.1624, 0.1624, 0.1624, 0.1624, 0.1624, 0.1624, 0.1624",\
                 "0.1929, 0.1929, 0.1929, 0.1929, 0.1929, 0.1929, 0.1929, 0.1929, 0.1929, 0.1929",\
                 "0.2334, 0.2335, 0.2334, 0.2333, 0.2333, 0.2333, 0.2334, 0.2333, 0.2333, 0.2333",\
                 "0.2845, 0.2845, 0.2845, 0.2844, 0.2844, 0.2844, 0.2844, 0.2844, 0.2845, 0.2845",\
                 "0.3468, 0.3468, 0.3467, 0.3466, 0.3466, 0.3467, 0.3467, 0.3467, 0.3467, 0.3467",\
                 "0.4206, 0.4206, 0.4206, 0.4205, 0.4205, 0.4205, 0.4205, 0.4205, 0.4205, 0.4205");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.08069, 0.08076, 0.0808, 0.08088, 0.08134, 0.082, 0.08306, 0.08469, 0.0864, 0.09274",\
                 "0.07986, 0.07987, 0.0798, 0.07992, 0.08051, 0.08118, 0.0827, 0.08403, 0.08541, 0.09122",\
                 "0.08206, 0.08203, 0.08216, 0.08223, 0.08272, 0.08332, 0.08435, 0.08601, 0.08739, 0.09411",\
                 "0.09323, 0.09312, 0.09362, 0.09352, 0.09388, 0.09497, 0.09586, 0.0969, 0.09894, 0.1064",\
                 "0.117, 0.117, 0.1167, 0.1176, 0.1179, 0.1183, 0.1193, 0.1203, 0.1227, 0.1303",\
                 "0.1548, 0.1549, 0.1547, 0.1547, 0.156, 0.1569, 0.1576, 0.1583, 0.1603, 0.1693",\
                 "0.2077, 0.2079, 0.208, 0.2078, 0.208, 0.2101, 0.2113, 0.212, 0.2132, 0.2245",\
                 "0.2768, 0.2769, 0.277, 0.277, 0.2766, 0.2775, 0.2807, 0.2829, 0.2838, 0.2978",\
                 "0.3627, 0.3629, 0.363, 0.3632, 0.3631, 0.3629, 0.3642, 0.3684, 0.3713, 0.393",\
                 "0.4663, 0.4665, 0.4668, 0.4666, 0.4669, 0.4663, 0.4674, 0.4694, 0.477, 0.5092");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.2024, 0.201, 0.2, 0.2001, 0.2004, 0.2005, 0.2006, 0.2007, 0.2007, 0.2008",\
                 "0.2013, 0.2, 0.199, 0.199, 0.1994, 0.1995, 0.1996, 0.1997, 0.1997, 0.1997",\
                 "0.2015, 0.2, 0.1991, 0.199, 0.1993, 0.1996, 0.1997, 0.1997, 0.1998, 0.1999",\
                 "0.2107, 0.2085, 0.2061, 0.2051, 0.2051, 0.2052, 0.2054, 0.2054, 0.2055, 0.2056",\
                 "0.2319, 0.2283, 0.2235, 0.2207, 0.2198, 0.2194, 0.2192, 0.2191, 0.2191, 0.219",\
                 "0.2622, 0.2574, 0.2503, 0.2459, 0.2437, 0.2425, 0.242, 0.2418, 0.2415, 0.2414",\
                 "0.303, 0.2971, 0.2879, 0.2816, 0.2779, 0.276, 0.275, 0.2743, 0.2739, 0.2736",\
                 "0.3554, 0.3483, 0.337, 0.3286, 0.3235, 0.3205, 0.3187, 0.3177, 0.3171, 0.3167",\
                 "0.4201, 0.4122, 0.3983, 0.3877, 0.3809, 0.3768, 0.3743, 0.3727, 0.3717, 0.371",\
                 "0.4978, 0.4892, 0.473, 0.4602, 0.4512, 0.4457, 0.4424, 0.4402, 0.4387, 0.4377");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.0876, 0.08867, 0.09148, 0.09416, 0.0959, 0.09762, 0.09927, 0.1008, 0.1025, 0.1088",\
                 "0.08696, 0.08811, 0.09079, 0.09346, 0.09534, 0.09706, 0.09868, 0.1005, 0.1018, 0.1091",\
                 "0.0868, 0.08765, 0.08993, 0.09231, 0.09428, 0.09636, 0.09782, 0.09915, 0.1009, 0.1094",\
                 "0.09167, 0.09196, 0.09283, 0.09462, 0.09666, 0.09877, 0.1008, 0.1021, 0.1045, 0.1127",\
                 "0.105, 0.1041, 0.103, 0.1045, 0.1055, 0.1074, 0.1092, 0.1117, 0.1137, 0.1217",\
                 "0.1275, 0.1255, 0.1231, 0.1218, 0.1241, 0.1253, 0.1262, 0.1279, 0.1303, 0.1412",\
                 "0.1605, 0.1574, 0.1533, 0.1505, 0.1506, 0.153, 0.1535, 0.1536, 0.156, 0.1689",\
                 "0.2048, 0.2004, 0.1944, 0.1907, 0.1877, 0.1883, 0.1912, 0.1931, 0.1933, 0.211",\
                 "0.2601, 0.2546, 0.2468, 0.2408, 0.2369, 0.2362, 0.2369, 0.2403, 0.2426, 0.2667",\
                 "0.3274, 0.3206, 0.3109, 0.3037, 0.2987, 0.2956, 0.2943, 0.2961, 0.3035, 0.3404");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.217, 0.235, 0.302, 0.428, 0.581, 0.77, 0.992, 1.249, 1.541, \
                 1.868");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.28, 0.294, 0.363, 0.481, 0.633, 0.821, 1.045, 1.308, 1.608, \
                 1.95");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.2018, 0.2544, 0.3812, 0.549, 0.7618, 1.033, 1.379, 1.809, 2.334, 2.959",\
                 "0.2175, 0.27, 0.3967, 0.5647, 0.7775, 1.049, 1.394, 1.825, 2.349, 2.974",\
                 "0.2747, 0.3258, 0.4497, 0.6164, 0.8284, 1.1, 1.445, 1.875, 2.4, 3.025",\
                 "0.3392, 0.3932, 0.515, 0.6784, 0.8891, 1.16, 1.505, 1.935, 2.46, 3.085",\
                 "0.3567, 0.4094, 0.5292, 0.6915, 0.9011, 1.171, 1.515, 1.946, 2.47, 3.096",\
                 "0.3345, 0.3864, 0.5047, 0.6653, 0.8741, 1.144, 1.487, 1.917, 2.441, 3.067",\
                 "0.2773, 0.3297, 0.4463, 0.6057, 0.8128, 1.081, 1.425, 1.854, 2.378, 3.002",\
                 "0.1842, 0.2367, 0.3538, 0.5125, 0.7189, 0.9868, 1.33, 1.76, 2.283, 2.908",\
                 "0.0517, 0.1052, 0.2231, 0.3815, 0.5875, 0.8552, 1.198, 1.628, 2.152, 2.776",\
                 "-0.1226, -0.0679, 0.0514, 0.2103, 0.416, 0.6836, 1.027, 1.456, 1.98, 2.605");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.1838, 0.2334, 0.3675, 0.5954, 0.9445, 1.434, 2.079, 2.891, 3.883, 5.067",\
                 "0.1971, 0.2466, 0.3808, 0.6086, 0.9579, 1.447, 2.091, 2.905, 3.897, 5.079",\
                 "0.2399, 0.2904, 0.4252, 0.653, 1.002, 1.492, 2.137, 2.949, 3.94, 5.118",\
                 "0.2743, 0.3298, 0.4694, 0.6994, 1.049, 1.539, 2.182, 2.996, 3.988, 5.171",\
                 "0.2831, 0.348, 0.4953, 0.727, 1.078, 1.568, 2.211, 3.025, 4.016, 5.197",\
                 "0.2605, 0.3375, 0.4992, 0.7356, 1.087, 1.577, 2.221, 3.034, 4.024, 5.204",\
                 "0.2027, 0.2929, 0.4749, 0.7199, 1.075, 1.565, 2.21, 3.022, 4.012, 5.196",\
                 "0.1077, 0.2125, 0.4181, 0.6755, 1.037, 1.531, 2.176, 2.988, 3.979, 5.159",\
                 "-0.0269, 0.0936, 0.3262, 0.5985, 0.9677, 1.47, 2.12, 2.932, 3.923, 5.104",\
                 "-0.2041, -0.0679, 0.1953, 0.4871, 0.865, 1.376, 2.035, 2.852, 3.843, 5.025");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.1098, 0.164, 0.2909, 0.4745, 0.7533, 1.16, 1.711, 2.426, 3.304, 4.354",\
                 "0.1099, 0.1637, 0.291, 0.4751, 0.7539, 1.159, 1.712, 2.426, 3.303, 4.352",\
                 "0.1064, 0.1591, 0.2862, 0.4712, 0.7528, 1.158, 1.711, 2.427, 3.306, 4.357",\
                 "0.1209, 0.1652, 0.2789, 0.466, 0.7494, 1.158, 1.711, 2.426, 3.303, 4.352",\
                 "0.1198, 0.1618, 0.2766, 0.4636, 0.7448, 1.153, 1.71, 2.425, 3.306, 4.357",\
                 "0.1182, 0.1594, 0.2734, 0.4602, 0.7438, 1.151, 1.705, 2.419, 3.301, 4.355",\
                 "0.1188, 0.1594, 0.2712, 0.4562, 0.739, 1.147, 1.704, 2.416, 3.294, 4.344",\
                 "0.1206, 0.1608, 0.2704, 0.4552, 0.7376, 1.147, 1.704, 2.418, 3.293, 4.342",\
                 "0.1246, 0.1636, 0.2708, 0.4548, 0.7368, 1.146, 1.705, 2.418, 3.295, 4.342",\
                 "0.1282, 0.1672, 0.273, 0.4546, 0.736, 1.145, 1.703, 2.42, 3.296, 4.342");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.1024, 0.1607, 0.3506, 0.731, 1.343, 2.21, 3.344, 4.776, 6.524, 8.613",\
                 "0.1021, 0.1608, 0.3508, 0.7315, 1.346, 2.206, 3.344, 4.778, 6.526, 8.603",\
                 "0.1051, 0.1623, 0.3514, 0.7316, 1.343, 2.21, 3.345, 4.776, 6.521, 8.622",\
                 "0.1216, 0.1748, 0.3589, 0.7341, 1.343, 2.207, 3.345, 4.775, 6.527, 8.609",\
                 "0.1462, 0.1962, 0.3678, 0.7392, 1.347, 2.207, 3.346, 4.775, 6.522, 8.605",\
                 "0.1756, 0.2282, 0.3882, 0.7458, 1.349, 2.21, 3.344, 4.771, 6.522, 8.611",\
                 "0.2086, 0.267, 0.4182, 0.7616, 1.356, 2.212, 3.345, 4.773, 6.518, 8.603",\
                 "0.2442, 0.3082, 0.4572, 0.785, 1.376, 2.222, 3.35, 4.775, 6.532, 8.603",\
                 "0.2814, 0.3538, 0.5058, 0.8132, 1.4, 2.249, 3.362, 4.779, 6.521, 8.619",\
                 "0.3228, 0.4036, 0.5618, 0.8482, 1.43, 2.282, 3.393, 4.8, 6.53, 8.603");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.3729, 0.4274, 0.5622, 0.7355, 0.9503, 1.223, 1.568, 1.999, 2.523, 3.149",\
                 "0.3887, 0.4432, 0.5781, 0.7514, 0.9662, 1.239, 1.584, 2.014, 2.539, 3.165",\
                 "0.453, 0.5074, 0.6421, 0.8154, 1.03, 1.303, 1.648, 2.079, 2.603, 3.229",\
                 "0.5814, 0.6358, 0.7709, 0.945, 1.16, 1.433, 1.778, 2.209, 2.734, 3.359",\
                 "0.7457, 0.8021, 0.9432, 1.124, 1.342, 1.616, 1.961, 2.392, 2.917, 3.542",\
                 "0.9404, 0.9994, 1.147, 1.336, 1.56, 1.837, 2.183, 2.614, 3.138, 3.763",\
                 "1.171, 1.234, 1.388, 1.587, 1.818, 2.098, 2.446, 2.877, 3.401, 4.026",\
                 "1.434, 1.502, 1.667, 1.88, 2.121, 2.405, 2.755, 3.188, 3.712, 4.337",\
                 "1.731, 1.804, 1.98, 2.211, 2.465, 2.762, 3.117, 3.55, 4.075, 4.7",\
                 "2.062, 2.14, 2.328, 2.576, 2.849, 3.16, 3.528, 3.967, 4.493, 5.118");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.3094, 0.3614, 0.4994, 0.7301, 1.081, 1.572, 2.217, 3.031, 4.023, 5.203",\
                 "0.323, 0.3752, 0.5129, 0.7437, 1.095, 1.586, 2.23, 3.044, 4.034, 5.219",\
                 "0.3713, 0.4231, 0.5604, 0.791, 1.142, 1.634, 2.279, 3.09, 4.081, 5.267",\
                 "0.4368, 0.4904, 0.6293, 0.8598, 1.211, 1.703, 2.347, 3.162, 4.152, 5.337",\
                 "0.4873, 0.5436, 0.6871, 0.9188, 1.27, 1.761, 2.406, 3.22, 4.213, 5.393",\
                 "0.5177, 0.5769, 0.727, 0.9606, 1.311, 1.802, 2.446, 3.258, 4.252, 5.435",\
                 "0.5212, 0.5841, 0.7427, 0.9817, 1.333, 1.822, 2.467, 3.278, 4.269, 5.453",\
                 "0.4945, 0.5614, 0.7294, 0.9768, 1.332, 1.822, 2.466, 3.277, 4.267, 5.448",\
                 "0.4346, 0.5058, 0.6836, 0.9407, 1.302, 1.799, 2.444, 3.255, 4.244, 5.425",\
                 "0.3408, 0.4165, 0.6035, 0.8711, 1.24, 1.744, 2.396, 3.21, 4.199, 5.38");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.1238, 0.1796, 0.3077, 0.4843, 0.7585, 1.162, 1.712, 2.427, 3.305, 4.355",\
                 "0.1236, 0.1796, 0.308, 0.4849, 0.7592, 1.162, 1.712, 2.427, 3.305, 4.357",\
                 "0.1237, 0.1796, 0.3079, 0.4841, 0.7584, 1.162, 1.712, 2.427, 3.305, 4.356",\
                 "0.1292, 0.1846, 0.3132, 0.4878, 0.7596, 1.162, 1.712, 2.427, 3.305, 4.357",\
                 "0.1474, 0.2024, 0.3362, 0.505, 0.7706, 1.167, 1.714, 2.427, 3.306, 4.356",\
                 "0.1652, 0.2212, 0.3598, 0.5298, 0.7878, 1.177, 1.72, 2.428, 3.305, 4.355",\
                 "0.1872, 0.2458, 0.387, 0.5576, 0.808, 1.192, 1.727, 2.431, 3.307, 4.354",\
                 "0.2122, 0.2742, 0.424, 0.5982, 0.8382, 1.208, 1.738, 2.436, 3.305, 4.355",\
                 "0.2392, 0.3056, 0.4654, 0.6536, 0.8888, 1.248, 1.761, 2.446, 3.312, 4.354",\
                 "0.2674, 0.3404, 0.509, 0.7136, 0.9514, 1.308, 1.809, 2.478, 3.325, 4.36");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.00458, 0.009362, 0.02615, 0.0582, 0.1081, 0.1782, 0.2704, 0.3865, 0.5283, 0.6973");
          values("0.1051, 0.1615, 0.3501, 0.7328, 1.343, 2.206, 3.343, 4.776, 6.526, 8.61",\
                 "0.1042, 0.1611, 0.3502, 0.7308, 1.343, 2.209, 3.346, 4.776, 6.527, 8.614",\
                 "0.1048, 0.1614, 0.3503, 0.7315, 1.345, 2.207, 3.344, 4.783, 6.537, 8.614",\
                 "0.1138, 0.17, 0.355, 0.7322, 1.343, 2.207, 3.345, 4.777, 6.524, 8.612",\
                 "0.1248, 0.1844, 0.3658, 0.7364, 1.347, 2.206, 3.347, 4.778, 6.526, 8.614",\
                 "0.1394, 0.2012, 0.3812, 0.7432, 1.346, 2.21, 3.346, 4.772, 6.523, 8.61",\
                 "0.157, 0.2206, 0.4032, 0.7556, 1.35, 2.209, 3.343, 4.78, 6.519, 8.601",\
                 "0.1772, 0.242, 0.4304, 0.7766, 1.364, 2.215, 3.343, 4.772, 6.516, 8.594",\
                 "0.199, 0.2654, 0.4596, 0.8036, 1.39, 2.235, 3.354, 4.775, 6.517, 8.606",\
                 "0.221, 0.2902, 0.4902, 0.834, 1.419, 2.267, 3.383, 4.786, 6.521, 8.599");
        }
      }
    }
  }

