/*
 * 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_8) {
    area : 74.636800 ;

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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.007516 ;
      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.02307, 0.02281, 0.02248, 0.02235, 0.0223, 0.02227, 0.02229, \
                  0.02234, 0.02208, 0.01875");
        }

        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.05086, 0.05055, 0.05001, 0.04959, 0.04929, 0.04904, 0.04882, \
                  0.04861, 0.04454, 0.02347");
        }

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

    pin(I) {
      capacitance : 0.01595 ;
      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.01305, 0.01305, 0.01301, 0.01304, 0.01306, 0.01305, 0.01305, \
                  0.01305, 0.01229, 0.00919");
        }

        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.013, -0.01301, -0.013, -0.01304, -0.01302, -0.01302, -0.01302, \
                  -0.01302, -0.01259, -0.01092");
        }
      }
    }

    pin(Z) {
      capacitance : 0.01713 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 1.496 ;
      max_transition : 25 ;
      min_capacitance : 0.01813 ;
      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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.07863, 0.07864, 0.07864, 0.07859, 0.07856, 0.07856, 0.07856, 0.07857, 0.07856, 0.07848",\
                 "0.07874, 0.07875, 0.07875, 0.07871, 0.07868, 0.07867, 0.07867, 0.07868, 0.07867, 0.07859",\
                 "0.07919, 0.07919, 0.07921, 0.07917, 0.07914, 0.07913, 0.07914, 0.07914, 0.07913, 0.07902",\
                 "0.07954, 0.07955, 0.07956, 0.07951, 0.07949, 0.07947, 0.07946, 0.07947, 0.07945, 0.07927",\
                 "0.07981, 0.0798, 0.07983, 0.07979, 0.07976, 0.07975, 0.07976, 0.07974, 0.07969, 0.07934",\
                 "0.08015, 0.08018, 0.0802, 0.08015, 0.08012, 0.08012, 0.08011, 0.08011, 0.07994, 0.07916",\
                 "0.08052, 0.08054, 0.08054, 0.08053, 0.08051, 0.0805, 0.08047, 0.08037, 0.07982, 0.07806",\
                 "0.08094, 0.08096, 0.08095, 0.08093, 0.0809, 0.08088, 0.08077, 0.0802, 0.07831, 0.075",\
                 "0.08147, 0.0815, 0.08147, 0.08143, 0.08131, 0.08101, 0.07992, 0.077, 0.07306, 0.06977",\
                 "0.07928, 0.07928, 0.07907, 0.07855, 0.07694, 0.07271, 0.06834, 0.06529, 0.06317, 0.06167");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.03424, 0.03433, 0.0343, 0.03439, 0.03465, 0.03517, 0.03826, 0.08044, 0.2956, 0.7354",\
                 "0.03415, 0.03422, 0.03419, 0.03441, 0.03468, 0.03512, 0.03822, 0.08081, 0.3012, 0.7437",\
                 "0.03397, 0.03398, 0.03409, 0.0341, 0.03455, 0.03529, 0.03878, 0.08779, 0.3251, 0.7737",\
                 "0.03363, 0.03369, 0.03368, 0.03381, 0.03408, 0.03502, 0.0404, 0.1047, 0.3772, 0.8272",\
                 "0.03344, 0.03346, 0.03349, 0.03361, 0.03389, 0.03489, 0.04465, 0.1437, 0.4656, 0.8986",\
                 "0.0333, 0.03331, 0.03341, 0.03363, 0.03381, 0.03521, 0.05701, 0.218, 0.5842, 0.9629",\
                 "0.03321, 0.03328, 0.03334, 0.03321, 0.03386, 0.03707, 0.09589, 0.3474, 0.7009, 0.984",\
                 "0.03324, 0.03329, 0.03346, 0.0334, 0.03359, 0.05366, 0.2093, 0.5034, 0.7479, 0.9209",\
                 "0.03346, 0.03351, 0.03368, 0.03382, 0.0442, 0.1619, 0.3768, 0.5369, 0.6445, 0.7187",\
                 "0.03361, 0.0337, 0.03409, 0.06836, 0.1614, 0.2232, 0.2605, 0.2838, 0.2989, 0.3092");
        }
      }

      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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.1287, 0.1296, 0.1313, 0.1324, 0.133, 0.1334, 0.1336, 0.1337, 0.1338, 0.1337",\
                 "0.1279, 0.1288, 0.1305, 0.1316, 0.1322, 0.1325, 0.1327, 0.1329, 0.1329, 0.1329",\
                 "0.1267, 0.1275, 0.1292, 0.1304, 0.131, 0.1314, 0.1316, 0.1317, 0.1318, 0.1317",\
                 "0.1256, 0.1263, 0.1279, 0.1291, 0.1298, 0.1303, 0.1306, 0.1308, 0.1308, 0.1306",\
                 "0.1244, 0.125, 0.1264, 0.1278, 0.1287, 0.1293, 0.1297, 0.13, 0.13, 0.1296",\
                 "0.1236, 0.1242, 0.1255, 0.1269, 0.1279, 0.1287, 0.1291, 0.1294, 0.1293, 0.1282",\
                 "0.1233, 0.1238, 0.125, 0.1263, 0.1274, 0.1282, 0.1287, 0.1288, 0.1278, 0.1251",\
                 "0.123, 0.1235, 0.1246, 0.1259, 0.1269, 0.1276, 0.1274, 0.1255, 0.122, 0.1188",\
                 "0.1182, 0.1186, 0.1195, 0.1202, 0.1197, 0.1165, 0.1128, 0.1103, 0.1086, 0.1074",\
                 "0.06044, 0.06098, 0.06215, 0.06342, 0.06459, 0.06557, 0.06634, 0.06693, 0.06736, 0.06769");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.06433, 0.06521, 0.06672, 0.06785, 0.06864, 0.06939, 0.07348, 0.1186, 0.345, 0.7898",\
                 "0.06387, 0.06483, 0.06638, 0.06753, 0.0683, 0.06891, 0.07276, 0.1194, 0.3503, 0.7978",\
                 "0.06255, 0.06328, 0.06465, 0.066, 0.06715, 0.06785, 0.07246, 0.1266, 0.3749, 0.8249",\
                 "0.06104, 0.06165, 0.06287, 0.0644, 0.06549, 0.06668, 0.07389, 0.1432, 0.4233, 0.8726",\
                 "0.05988, 0.0604, 0.06152, 0.06307, 0.06422, 0.06588, 0.07706, 0.1746, 0.4974, 0.9314",\
                 "0.0591, 0.05955, 0.06055, 0.06202, 0.0632, 0.06481, 0.0856, 0.2358, 0.5992, 0.9882",\
                 "0.05857, 0.05907, 0.05992, 0.06071, 0.0629, 0.06565, 0.1133, 0.3443, 0.7095, 1.016",\
                 "0.05836, 0.05872, 0.05956, 0.06043, 0.06162, 0.07422, 0.1946, 0.4913, 0.7766, 0.9825",\
                 "0.05865, 0.05903, 0.05976, 0.06089, 0.06462, 0.1327, 0.3582, 0.5805, 0.7339, 0.8401",\
                 "0.06014, 0.06051, 0.06134, 0.06501, 0.1371, 0.2874, 0.3912, 0.4571, 0.5004, 0.5298");
        }
      }

      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("1.86, 1.956, 2.24, 2.782, 3.637, 4.819, 6.196, 7.695, 9.312, 11.05");
        }

        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("1.798, 1.862, 2.128, 2.672, 3.486, 4.476, 5.553, 6.741, 8.021, \
                  9.394");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("2.455, 2.644, 3.091, 3.655, 4.305, 5.041, 5.888, 6.867, 8.009, 9.337",\
                 "2.53, 2.719, 3.167, 3.731, 4.381, 5.117, 5.963, 6.943, 8.085, 9.413",\
                 "2.798, 2.984, 3.433, 3.999, 4.648, 5.383, 6.23, 7.21, 8.351, 9.678",\
                 "3.29, 3.476, 3.924, 4.49, 5.138, 5.875, 6.722, 7.701, 8.843, 10.17",\
                 "3.954, 4.143, 4.59, 5.155, 5.805, 6.541, 7.387, 8.367, 9.508, 10.84",\
                 "4.529, 4.716, 5.164, 5.728, 6.375, 7.113, 7.957, 8.938, 10.08, 11.41",\
                 "5.02, 5.209, 5.656, 6.222, 6.869, 7.605, 8.45, 9.429, 10.57, 11.9",\
                 "5.457, 5.646, 6.094, 6.66, 7.308, 8.044, 8.889, 9.867, 11.01, 12.33",\
                 "5.849, 6.038, 6.486, 7.052, 7.698, 8.436, 9.281, 10.26, 11.4, 12.73",\
                 "6.193, 6.381, 6.829, 7.396, 8.045, 8.782, 9.627, 10.61, 11.75, 13.07");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("1.625, 1.786, 2.231, 2.95, 4.013, 5.489, 7.431, 9.878, 12.85, 16.41",\
                 "1.695, 1.855, 2.3, 3.019, 4.082, 5.559, 7.499, 9.947, 12.93, 16.5",\
                 "1.94, 2.1, 2.546, 3.265, 4.328, 5.805, 7.746, 10.19, 13.17, 16.73",\
                 "2.408, 2.568, 3.014, 3.733, 4.796, 6.273, 8.214, 10.65, 13.64, 17.19",\
                 "3.105, 3.269, 3.718, 4.439, 5.502, 6.979, 8.92, 11.37, 14.36, 17.89",\
                 "3.89, 4.07, 4.543, 5.276, 6.34, 7.817, 9.757, 12.2, 15.19, 18.74",\
                 "4.692, 4.892, 5.398, 6.151, 7.222, 8.699, 10.64, 13.08, 16.06, 19.63",\
                 "5.497, 5.719, 6.265, 7.042, 8.122, 9.6, 11.54, 13.98, 16.96, 20.52",\
                 "6.291, 6.538, 7.131, 7.939, 9.03, 10.51, 12.45, 14.89, 17.87, 21.43",\
                 "7.067, 7.341, 7.986, 8.831, 9.935, 11.42, 13.36, 15.8, 18.78, 22.33");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.9088, 1.032, 1.356, 1.834, 2.474, 3.312, 4.398, 5.787, 7.536, 9.692",\
                 "0.9104, 1.032, 1.357, 1.834, 2.474, 3.312, 4.399, 5.785, 7.537, 9.691",\
                 "0.9094, 1.032, 1.356, 1.835, 2.471, 3.313, 4.392, 5.789, 7.543, 9.689",\
                 "0.9088, 1.033, 1.356, 1.833, 2.473, 3.313, 4.398, 5.789, 7.536, 9.69",\
                 "0.9084, 1.032, 1.356, 1.834, 2.473, 3.307, 4.394, 5.785, 7.543, 9.682",\
                 "0.9046, 1.028, 1.353, 1.833, 2.47, 3.306, 4.396, 5.792, 7.542, 9.684",\
                 "0.908, 1.028, 1.354, 1.83, 2.466, 3.3, 4.386, 5.78, 7.538, 9.686",\
                 "0.908, 1.03, 1.354, 1.834, 2.47, 3.306, 4.384, 5.77, 7.524, 9.672",\
                 "0.908, 1.03, 1.358, 1.836, 2.472, 3.308, 4.388, 5.78, 7.522, 9.664",\
                 "0.91, 1.032, 1.358, 1.834, 2.472, 3.312, 4.388, 5.778, 7.534, 9.672");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.5884, 0.7538, 1.3, 2.353, 4.085, 6.568, 9.823, 14, 19.01, 24.99",\
                 "0.5878, 0.7544, 1.299, 2.356, 4.088, 6.56, 9.85, 13.95, 18.98, 25",\
                 "0.588, 0.7546, 1.3, 2.357, 4.087, 6.569, 9.851, 13.95, 19.01, 24.97",\
                 "0.5882, 0.7546, 1.3, 2.356, 4.084, 6.569, 9.835, 13.95, 19, 24.97",\
                 "0.6084, 0.7702, 1.306, 2.357, 4.085, 6.569, 9.825, 14, 18.99, 24.99",\
                 "0.6878, 0.8462, 1.359, 2.38, 4.087, 6.568, 9.832, 13.95, 18.98, 24.97",\
                 "0.782, 0.938, 1.438, 2.432, 4.112, 6.562, 9.834, 13.95, 18.99, 25",\
                 "0.89, 1.046, 1.528, 2.492, 4.144, 6.58, 9.842, 13.97, 18.99, 24.99",\
                 "1.01, 1.174, 1.64, 2.566, 4.18, 6.598, 9.848, 13.96, 19, 25",\
                 "1.136, 1.308, 1.77, 2.654, 4.22, 6.626, 9.864, 13.97, 18.98, 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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("3.171, 3.353, 3.79, 4.345, 4.987, 5.719, 6.563, 7.542, 8.682, 10.01",\
                 "3.239, 3.422, 3.858, 4.414, 5.056, 5.788, 6.632, 7.611, 8.751, 10.08",\
                 "3.51, 3.692, 4.129, 4.684, 5.327, 6.059, 6.903, 7.881, 9.022, 10.35",\
                 "4.035, 4.217, 4.654, 5.212, 5.856, 6.588, 7.432, 8.41, 9.551, 10.88",\
                 "4.83, 5.014, 5.453, 6.014, 6.659, 7.393, 8.237, 9.215, 10.36, 11.68",\
                 "5.859, 6.045, 6.489, 7.051, 7.698, 8.433, 9.278, 10.26, 11.4, 12.73",\
                 "7.026, 7.221, 7.676, 8.247, 8.9, 9.638, 10.49, 11.47, 12.61, 13.94",\
                 "8.308, 8.507, 8.973, 9.56, 10.22, 10.97, 11.83, 12.82, 13.96, 15.29",\
                 "9.706, 9.911, 10.39, 10.99, 11.66, 12.42, 13.29, 14.28, 15.43, 16.76",\
                 "11.22, 11.43, 11.92, 12.53, 13.21, 13.98, 14.86, 15.86, 17.01, 18.35");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("2.018, 2.179, 2.625, 3.347, 4.412, 5.89, 7.831, 10.28, 13.26, 16.82",\
                 "2.081, 2.241, 2.688, 3.41, 4.476, 5.954, 7.896, 10.34, 13.32, 16.88",\
                 "2.294, 2.454, 2.901, 3.625, 4.692, 6.172, 8.115, 10.56, 13.54, 17.1",\
                 "2.652, 2.812, 3.258, 3.984, 5.053, 6.533, 8.477, 10.92, 13.91, 17.46",\
                 "3.088, 3.249, 3.7, 4.427, 5.496, 6.979, 8.922, 11.37, 14.36, 17.9",\
                 "3.556, 3.724, 4.183, 4.917, 5.99, 7.473, 9.418, 11.86, 14.85, 18.41",\
                 "4.042, 4.215, 4.684, 5.424, 6.501, 7.988, 9.934, 12.38, 15.37, 18.92",\
                 "4.534, 4.712, 5.193, 5.941, 7.02, 8.508, 10.46, 12.91, 15.89, 19.45",\
                 "5.024, 5.21, 5.703, 6.46, 7.542, 9.03, 10.98, 13.43, 16.41, 19.97",\
                 "5.502, 5.696, 6.205, 6.973, 8.059, 9.547, 11.49, 13.94, 16.93, 20.49");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.8326, 0.9618, 1.301, 1.795, 2.446, 3.288, 4.375, 5.783, 7.536, 9.689",\
                 "0.832, 0.9616, 1.301, 1.795, 2.445, 3.295, 4.379, 5.783, 7.537, 9.686",\
                 "0.833, 0.9612, 1.302, 1.795, 2.446, 3.293, 4.383, 5.782, 7.535, 9.686",\
                 "0.8358, 0.9656, 1.305, 1.799, 2.446, 3.288, 4.38, 5.777, 7.537, 9.685",\
                 "0.8454, 0.974, 1.311, 1.802, 2.448, 3.289, 4.388, 5.78, 7.536, 9.676",\
                 "0.8628, 0.9882, 1.324, 1.806, 2.452, 3.298, 4.38, 5.784, 7.538, 9.686",\
                 "0.904, 1.03, 1.356, 1.832, 2.47, 3.308, 4.394, 5.784, 7.54, 9.688",\
                 "0.942, 1.068, 1.396, 1.878, 2.516, 3.348, 4.422, 5.81, 7.556, 9.686",\
                 "0.984, 1.106, 1.436, 1.918, 2.562, 3.396, 4.476, 5.856, 7.59, 9.72",\
                 "1.03, 1.152, 1.476, 1.962, 2.608, 3.444, 4.516, 5.894, 7.632, 9.754");
        }

        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.01813, 0.02834, 0.06415, 0.1325, 0.2391, 0.3886, 0.5853, 0.8332, 1.136, 1.496");
          values("0.5446, 0.715, 1.273, 2.347, 4.083, 6.558, 9.851, 14, 18.98, 24.97",\
                 "0.5456, 0.7166, 1.277, 2.345, 4.084, 6.569, 9.853, 13.95, 18.98, 24.98",\
                 "0.5492, 0.7206, 1.279, 2.345, 4.086, 6.565, 9.853, 13.95, 18.99, 24.97",\
                 "0.5542, 0.725, 1.282, 2.35, 4.084, 6.559, 9.852, 13.95, 18.97, 24.97",\
                 "0.5652, 0.7358, 1.286, 2.351, 4.082, 6.568, 9.854, 13.96, 18.99, 24.96",\
                 "0.5886, 0.7594, 1.311, 2.369, 4.09, 6.565, 9.832, 13.95, 18.98, 24.98",\
                 "0.6126, 0.7856, 1.334, 2.388, 4.104, 6.574, 9.842, 13.97, 19, 24.99",\
                 "0.64, 0.814, 1.366, 2.408, 4.116, 6.59, 9.844, 13.96, 18.98, 24.99",\
                 "0.674, 0.85, 1.398, 2.432, 4.128, 6.59, 9.854, 13.96, 18.99, 24.98",\
                 "0.716, 0.892, 1.438, 2.458, 4.144, 6.598, 9.866, 13.98, 19, 24.99");
        }
      }
    }
  }

