/*
 * 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_16) {
    area : 127.321600 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02373, 0.02348, 0.02313, 0.02299, 0.02296, 0.02296, 0.02299, \
                  0.02306, 0.02283, 0.01755");
        }

        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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.07214, 0.07184, 0.07135, 0.07102, 0.07074, 0.07054, 0.07003, \
                  0.06604, 0.03976, 0.02117");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.0256, 0.02556, 0.02552, 0.02559, 0.02557, 0.02557, 0.02557, \
                  0.02557, 0.02407, 0.01801");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.02555, -0.02546, -0.02544, -0.02554, -0.02555, -0.02554, -0.02553, \
                  -0.02551, -0.02461, -0.02135");
        }
      }
    }

    pin(Z) {
      capacitance : 0.03609 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 2.984 ;
      max_transition : 25 ;
      min_capacitance : 0.03709 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("0.1412, 0.1413, 0.1413, 0.1413, 0.1412, 0.1412, 0.1411, 0.1411, 0.1409, 0.1402",\
                 "0.1413, 0.1414, 0.1414, 0.1414, 0.1413, 0.1412, 0.1412, 0.1411, 0.1409, 0.1402",\
                 "0.1417, 0.1417, 0.1417, 0.1417, 0.1417, 0.1416, 0.1415, 0.1415, 0.1412, 0.1403",\
                 "0.142, 0.142, 0.142, 0.1421, 0.142, 0.1419, 0.1418, 0.1417, 0.1414, 0.14",\
                 "0.1423, 0.1423, 0.1423, 0.1423, 0.1422, 0.1421, 0.142, 0.1418, 0.1411, 0.1387",\
                 "0.1425, 0.1425, 0.1425, 0.1425, 0.1424, 0.1422, 0.142, 0.1415, 0.1397, 0.1355",\
                 "0.1425, 0.1425, 0.1425, 0.1424, 0.1422, 0.142, 0.1414, 0.1398, 0.1357, 0.1295",\
                 "0.1412, 0.1412, 0.1412, 0.141, 0.1407, 0.1399, 0.1378, 0.133, 0.1259, 0.1195",\
                 "0.1349, 0.1348, 0.1346, 0.134, 0.1326, 0.1287, 0.1209, 0.1136, 0.1083, 0.1044",\
                 "0.1089, 0.1088, 0.1067, 0.09592, 0.08787, 0.08295, 0.07993, 0.07801, 0.07675, 0.07588");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("0.004799, 0.004902, 0.004902, 0.004951, 0.005706, 0.006537, 0.01461, 0.1203, 0.6141, 1.505",\
                 "0.004759, 0.004772, 0.004967, 0.005015, 0.005188, 0.005967, 0.01473, 0.1286, 0.628, 1.521",\
                 "0.004509, 0.004594, 0.004773, 0.004821, 0.005074, 0.005805, 0.01584, 0.1461, 0.6832, 1.577",\
                 "0.004263, 0.004351, 0.004416, 0.004448, 0.005236, 0.006206, 0.02152, 0.1895, 0.7942, 1.674",\
                 "0.00407, 0.004124, 0.004238, 0.004222, 0.004297, 0.005382, 0.03436, 0.2859, 0.9763, 1.795",\
                 "0.003931, 0.003995, 0.004141, 0.004497, 0.004621, 0.00831, 0.07703, 0.4784, 1.217, 1.888",\
                 "0.00386, 0.003962, 0.004189, 0.004643, 0.004872, 0.01978, 0.2107, 0.7831, 1.403, 1.865",\
                 "0.003892, 0.004011, 0.004092, 0.003875, 0.008392, 0.1067, 0.5309, 1.023, 1.374, 1.62",\
                 "0.003952, 0.004099, 0.004377, 0.006958, 0.1133, 0.4306, 0.6831, 0.8467, 0.9553, 1.03",\
                 "-0.0196, -0.02078, 0.004166, 0.03185, 0.04804, 0.05682, 0.06189, 0.06496, 0.06695, 0.06838");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("0.2346, 0.2363, 0.2394, 0.2415, 0.2425, 0.243, 0.2433, 0.2434, 0.2433, 0.2426",\
                 "0.2327, 0.2344, 0.2376, 0.2396, 0.2407, 0.2411, 0.2414, 0.2415, 0.2414, 0.2406",\
                 "0.2301, 0.2318, 0.2349, 0.2371, 0.2382, 0.2387, 0.239, 0.2391, 0.2389, 0.2379",\
                 "0.2277, 0.2291, 0.232, 0.2344, 0.2359, 0.2367, 0.2371, 0.2372, 0.237, 0.2355",\
                 "0.2253, 0.2265, 0.2293, 0.2318, 0.2336, 0.2347, 0.2354, 0.2355, 0.2349, 0.2324",\
                 "0.2234, 0.2246, 0.2272, 0.2298, 0.2318, 0.233, 0.2337, 0.2336, 0.2317, 0.2272",\
                 "0.2218, 0.2229, 0.2253, 0.2278, 0.2297, 0.2309, 0.2311, 0.2293, 0.2244, 0.218",\
                 "0.2173, 0.2184, 0.2205, 0.2227, 0.2241, 0.2241, 0.2206, 0.214, 0.2079, 0.2032",\
                 "0.194, 0.1949, 0.1967, 0.1963, 0.189, 0.183, 0.1793, 0.177, 0.1755, 0.1744",\
                 "0.09997, 0.1014, 0.1042, 0.1069, 0.1093, 0.1112, 0.1128, 0.1139, 0.1147, 0.1154");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("0.1116, 0.1134, 0.1163, 0.1181, 0.1192, 0.1208, 0.1311, 0.2495, 0.7637, 1.659",\
                 "0.1108, 0.1125, 0.1157, 0.1173, 0.1186, 0.1197, 0.1314, 0.2537, 0.7778, 1.674",\
                 "0.1077, 0.109, 0.1119, 0.1142, 0.1163, 0.1182, 0.1312, 0.2733, 0.8291, 1.721",\
                 "0.1047, 0.1058, 0.1083, 0.1109, 0.113, 0.1149, 0.1339, 0.3102, 0.9274, 1.801",\
                 "0.1023, 0.1034, 0.1057, 0.1081, 0.1101, 0.1128, 0.1428, 0.3856, 1.073, 1.898",\
                 "0.1009, 0.1019, 0.104, 0.1064, 0.1087, 0.1127, 0.1682, 0.5237, 1.262, 1.981",\
                 "0.09982, 0.1008, 0.1026, 0.105, 0.1075, 0.1156, 0.2419, 0.7503, 1.446, 2.003",\
                 "0.09941, 0.1002, 0.1018, 0.1038, 0.106, 0.142, 0.4307, 1.021, 1.533, 1.898",\
                 "0.0998, 0.1005, 0.102, 0.104, 0.115, 0.2924, 0.7451, 1.132, 1.396, 1.579",\
                 "0.1024, 0.1032, 0.1044, 0.1187, 0.3017, 0.5532, 0.7155, 0.8186, 0.8863, 0.9324");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("3.499, 3.594, 3.886, 4.43, 5.286, 6.494, 8.078, 9.974, 12.05, \
                  14.24");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("2.329, 2.397, 2.659, 3.198, 4.028, 5.028, 6.147, 7.37, 8.689, \
                  10.1");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("3.661, 3.928, 4.547, 5.305, 6.14, 7.057, 8.058, 9.167, 10.41, 11.81",\
                 "3.735, 4.002, 4.621, 5.379, 6.216, 7.128, 8.132, 9.242, 10.49, 11.89",\
                 "4.003, 4.268, 4.888, 5.646, 6.481, 7.397, 8.399, 9.507, 10.75, 12.15",\
                 "4.499, 4.763, 5.384, 6.141, 6.978, 7.892, 8.894, 10, 11.25, 12.65",\
                 "5.252, 5.516, 6.137, 6.893, 7.73, 8.646, 9.647, 10.76, 12, 13.4",\
                 "6.066, 6.332, 6.953, 7.71, 8.548, 9.461, 10.46, 11.57, 12.82, 14.22",\
                 "6.686, 6.952, 7.572, 8.329, 9.166, 10.08, 11.08, 12.19, 13.43, 14.84",\
                 "7.187, 7.454, 8.075, 8.833, 9.671, 10.58, 11.58, 12.7, 13.94, 15.34",\
                 "7.619, 7.885, 8.508, 9.268, 10.1, 11.02, 12.02, 13.13, 14.37, 15.77",\
                 "7.989, 8.257, 8.879, 9.638, 10.47, 11.39, 12.39, 13.5, 14.74, 16.14");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("2.462, 2.664, 3.196, 3.987, 5.085, 6.57, 8.509, 10.95, 13.93, 17.49",\
                 "2.533, 2.734, 3.267, 4.058, 5.155, 6.64, 8.58, 11.02, 14, 17.55",\
                 "2.781, 2.983, 3.515, 4.307, 5.404, 6.889, 8.829, 11.27, 14.25, 17.8",\
                 "3.252, 3.454, 3.986, 4.777, 5.874, 7.36, 9.299, 11.74, 14.72, 18.28",\
                 "3.982, 4.184, 4.717, 5.508, 6.605, 8.091, 10.03, 12.47, 15.45, 19",\
                 "4.952, 5.16, 5.704, 6.501, 7.599, 9.084, 11.02, 13.47, 16.44, 20",\
                 "5.998, 6.232, 6.815, 7.637, 8.744, 10.23, 12.17, 14.61, 17.59, 21.14",\
                 "7.061, 7.321, 7.955, 8.817, 9.945, 11.44, 13.37, 15.81, 18.79, 22.33",\
                 "8.128, 8.417, 9.109, 10.01, 11.17, 12.67, 14.61, 17.04, 20.02, 23.56",\
                 "9.185, 9.508, 10.26, 11.22, 12.4, 13.92, 15.86, 18.3, 21.27, 24.81");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("1.428, 1.579, 1.973, 2.537, 3.248, 4.136, 5.235, 6.591, 8.262, 10.31",\
                 "1.428, 1.579, 1.977, 2.538, 3.249, 4.139, 5.239, 6.596, 8.263, 10.31",\
                 "1.426, 1.579, 1.974, 2.537, 3.249, 4.135, 5.234, 6.593, 8.264, 10.31",\
                 "1.426, 1.58, 1.973, 2.537, 3.249, 4.14, 5.239, 6.592, 8.266, 10.31",\
                 "1.425, 1.579, 1.973, 2.537, 3.248, 4.137, 5.236, 6.594, 8.262, 10.31",\
                 "1.429, 1.581, 1.976, 2.538, 3.248, 4.134, 5.24, 6.594, 8.266, 10.31",\
                 "1.428, 1.58, 1.974, 2.536, 3.252, 4.132, 5.238, 6.598, 8.28, 10.32",\
                 "1.43, 1.58, 1.976, 2.538, 3.252, 4.128, 5.228, 6.584, 8.26, 10.31",\
                 "1.428, 1.582, 1.978, 2.542, 3.248, 4.14, 5.222, 6.578, 8.258, 10.29",\
                 "1.432, 1.582, 1.978, 2.538, 3.25, 4.142, 5.224, 6.588, 8.27, 10.29");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("0.7906, 0.9738, 1.533, 2.553, 4.212, 6.638, 9.889, 13.99, 19.07, 25.03",\
                 "0.7902, 0.9742, 1.531, 2.554, 4.208, 6.636, 9.893, 14.02, 19, 24.98",\
                 "0.791, 0.9744, 1.532, 2.552, 4.208, 6.632, 9.891, 14.02, 19, 24.98",\
                 "0.7908, 0.9742, 1.532, 2.552, 4.212, 6.638, 9.894, 13.99, 19, 25.03",\
                 "0.7924, 0.976, 1.534, 2.558, 4.208, 6.634, 9.89, 14.02, 19.01, 24.98",\
                 "0.8388, 1.012, 1.555, 2.564, 4.21, 6.64, 9.894, 13.99, 19.07, 25.01",\
                 "0.958, 1.132, 1.652, 2.618, 4.234, 6.64, 9.89, 14.02, 19.01, 25",\
                 "1.094, 1.272, 1.782, 2.724, 4.294, 6.66, 9.89, 14.01, 19.01, 25.01",\
                 "1.242, 1.426, 1.934, 2.85, 4.374, 6.71, 9.9, 13.99, 19.03, 25.05",\
                 "1.402, 1.598, 2.106, 2.984, 4.464, 6.756, 9.936, 14.02, 19.03, 25");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("4.343, 4.593, 5.187, 5.925, 6.749, 7.653, 8.65, 9.757, 11, 12.4",\
                 "4.402, 4.652, 5.245, 5.983, 6.808, 7.713, 8.708, 9.817, 11.06, 12.46",\
                 "4.656, 4.906, 5.501, 6.239, 7.064, 7.969, 8.963, 10.07, 11.31, 12.72",\
                 "5.144, 5.395, 5.992, 6.735, 7.561, 8.466, 9.461, 10.57, 11.81, 13.21",\
                 "5.875, 6.128, 6.73, 7.477, 8.304, 9.213, 10.21, 11.32, 12.56, 13.96",\
                 "6.824, 7.08, 7.686, 8.437, 9.268, 10.18, 11.17, 12.28, 13.52, 14.93",\
                 "7.923, 8.185, 8.801, 9.554, 10.39, 11.3, 12.3, 13.41, 14.65, 16.05",\
                 "9.125, 9.395, 10.02, 10.79, 11.64, 12.55, 13.56, 14.67, 15.92, 17.32",\
                 "10.45, 10.72, 11.36, 12.14, 12.99, 13.92, 14.94, 16.06, 17.31, 18.71",\
                 "11.89, 12.17, 12.82, 13.6, 14.47, 15.4, 16.42, 17.55, 18.81, 20.22");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("2.907, 3.106, 3.632, 4.419, 5.516, 7.002, 8.943, 11.38, 14.36, 17.91",\
                 "2.963, 3.161, 3.689, 4.476, 5.573, 7.059, 9, 11.44, 14.42, 17.96",\
                 "3.151, 3.35, 3.879, 4.67, 5.769, 7.257, 9.198, 11.64, 14.62, 18.16",\
                 "3.461, 3.659, 4.189, 4.983, 6.084, 7.574, 9.517, 11.96, 14.94, 18.49",\
                 "3.834, 4.034, 4.566, 5.36, 6.462, 7.953, 9.896, 12.34, 15.32, 18.87",\
                 "4.237, 4.441, 4.98, 5.78, 6.883, 8.375, 10.32, 12.76, 15.74, 19.29",\
                 "4.648, 4.856, 5.402, 6.209, 7.321, 8.816, 10.76, 13.21, 16.18, 19.73",\
                 "5.061, 5.272, 5.825, 6.639, 7.754, 9.253, 11.2, 13.65, 16.63, 20.18",\
                 "5.464, 5.679, 6.241, 7.063, 8.18, 9.68, 11.63, 14.08, 17.06, 20.61",\
                 "5.852, 6.073, 6.643, 7.474, 8.597, 10.1, 12.05, 14.5, 17.48, 21.03");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("1.301, 1.465, 1.888, 2.473, 3.204, 4.108, 5.219, 6.572, 8.264, 10.3",\
                 "1.3, 1.463, 1.889, 2.474, 3.203, 4.106, 5.211, 6.573, 8.255, 10.31",\
                 "1.302, 1.466, 1.889, 2.474, 3.203, 4.108, 5.206, 6.574, 8.25, 10.3",\
                 "1.309, 1.476, 1.894, 2.477, 3.204, 4.107, 5.216, 6.57, 8.264, 10.3",\
                 "1.321, 1.485, 1.903, 2.482, 3.209, 4.106, 5.214, 6.584, 8.26, 10.3",\
                 "1.338, 1.5, 1.912, 2.49, 3.212, 4.108, 5.208, 6.584, 8.266, 10.3",\
                 "1.374, 1.532, 1.936, 2.506, 3.226, 4.118, 5.226, 6.59, 8.268, 10.3",\
                 "1.418, 1.578, 1.984, 2.552, 3.26, 4.14, 5.24, 6.6, 8.264, 10.31",\
                 "1.454, 1.606, 2.016, 2.586, 3.306, 4.19, 5.29, 6.638, 8.298, 10.34",\
                 "1.49, 1.644, 2.048, 2.616, 3.34, 4.236, 5.326, 6.684, 8.358, 10.38");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.03709, 0.05742, 0.1288, 0.2651, 0.4775, 0.7755, 1.168, 1.662, 2.265, 2.984");
          values("0.7222, 0.9118, 1.49, 2.534, 4.2, 6.638, 9.895, 14.02, 19, 24.98",\
                 "0.7216, 0.9126, 1.49, 2.527, 4.201, 6.637, 9.896, 14.02, 19, 24.98",\
                 "0.7294, 0.9198, 1.495, 2.529, 4.204, 6.639, 9.895, 14.02, 19.01, 24.98",\
                 "0.7362, 0.9264, 1.498, 2.538, 4.2, 6.634, 9.896, 13.99, 19, 24.98",\
                 "0.744, 0.9338, 1.505, 2.541, 4.203, 6.637, 9.895, 13.99, 19.03, 25.01",\
                 "0.7636, 0.9544, 1.522, 2.544, 4.208, 6.636, 9.882, 13.99, 19.01, 25.03",\
                 "0.782, 0.972, 1.546, 2.576, 4.232, 6.646, 9.896, 14.01, 19, 25.01",\
                 "0.8, 0.994, 1.566, 2.59, 4.246, 6.66, 9.904, 14, 19.02, 25.02",\
                 "0.824, 1.016, 1.59, 2.612, 4.256, 6.678, 9.916, 14.01, 19.03, 25.02",\
                 "0.848, 1.044, 1.62, 2.638, 4.278, 6.682, 9.92, 14.02, 19.04, 25");
        }
      }
    }
  }

