/*
 * 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 : "0.000227205" ;
    }

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.007493 ;
      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.02287, 0.02259, 0.02226, 0.02212, 0.02205, 0.02202, 0.02202, \
                  0.02208, 0.02183, 0.01939");
        }

        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.0344, 0.03407, 0.03342, 0.03289, 0.03252, 0.0323, 0.03223, 0.0323, \
                  0.0321, 0.02588");
        }

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

    pin(I) {
      capacitance : 0.0043 ;
      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.003255, 0.003258, 0.00326, 0.003264, 0.003263, 0.003266, 0.003263, \
                  0.003262, 0.003071, 0.002298");
        }

        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.003245, -0.003246, -0.003249, -0.003258, -0.003258, -0.003256, \
                  -0.003257, -0.003256, -0.003151, -0.002736");
        }
      }
    }

    pin(Z) {
      capacitance : 0.004072 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.3753 ;
      max_transition : 25 ;
      min_capacitance : 0.005072 ;
      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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.02981, 0.02981, 0.0298, 0.02979, 0.02978, 0.02978, 0.02979, 0.02979, 0.02979, 0.02978",\
                 "0.02997, 0.02998, 0.02995, 0.02994, 0.02993, 0.02993, 0.02994, 0.02994, 0.02994, 0.02993",\
                 "0.03041, 0.03041, 0.0304, 0.03039, 0.03037, 0.03038, 0.03038, 0.03038, 0.03038, 0.03037",\
                 "0.03068, 0.03069, 0.03068, 0.03067, 0.03066, 0.03066, 0.03066, 0.03067, 0.03067, 0.03064",\
                 "0.03091, 0.03091, 0.0309, 0.03089, 0.03088, 0.03088, 0.03089, 0.03089, 0.03089, 0.03085",\
                 "0.0312, 0.03119, 0.0312, 0.03117, 0.03118, 0.03117, 0.03118, 0.03118, 0.03116, 0.03106",\
                 "0.03153, 0.03153, 0.03153, 0.03152, 0.03151, 0.03151, 0.03151, 0.03151, 0.03146, 0.03121",\
                 "0.03196, 0.03197, 0.03195, 0.03195, 0.03193, 0.03193, 0.03194, 0.0319, 0.03167, 0.03104",\
                 "0.03267, 0.03266, 0.03266, 0.03265, 0.03264, 0.03263, 0.03257, 0.03222, 0.03139, 0.03043",\
                 "0.03381, 0.03381, 0.0338, 0.03375, 0.03364, 0.03324, 0.03222, 0.03111, 0.03032, 0.02974");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.01992, 0.01993, 0.01995, 0.02, 0.02006, 0.02024, 0.02091, 0.02988, 0.07967, 0.1894",\
                 "0.0198, 0.01982, 0.01983, 0.01987, 0.01994, 0.02013, 0.02086, 0.03016, 0.0813, 0.1913",\
                 "0.01952, 0.01952, 0.01954, 0.01959, 0.01964, 0.01974, 0.02039, 0.03172, 0.08723, 0.1984",\
                 "0.01917, 0.01917, 0.0192, 0.01926, 0.01931, 0.01943, 0.02059, 0.03484, 0.09849, 0.2118",\
                 "0.0189, 0.01891, 0.01894, 0.01899, 0.01905, 0.01923, 0.02097, 0.04192, 0.1182, 0.2292",\
                 "0.01876, 0.01875, 0.01873, 0.01884, 0.01887, 0.019, 0.02316, 0.05594, 0.1445, 0.2465",\
                 "0.01874, 0.01874, 0.01874, 0.01871, 0.01886, 0.01941, 0.02879, 0.0819, 0.1749, 0.2572",\
                 "0.01881, 0.01884, 0.01882, 0.01881, 0.01883, 0.02109, 0.04708, 0.1201, 0.1966, 0.2526",\
                 "0.01912, 0.01914, 0.01917, 0.01916, 0.01968, 0.0332, 0.08793, 0.1486, 0.1915, 0.2212",\
                 "0.01991, 0.01993, 0.01996, 0.02037, 0.03404, 0.07471, 0.1063, 0.1265, 0.1398, 0.1488");
        }
      }

      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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.04714, 0.04732, 0.04771, 0.04807, 0.04831, 0.04846, 0.04856, 0.04862, 0.04865, 0.04866",\
                 "0.04702, 0.0472, 0.04759, 0.04795, 0.04819, 0.04834, 0.04844, 0.0485, 0.04854, 0.04854",\
                 "0.04678, 0.04696, 0.04735, 0.04771, 0.04796, 0.04811, 0.04821, 0.04827, 0.04831, 0.0483",\
                 "0.04655, 0.04672, 0.04708, 0.04744, 0.04769, 0.04785, 0.04795, 0.04802, 0.04806, 0.04805",\
                 "0.04635, 0.0465, 0.04683, 0.04716, 0.04742, 0.0476, 0.04772, 0.0478, 0.04784, 0.04779",\
                 "0.04616, 0.04628, 0.04659, 0.0469, 0.04717, 0.04739, 0.04754, 0.04763, 0.04765, 0.04744",\
                 "0.04605, 0.04617, 0.04643, 0.04674, 0.04702, 0.04725, 0.04741, 0.04747, 0.04724, 0.04658",\
                 "0.046, 0.0461, 0.04634, 0.04663, 0.0469, 0.04709, 0.04706, 0.04651, 0.04557, 0.04478",\
                 "0.0438, 0.04388, 0.04403, 0.04407, 0.04343, 0.04235, 0.04165, 0.04122, 0.04094, 0.04076",\
                 "0.01718, 0.01726, 0.01748, 0.01774, 0.01801, 0.01826, 0.01845, 0.01861, 0.01873, 0.01883");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.01926, 0.01942, 0.0198, 0.02021, 0.02047, 0.02075, 0.02149, 0.03208, 0.08712, 0.198",\
                 "0.0192, 0.01936, 0.01974, 0.02017, 0.02044, 0.0207, 0.02134, 0.03294, 0.08877, 0.2001",\
                 "0.01905, 0.01921, 0.01956, 0.01992, 0.02024, 0.02051, 0.02157, 0.03462, 0.09506, 0.2075",\
                 "0.01875, 0.01888, 0.01918, 0.01956, 0.01987, 0.0201, 0.02173, 0.03849, 0.1077, 0.2207",\
                 "0.01849, 0.01861, 0.01887, 0.01924, 0.01954, 0.01995, 0.0226, 0.04733, 0.1286, 0.2374",\
                 "0.01827, 0.01839, 0.01864, 0.01895, 0.01925, 0.01977, 0.02537, 0.06516, 0.1571, 0.2528",\
                 "0.01815, 0.01824, 0.01842, 0.01871, 0.01909, 0.01998, 0.03395, 0.09569, 0.1856, 0.2588",\
                 "0.01806, 0.01817, 0.01834, 0.01858, 0.01883, 0.0234, 0.05986, 0.1346, 0.1994, 0.2453",\
                 "0.0181, 0.01819, 0.0184, 0.0186, 0.0206, 0.04634, 0.103, 0.148, 0.1783, 0.1991",\
                 "0.01843, 0.01853, 0.01875, 0.02367, 0.0504, 0.07276, 0.08616, 0.09451, 0.09989, 0.1036");
        }
      }

      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("0.819, 0.909, 1.19, 1.73, 2.505, 3.397, 4.379, 5.465, 6.628, 7.886");
        }

        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.422, 1.491, 1.75, 2.291, 3.106, 4.072, 5.133, 6.284, 7.531, \
                  8.857");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("1.936, 2.074, 2.421, 2.886, 3.445, 4.109, 4.898, 5.836, 6.951, 8.263",\
                 "2.021, 2.161, 2.506, 2.972, 3.531, 4.195, 4.984, 5.923, 7.036, 8.349",\
                 "2.288, 2.427, 2.774, 3.238, 3.798, 4.462, 5.251, 6.19, 7.304, 8.616",\
                 "2.724, 2.862, 3.207, 3.67, 4.23, 4.894, 5.683, 6.622, 7.735, 9.048",\
                 "3.249, 3.385, 3.726, 4.188, 4.745, 5.409, 6.197, 7.136, 8.25, 9.563",\
                 "3.725, 3.86, 4.2, 4.657, 5.212, 5.875, 6.661, 7.599, 8.713, 10.03",\
                 "4.162, 4.298, 4.639, 5.1, 5.653, 6.313, 7.099, 8.033, 9.145, 10.46",\
                 "4.566, 4.702, 5.044, 5.504, 6.06, 6.72, 7.506, 8.441, 9.551, 10.86",\
                 "4.933, 5.069, 5.411, 5.873, 6.429, 7.09, 7.876, 8.812, 9.923, 11.23",\
                 "5.26, 5.396, 5.739, 6.2, 6.756, 7.417, 8.204, 9.14, 10.25, 11.56");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("1.171, 1.309, 1.719, 2.417, 3.472, 4.948, 6.891, 9.338, 12.33, 15.87",\
                 "1.234, 1.372, 1.782, 2.48, 3.536, 5.011, 6.954, 9.402, 12.39, 15.93",\
                 "1.464, 1.602, 2.012, 2.709, 3.765, 5.241, 7.184, 9.633, 12.61, 16.16",\
                 "1.893, 2.03, 2.441, 3.139, 4.195, 5.671, 7.609, 10.06, 13.04, 16.59",\
                 "2.422, 2.566, 2.986, 3.689, 4.746, 6.221, 8.161, 10.61, 13.59, 17.14",\
                 "2.968, 3.12, 3.552, 4.263, 5.326, 6.802, 8.743, 11.19, 14.17, 17.74",\
                 "3.511, 3.676, 4.123, 4.841, 5.905, 7.388, 9.33, 11.77, 14.76, 18.32",\
                 "4.034, 4.214, 4.684, 5.413, 6.478, 7.958, 9.905, 12.35, 15.34, 18.89",\
                 "4.522, 4.722, 5.224, 5.966, 7.033, 8.512, 10.46, 12.91, 15.89, 19.45",\
                 "4.964, 5.186, 5.727, 6.489, 7.56, 9.039, 10.98, 13.43, 16.42, 19.98");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.6492, 0.7474, 1.031, 1.479, 2.1, 2.941, 4.05, 5.483, 7.279, 9.465",\
                 "0.6502, 0.7478, 1.031, 1.479, 2.106, 2.941, 4.05, 5.482, 7.281, 9.456",\
                 "0.6502, 0.7486, 1.031, 1.479, 2.1, 2.942, 4.05, 5.482, 7.276, 9.461",\
                 "0.643, 0.743, 1.027, 1.477, 2.099, 2.942, 4.049, 5.478, 7.279, 9.454",\
                 "0.6288, 0.7296, 1.019, 1.472, 2.099, 2.937, 4.043, 5.478, 7.278, 9.454",\
                 "0.6254, 0.7266, 1.013, 1.461, 2.085, 2.926, 4.036, 5.474, 7.27, 9.468",\
                 "0.6274, 0.7294, 1.016, 1.466, 2.084, 2.924, 4.022, 5.456, 7.262, 9.45",\
                 "0.626, 0.73, 1.016, 1.466, 2.09, 2.926, 4.026, 5.454, 7.242, 9.426",\
                 "0.63, 0.73, 1.018, 1.466, 2.088, 2.928, 4.03, 5.462, 7.248, 9.428",\
                 "0.628, 0.73, 1.018, 1.468, 2.092, 2.932, 4.04, 5.464, 7.262, 9.436");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.533, 0.6934, 1.242, 2.321, 4.074, 6.565, 9.855, 13.95, 19, 25.02",\
                 "0.5324, 0.6934, 1.242, 2.321, 4.074, 6.565, 9.855, 13.95, 19, 25",\
                 "0.5326, 0.6936, 1.241, 2.321, 4.07, 6.562, 9.855, 13.96, 19, 24.99",\
                 "0.5352, 0.6976, 1.242, 2.321, 4.074, 6.551, 9.84, 13.95, 18.97, 25.02",\
                 "0.563, 0.7228, 1.262, 2.329, 4.074, 6.562, 9.85, 13.96, 19, 24.99",\
                 "0.6082, 0.7616, 1.29, 2.351, 4.084, 6.557, 9.844, 13.96, 18.98, 25",\
                 "0.6742, 0.8182, 1.327, 2.366, 4.1, 6.572, 9.836, 13.96, 19, 24.98",\
                 "0.756, 0.894, 1.376, 2.39, 4.106, 6.586, 9.848, 13.97, 19, 25.02",\
                 "0.85, 0.99, 1.444, 2.422, 4.118, 6.59, 9.858, 13.98, 19.01, 24.99",\
                 "0.952, 1.096, 1.532, 2.464, 4.128, 6.59, 9.86, 13.99, 19.01, 25.01");
        }
      }

      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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("3.296, 3.436, 3.783, 4.247, 4.806, 5.469, 6.258, 7.196, 8.31, 9.623",\
                 "3.371, 3.511, 3.859, 4.323, 4.882, 5.544, 6.333, 7.271, 8.386, 9.697",\
                 "3.648, 3.788, 4.136, 4.601, 5.159, 5.822, 6.61, 7.549, 8.663, 9.974",\
                 "4.19, 4.33, 4.678, 5.141, 5.701, 6.363, 7.152, 8.091, 9.205, 10.52",\
                 "5.042, 5.182, 5.53, 5.994, 6.553, 7.217, 8.005, 8.944, 10.06, 11.37",\
                 "6.219, 6.359, 6.708, 7.174, 7.734, 8.398, 9.188, 10.13, 11.24, 12.55",\
                 "7.653, 7.798, 8.155, 8.627, 9.192, 9.859, 10.65, 11.59, 12.7, 14.02",\
                 "9.232, 9.387, 9.761, 10.25, 10.83, 11.51, 12.31, 13.25, 14.37, 15.68",\
                 "10.94, 11.1, 11.49, 12.01, 12.6, 13.3, 14.12, 15.07, 16.19, 17.51",\
                 "12.77, 12.94, 13.36, 13.88, 14.5, 15.22, 16.05, 17.02, 18.15, 19.47");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("1.779, 1.919, 2.335, 3.04, 4.101, 5.58, 7.522, 9.977, 12.95, 16.51",\
                 "1.849, 1.989, 2.404, 3.11, 4.171, 5.65, 7.592, 10.04, 13.02, 16.58",\
                 "2.092, 2.231, 2.646, 3.35, 4.412, 5.892, 7.838, 10.28, 13.26, 16.82",\
                 "2.542, 2.681, 3.094, 3.799, 4.862, 6.344, 8.29, 10.73, 13.73, 17.27",\
                 "3.159, 3.3, 3.716, 4.422, 5.485, 6.967, 8.914, 11.37, 14.34, 17.9",\
                 "3.849, 3.999, 4.43, 5.143, 6.207, 7.69, 9.637, 12.08, 15.07, 18.64",\
                 "4.572, 4.732, 5.181, 5.906, 6.974, 8.458, 10.4, 12.85, 15.83, 19.39",\
                 "5.314, 5.485, 5.956, 6.695, 7.766, 9.25, 11.2, 13.65, 16.63, 20.19",\
                 "6.057, 6.244, 6.74, 7.495, 8.572, 10.06, 12, 14.45, 17.44, 21",\
                 "6.788, 6.991, 7.518, 8.293, 9.377, 10.86, 12.81, 15.26, 18.25, 21.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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.6178, 0.7178, 1.006, 1.46, 2.089, 2.932, 4.043, 5.479, 7.277, 9.462",\
                 "0.6172, 0.7182, 1.006, 1.46, 2.091, 2.931, 4.04, 5.479, 7.271, 9.469",\
                 "0.6176, 0.718, 1.006, 1.46, 2.091, 2.934, 4.044, 5.477, 7.272, 9.468",\
                 "0.6172, 0.7182, 1.007, 1.459, 2.087, 2.931, 4.043, 5.478, 7.277, 9.457",\
                 "0.6204, 0.721, 1.009, 1.461, 2.088, 2.933, 4.043, 5.479, 7.276, 9.458",\
                 "0.6294, 0.7276, 1.014, 1.466, 2.094, 2.934, 4.046, 5.476, 7.268, 9.456",\
                 "0.662, 0.758, 1.038, 1.484, 2.102, 2.942, 4.05, 5.482, 7.278, 9.464",\
                 "0.718, 0.812, 1.092, 1.544, 2.158, 2.984, 4.072, 5.496, 7.288, 9.468",\
                 "0.78, 0.874, 1.152, 1.608, 2.228, 3.054, 4.138, 5.544, 7.316, 9.488",\
                 "0.852, 0.938, 1.218, 1.678, 2.306, 3.136, 4.214, 5.61, 7.36, 9.514");
        }

        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.005072, 0.007627, 0.0166, 0.03372, 0.06041, 0.09785, 0.1471, 0.2092, 0.285, 0.3753");
          values("0.5076, 0.6754, 1.228, 2.317, 4.071, 6.565, 9.833, 13.96, 19, 24.99",\
                 "0.5078, 0.6716, 1.227, 2.317, 4.072, 6.565, 9.832, 13.98, 19, 25",\
                 "0.5074, 0.673, 1.228, 2.317, 4.073, 6.565, 9.836, 13.98, 19, 24.99",\
                 "0.5108, 0.6758, 1.228, 2.317, 4.073, 6.552, 9.835, 13.96, 18.99, 24.98",\
                 "0.5238, 0.685, 1.235, 2.319, 4.069, 6.562, 9.835, 13.96, 18.99, 24.96",\
                 "0.5626, 0.7264, 1.268, 2.331, 4.073, 6.563, 9.852, 13.97, 19.01, 24.98",\
                 "0.61, 0.774, 1.31, 2.36, 4.084, 6.558, 9.834, 13.95, 18.98, 24.99",\
                 "0.666, 0.83, 1.36, 2.388, 4.1, 6.566, 9.834, 13.95, 18.99, 25.03",\
                 "0.734, 0.898, 1.42, 2.424, 4.118, 6.576, 9.836, 13.95, 19, 25.01",\
                 "0.812, 0.98, 1.494, 2.474, 4.138, 6.584, 9.85, 13.96, 18.98, 24.99");
        }
      }
    }
  }

