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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "4.827276e-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.006997 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 21 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.02169, 0.0215, 0.02127, 0.0212, 0.02117, 0.02111, 0.02104, 0.02097, \
                  0.02093, 0.01979");
        }

        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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.04903, 0.04876, 0.04833, 0.04798, 0.04774, 0.04751, 0.04723, \
                  0.04699, 0.04656, 0.02555");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.01199, 0.01199, 0.01197, 0.01195, 0.01199, 0.01199, 0.01199, \
                  0.01199, 0.01199, 0.01001");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("-0.01194, -0.01193, -0.01195, -0.01194, -0.01197, -0.01197, -0.01196, \
                  -0.01196, -0.01196, -0.01084");
        }
      }
    }

    pin(Z) {
      capacitance : 0.01607 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 1.284 ;
      max_transition : 21 ;
      min_capacitance : 0.01707 ;
      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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.07472, 0.07473, 0.07476, 0.07474, 0.07471, 0.07469, 0.0747, 0.07471, 0.07471, 0.07471",\
                 "0.07489, 0.07489, 0.07492, 0.0749, 0.07485, 0.07484, 0.07486, 0.07485, 0.07486, 0.07486",\
                 "0.07533, 0.07536, 0.07537, 0.07535, 0.07532, 0.0753, 0.07531, 0.07532, 0.07532, 0.07532",\
                 "0.07561, 0.07562, 0.07564, 0.07562, 0.0756, 0.07557, 0.07559, 0.07559, 0.07559, 0.0756",\
                 "0.07582, 0.07584, 0.07583, 0.07581, 0.07578, 0.07578, 0.07578, 0.07579, 0.07579, 0.07579",\
                 "0.07598, 0.07598, 0.07602, 0.07598, 0.07597, 0.07596, 0.07594, 0.07598, 0.07598, 0.07596",\
                 "0.0762, 0.07623, 0.07622, 0.07622, 0.07618, 0.07618, 0.07616, 0.07617, 0.07615, 0.07603",\
                 "0.07637, 0.07634, 0.07637, 0.07636, 0.07636, 0.07631, 0.07632, 0.07629, 0.07616, 0.0754",\
                 "0.0765, 0.07654, 0.07653, 0.0765, 0.07648, 0.07644, 0.07638, 0.07602, 0.07432, 0.07093",\
                 "0.07637, 0.07636, 0.07636, 0.07622, 0.07588, 0.0748, 0.07155, 0.0674, 0.06429, 0.06204");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.06358, 0.06355, 0.06362, 0.06361, 0.06376, 0.06418, 0.06429, 0.06732, 0.1182, 0.4118",\
                 "0.06353, 0.06349, 0.06359, 0.06349, 0.0636, 0.06411, 0.06409, 0.06722, 0.1211, 0.4207",\
                 "0.06333, 0.0633, 0.06328, 0.06349, 0.06368, 0.06374, 0.06442, 0.06789, 0.1311, 0.4539",\
                 "0.06316, 0.06314, 0.06317, 0.06333, 0.06348, 0.06356, 0.06393, 0.0695, 0.1564, 0.5177",\
                 "0.06292, 0.06292, 0.06289, 0.06296, 0.06337, 0.06338, 0.06382, 0.07565, 0.2111, 0.6188",\
                 "0.06279, 0.06278, 0.06292, 0.06298, 0.06329, 0.06316, 0.06405, 0.09256, 0.3186, 0.7409",\
                 "0.06263, 0.06267, 0.06263, 0.0627, 0.06314, 0.06308, 0.06734, 0.1528, 0.4845, 0.842",\
                 "0.06253, 0.06256, 0.06252, 0.06255, 0.06271, 0.06341, 0.09371, 0.3198, 0.6371, 0.8762",\
                 "0.06247, 0.06252, 0.06249, 0.06255, 0.06251, 0.08018, 0.2565, 0.4937, 0.6623, 0.7805",\
                 "0.06269, 0.06272, 0.06276, 0.06347, 0.1156, 0.2524, 0.3462, 0.4066, 0.4466, 0.474");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.1225, 0.1231, 0.1243, 0.1252, 0.1256, 0.1259, 0.1261, 0.1262, 0.1263, 0.1263",\
                 "0.1218, 0.1224, 0.1236, 0.1245, 0.125, 0.1253, 0.1254, 0.1255, 0.1256, 0.1256",\
                 "0.1209, 0.1214, 0.1227, 0.1236, 0.1242, 0.1244, 0.1246, 0.1247, 0.1247, 0.1247",\
                 "0.1201, 0.1206, 0.1217, 0.1227, 0.1233, 0.1236, 0.1238, 0.124, 0.124, 0.1241",\
                 "0.1192, 0.1197, 0.1207, 0.1216, 0.1223, 0.1228, 0.1231, 0.1233, 0.1235, 0.1235",\
                 "0.1185, 0.1189, 0.1198, 0.1208, 0.1216, 0.1221, 0.1225, 0.1228, 0.1229, 0.123",\
                 "0.118, 0.1184, 0.1192, 0.1201, 0.121, 0.1216, 0.122, 0.1223, 0.1225, 0.1222",\
                 "0.1176, 0.1179, 0.1187, 0.1196, 0.1204, 0.1211, 0.1215, 0.1217, 0.1208, 0.1181",\
                 "0.1164, 0.1168, 0.1175, 0.1182, 0.1187, 0.1184, 0.1159, 0.1121, 0.1093, 0.1072",\
                 "0.06432, 0.06508, 0.06637, 0.06748, 0.06841, 0.06919, 0.06981, 0.07029, 0.07066, 0.07091");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.06426, 0.06486, 0.0661, 0.06707, 0.06781, 0.0679, 0.06826, 0.07251, 0.1284, 0.4363",\
                 "0.06397, 0.06457, 0.06589, 0.06688, 0.0675, 0.06779, 0.06871, 0.07248, 0.1326, 0.4447",\
                 "0.06293, 0.06339, 0.06445, 0.06565, 0.06632, 0.06729, 0.06732, 0.07186, 0.1427, 0.478",\
                 "0.06184, 0.06224, 0.06321, 0.06427, 0.06567, 0.0662, 0.06657, 0.0732, 0.1664, 0.5379",\
                 "0.06091, 0.06124, 0.0621, 0.06312, 0.0641, 0.06481, 0.06632, 0.07786, 0.2172, 0.6265",\
                 "0.06028, 0.06066, 0.06129, 0.06229, 0.06318, 0.06429, 0.0654, 0.09189, 0.3089, 0.7339",\
                 "0.05976, 0.06008, 0.0607, 0.06153, 0.06258, 0.06344, 0.06724, 0.138, 0.4562, 0.8301",\
                 "0.0594, 0.05967, 0.06022, 0.06077, 0.0617, 0.06321, 0.08206, 0.2719, 0.6105, 0.8786",\
                 "0.05903, 0.05932, 0.05975, 0.06051, 0.06111, 0.06831, 0.1904, 0.4629, 0.6751, 0.8255",\
                 "0.05955, 0.05977, 0.0602, 0.06095, 0.07048, 0.2006, 0.3649, 0.4748, 0.5483, 0.5989");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("1.304, 1.393, 1.676, 2.214, 3.058, 4.234, 5.694, 7.372, 9.269, \
                  11.39");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("1.545, 1.608, 1.873, 2.415, 3.259, 4.399, 5.771, 7.347, 9.133, \
                  11.13");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("2.734, 2.868, 3.197, 3.615, 4.09, 4.626, 5.244, 5.961, 6.799, 7.779",\
                 "2.806, 2.941, 3.27, 3.688, 4.162, 4.699, 5.317, 6.033, 6.872, 7.851",\
                 "3.06, 3.195, 3.525, 3.942, 4.417, 4.954, 5.571, 6.288, 7.126, 8.106",\
                 "3.542, 3.677, 4.005, 4.423, 4.898, 5.435, 6.052, 6.769, 7.608, 8.587",\
                 "4.248, 4.383, 4.712, 5.129, 5.604, 6.14, 6.758, 7.476, 8.314, 9.294",\
                 "4.979, 5.113, 5.444, 5.862, 6.336, 6.872, 7.491, 8.208, 9.046, 10.03",\
                 "5.725, 5.861, 6.189, 6.607, 7.079, 7.619, 8.236, 8.953, 9.791, 10.77",\
                 "6.52, 6.656, 6.984, 7.403, 7.875, 8.413, 9.03, 9.746, 10.58, 11.56",\
                 "7.374, 7.511, 7.84, 8.257, 8.731, 9.269, 9.886, 10.6, 11.44, 12.42",\
                 "8.292, 8.428, 8.758, 9.174, 9.65, 10.19, 10.8, 11.52, 12.36, 13.34");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("1.461, 1.578, 1.922, 2.511, 3.403, 4.648, 6.287, 8.354, 10.88, 13.88",\
                 "1.528, 1.645, 1.99, 2.578, 3.47, 4.715, 6.353, 8.422, 10.94, 13.94",\
                 "1.767, 1.884, 2.228, 2.817, 3.709, 4.954, 6.592, 8.658, 11.18, 14.17",\
                 "2.224, 2.341, 2.686, 3.275, 4.166, 5.412, 7.05, 9.112, 11.63, 14.64",\
                 "2.932, 3.05, 3.395, 3.983, 4.875, 6.12, 7.759, 9.823, 12.35, 15.36",\
                 "3.841, 3.964, 4.316, 4.907, 5.798, 7.045, 8.683, 10.75, 13.27, 16.27",\
                 "4.861, 4.993, 5.361, 5.96, 6.853, 8.096, 9.733, 11.79, 14.31, 17.33",\
                 "5.983, 6.125, 6.51, 7.117, 8.013, 9.257, 10.89, 12.95, 15.47, 18.48",\
                 "7.201, 7.356, 7.761, 8.38, 9.277, 10.52, 12.16, 14.22, 16.74, 19.74",\
                 "8.515, 8.684, 9.113, 9.746, 10.65, 11.89, 13.53, 15.59, 18.1, 21.1");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.772, 0.8594, 1.089, 1.417, 1.854, 2.441, 3.215, 4.222, 5.496, 7.057",\
                 "0.7718, 0.8594, 1.089, 1.417, 1.855, 2.441, 3.214, 4.221, 5.497, 7.056",\
                 "0.7714, 0.8598, 1.088, 1.417, 1.858, 2.444, 3.215, 4.222, 5.496, 7.057",\
                 "0.7722, 0.86, 1.09, 1.416, 1.854, 2.441, 3.216, 4.219, 5.495, 7.06",\
                 "0.7706, 0.8586, 1.088, 1.416, 1.856, 2.441, 3.216, 4.222, 5.494, 7.061",\
                 "0.7716, 0.8594, 1.088, 1.417, 1.855, 2.44, 3.217, 4.222, 5.492, 7.06",\
                 "0.772, 0.858, 1.084, 1.414, 1.852, 2.442, 3.216, 4.22, 5.492, 7.06",\
                 "0.772, 0.858, 1.088, 1.414, 1.852, 2.436, 3.212, 4.216, 5.488, 7.054",\
                 "0.772, 0.858, 1.088, 1.418, 1.854, 2.436, 3.212, 4.214, 5.482, 7.048",\
                 "0.77, 0.86, 1.09, 1.418, 1.854, 2.44, 3.214, 4.222, 5.492, 7.046");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.4704, 0.6052, 1.066, 1.975, 3.444, 5.529, 8.269, 11.74, 15.93, 20.96",\
                 "0.4704, 0.6048, 1.064, 1.977, 3.444, 5.532, 8.265, 11.73, 15.93, 20.96",\
                 "0.4708, 0.6054, 1.065, 1.977, 3.444, 5.53, 8.267, 11.72, 15.93, 20.96",\
                 "0.4704, 0.6052, 1.066, 1.977, 3.446, 5.524, 8.268, 11.72, 15.94, 20.96",\
                 "0.4748, 0.6076, 1.065, 1.974, 3.451, 5.53, 8.275, 11.72, 15.98, 20.96",\
                 "0.5054, 0.6352, 1.082, 1.982, 3.451, 5.526, 8.27, 11.72, 15.97, 20.96",\
                 "0.558, 0.6848, 1.121, 2, 3.452, 5.528, 8.268, 11.72, 15.94, 20.99",\
                 "0.618, 0.744, 1.166, 2.026, 3.468, 5.534, 8.28, 11.72, 15.94, 20.97",\
                 "0.688, 0.814, 1.22, 2.058, 3.48, 5.55, 8.276, 11.73, 15.96, 20.98",\
                 "0.766, 0.892, 1.286, 2.096, 3.504, 5.562, 8.288, 11.74, 15.94, 20.97");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("3.415, 3.544, 3.864, 4.274, 4.744, 5.278, 5.893, 6.609, 7.448, 8.427",\
                 "3.486, 3.616, 3.936, 4.346, 4.815, 5.35, 5.965, 6.681, 7.519, 8.499",\
                 "3.759, 3.889, 4.209, 4.619, 5.089, 5.622, 6.238, 6.954, 7.792, 8.772",\
                 "4.293, 4.423, 4.742, 5.152, 5.624, 6.157, 6.773, 7.489, 8.327, 9.307",\
                 "5.12, 5.25, 5.571, 5.983, 6.454, 6.99, 7.604, 8.321, 9.161, 10.14",\
                 "6.26, 6.391, 6.713, 7.127, 7.599, 8.134, 8.749, 9.467, 10.3, 11.28",\
                 "7.685, 7.816, 8.14, 8.554, 9.027, 9.562, 10.18, 10.89, 11.73, 12.71",\
                 "9.351, 9.485, 9.814, 10.23, 10.71, 11.24, 11.86, 12.58, 13.42, 14.4",\
                 "11.25, 11.38, 11.72, 12.14, 12.62, 13.16, 13.78, 14.5, 15.34, 16.32",\
                 "13.37, 13.51, 13.85, 14.29, 14.77, 15.32, 15.95, 16.67, 17.51, 18.49");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("1.784, 1.901, 2.249, 2.841, 3.736, 4.984, 6.624, 8.689, 11.2, 14.21",\
                 "1.847, 1.964, 2.312, 2.905, 3.8, 5.048, 6.688, 8.753, 11.28, 14.28",\
                 "2.065, 2.182, 2.529, 3.123, 4.02, 5.268, 6.91, 8.971, 11.49, 14.51",\
                 "2.459, 2.575, 2.922, 3.517, 4.415, 5.663, 7.303, 9.373, 11.88, 14.9",\
                 "2.982, 3.1, 3.448, 4.043, 4.941, 6.191, 7.835, 9.897, 12.42, 15.43",\
                 "3.62, 3.742, 4.093, 4.69, 5.587, 6.837, 8.478, 10.55, 13.07, 16.07",\
                 "4.355, 4.479, 4.836, 5.436, 6.338, 7.588, 9.228, 11.3, 13.82, 16.83",\
                 "5.187, 5.313, 5.677, 6.28, 7.181, 8.433, 10.08, 12.14, 14.66, 17.66",\
                 "6.119, 6.249, 6.619, 7.226, 8.127, 9.38, 11.02, 13.09, 15.61, 18.61",\
                 "7.15, 7.285, 7.663, 8.275, 9.177, 10.43, 12.07, 14.14, 16.66, 19.66");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.7174, 0.8096, 1.047, 1.386, 1.837, 2.426, 3.205, 4.214, 5.491, 7.059",\
                 "0.7178, 0.8078, 1.046, 1.385, 1.837, 2.426, 3.207, 4.216, 5.493, 7.054",\
                 "0.7178, 0.81, 1.046, 1.386, 1.837, 2.426, 3.205, 4.217, 5.493, 7.054",\
                 "0.7182, 0.81, 1.049, 1.388, 1.836, 2.426, 3.204, 4.215, 5.494, 7.054",\
                 "0.7226, 0.8136, 1.052, 1.389, 1.838, 2.427, 3.205, 4.217, 5.488, 7.056",\
                 "0.7264, 0.8176, 1.054, 1.39, 1.838, 2.428, 3.206, 4.216, 5.494, 7.054",\
                 "0.73, 0.824, 1.06, 1.392, 1.84, 2.43, 3.208, 4.214, 5.494, 7.052",\
                 "0.744, 0.836, 1.07, 1.402, 1.85, 2.434, 3.212, 4.216, 5.496, 7.054",\
                 "0.768, 0.86, 1.098, 1.428, 1.868, 2.45, 3.222, 4.226, 5.5, 7.062",\
                 "0.794, 0.882, 1.12, 1.454, 1.898, 2.486, 3.254, 4.254, 5.516, 7.07");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.01707, 0.02582, 0.05653, 0.1152, 0.2065, 0.3347, 0.5033, 0.7158, 0.9752, 1.284");
          values("0.4424, 0.5814, 1.053, 1.972, 3.45, 5.525, 8.27, 11.73, 15.94, 20.97",\
                 "0.4426, 0.5814, 1.053, 1.974, 3.446, 5.525, 8.279, 11.73, 15.96, 20.96",\
                 "0.445, 0.5836, 1.053, 1.972, 3.444, 5.531, 8.27, 11.72, 15.95, 21.02",\
                 "0.4482, 0.5878, 1.055, 1.974, 3.45, 5.531, 8.265, 11.72, 15.94, 20.96",\
                 "0.4512, 0.5892, 1.055, 1.975, 3.444, 5.526, 8.277, 11.72, 15.95, 20.96",\
                 "0.4644, 0.6024, 1.068, 1.978, 3.444, 5.534, 8.266, 11.72, 15.93, 20.98",\
                 "0.48, 0.6186, 1.082, 1.991, 3.458, 5.53, 8.278, 11.72, 15.96, 20.97",\
                 "0.498, 0.636, 1.1, 2, 3.466, 5.542, 8.276, 11.72, 15.94, 20.96",\
                 "0.518, 0.656, 1.118, 2.016, 3.47, 5.55, 8.286, 11.73, 15.95, 20.96",\
                 "0.542, 0.682, 1.138, 2.028, 3.482, 5.554, 8.288, 11.74, 15.95, 21");
        }
      }
    }
  }

