/*
 * 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_3) {
    area : 43.904000 ;

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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.007473 ;
      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.02302, 0.02275, 0.02243, 0.02229, 0.02221, 0.02216, 0.02217, \
                  0.02222, 0.02197, 0.01943");
        }

        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.0386, 0.03827, 0.03766, 0.03714, 0.03672, 0.03642, 0.0363, 0.03631, \
                  0.03603, 0.02585");
        }

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

    pin(I) {
      capacitance : 0.006658 ;
      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.005542, 0.005551, 0.005541, 0.005549, 0.005545, 0.005548, 0.005548, \
                  0.005546, 0.005223, 0.003908");
        }

        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.005532, -0.005534, -0.005529, -0.005542, -0.005542, -0.005539, \
                  -0.005537, -0.005534, -0.005357, -0.004652");
        }
      }
    }

    pin(Z) {
      capacitance : 0.007443 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.5622 ;
      max_transition : 25 ;
      min_capacitance : 0.008443 ;
      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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.03964, 0.03964, 0.03964, 0.03962, 0.03961, 0.03962, 0.03962, 0.03963, 0.03963, 0.03961",\
                 "0.03978, 0.0398, 0.03978, 0.03975, 0.03974, 0.03976, 0.03977, 0.03976, 0.03975, 0.03976",\
                 "0.04025, 0.04025, 0.04023, 0.04022, 0.04021, 0.04021, 0.04022, 0.04022, 0.04022, 0.0402",\
                 "0.04056, 0.04055, 0.04054, 0.04052, 0.04052, 0.04052, 0.04053, 0.04053, 0.04052, 0.04049",\
                 "0.0408, 0.04081, 0.0408, 0.04077, 0.04076, 0.04078, 0.04078, 0.04079, 0.04078, 0.0407",\
                 "0.04109, 0.04111, 0.04109, 0.04108, 0.04108, 0.04107, 0.04107, 0.04108, 0.04106, 0.0409",\
                 "0.04145, 0.04146, 0.04145, 0.04143, 0.04143, 0.04144, 0.04144, 0.04143, 0.04135, 0.04094",\
                 "0.04189, 0.04189, 0.04188, 0.04186, 0.04186, 0.04186, 0.04186, 0.04181, 0.04144, 0.04042",\
                 "0.04263, 0.04263, 0.0426, 0.04259, 0.04257, 0.04255, 0.04245, 0.0419, 0.04052, 0.03893",\
                 "0.04374, 0.04374, 0.04372, 0.04366, 0.04349, 0.0428, 0.04107, 0.03924, 0.03791, 0.03696");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.02771, 0.0277, 0.02773, 0.02778, 0.02788, 0.028, 0.0288, 0.04276, 0.1185, 0.2819",\
                 "0.02762, 0.02761, 0.02763, 0.02766, 0.0278, 0.02797, 0.02895, 0.04324, 0.1209, 0.2849",\
                 "0.02733, 0.02734, 0.02737, 0.02738, 0.02759, 0.02776, 0.02913, 0.04552, 0.1301, 0.296",\
                 "0.02701, 0.027, 0.02704, 0.02708, 0.02718, 0.02743, 0.02894, 0.0509, 0.1479, 0.316",\
                 "0.02676, 0.02675, 0.02678, 0.02686, 0.02696, 0.02726, 0.03006, 0.06301, 0.1776, 0.3425",\
                 "0.02661, 0.02661, 0.02656, 0.02672, 0.02676, 0.02713, 0.03339, 0.08553, 0.2185, 0.3682",\
                 "0.02656, 0.02658, 0.02659, 0.02651, 0.02684, 0.02765, 0.04334, 0.1262, 0.2635, 0.3824",\
                 "0.02664, 0.02665, 0.02664, 0.02663, 0.02665, 0.03091, 0.07384, 0.1839, 0.2927, 0.3717",\
                 "0.02691, 0.02692, 0.02695, 0.02701, 0.02818, 0.05286, 0.1367, 0.2201, 0.278, 0.3183",\
                 "0.02768, 0.02771, 0.02777, 0.02907, 0.05707, 0.1114, 0.1491, 0.1731, 0.1889, 0.1997");
        }
      }

      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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.06414, 0.06442, 0.06497, 0.06544, 0.06573, 0.06591, 0.06601, 0.06608, 0.06612, 0.06612",\
                 "0.06395, 0.06423, 0.06481, 0.06528, 0.06556, 0.06573, 0.06583, 0.0659, 0.06594, 0.06594",\
                 "0.06361, 0.06388, 0.06445, 0.06493, 0.06521, 0.06539, 0.0655, 0.06556, 0.0656, 0.0656",\
                 "0.06325, 0.06349, 0.06401, 0.06449, 0.0648, 0.06501, 0.06513, 0.0652, 0.06525, 0.06522",\
                 "0.06285, 0.06306, 0.06354, 0.064, 0.06438, 0.06463, 0.0648, 0.06489, 0.06496, 0.06488",\
                 "0.06256, 0.06274, 0.06318, 0.06365, 0.06406, 0.06435, 0.06455, 0.06468, 0.06471, 0.06444",\
                 "0.06242, 0.06259, 0.06301, 0.06346, 0.06387, 0.0642, 0.06443, 0.06453, 0.06429, 0.06339",\
                 "0.06239, 0.06257, 0.06295, 0.06337, 0.06379, 0.06409, 0.06419, 0.06364, 0.06226, 0.0608",\
                 "0.0612, 0.06134, 0.06165, 0.06192, 0.06182, 0.06056, 0.05882, 0.05758, 0.05672, 0.05614",\
                 "0.02888, 0.02906, 0.02945, 0.02989, 0.03033, 0.03069, 0.03098, 0.0312, 0.03138, 0.03152");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.02744, 0.02771, 0.0283, 0.02881, 0.02927, 0.02965, 0.031, 0.04687, 0.1286, 0.2946",\
                 "0.02733, 0.02758, 0.02816, 0.02869, 0.02911, 0.02942, 0.03069, 0.04756, 0.1316, 0.298",\
                 "0.027, 0.02724, 0.02772, 0.02827, 0.02877, 0.0291, 0.03044, 0.05013, 0.1409, 0.3084",\
                 "0.02646, 0.02664, 0.02708, 0.02756, 0.02809, 0.02847, 0.03064, 0.05597, 0.1591, 0.3273",\
                 "0.02602, 0.02618, 0.02657, 0.02703, 0.02757, 0.02815, 0.0321, 0.06981, 0.1892, 0.3516",\
                 "0.02572, 0.02584, 0.0262, 0.02673, 0.02716, 0.0278, 0.03565, 0.09383, 0.2298, 0.3742",\
                 "0.02552, 0.02564, 0.02597, 0.02634, 0.02698, 0.02812, 0.04788, 0.137, 0.2722, 0.384",\
                 "0.02544, 0.02557, 0.02588, 0.02622, 0.02651, 0.03265, 0.08269, 0.1941, 0.295, 0.3672",\
                 "0.0256, 0.02573, 0.02598, 0.02632, 0.02855, 0.06101, 0.1461, 0.22, 0.2704, 0.3053",\
                 "0.02627, 0.02638, 0.02668, 0.03016, 0.06652, 0.1105, 0.1383, 0.1559, 0.1673, 0.1752");
        }
      }

      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, 1.091, 1.371, 1.912, 2.736, 3.701, 4.772, 5.94, 7.214, 8.577");
        }

        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.513, 1.584, 1.843, 2.381, 3.196, 4.168, 5.243, 6.403, 7.67, \
                  9.017");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("1.952, 2.084, 2.42, 2.876, 3.426, 4.079, 4.857, 5.788, 6.896, 8.204",\
                 "2.031, 2.162, 2.499, 2.955, 3.504, 4.158, 4.936, 5.866, 6.975, 8.282",\
                 "2.294, 2.426, 2.762, 3.218, 3.768, 4.42, 5.199, 6.129, 7.238, 8.546",\
                 "2.758, 2.889, 3.224, 3.68, 4.23, 4.882, 5.661, 6.591, 7.7, 9.007",\
                 "3.314, 3.444, 3.779, 4.233, 4.781, 5.434, 6.213, 7.143, 8.252, 9.559",\
                 "3.809, 3.939, 4.273, 4.725, 5.272, 5.923, 6.701, 7.631, 8.738, 10.05",\
                 "4.263, 4.394, 4.728, 5.18, 5.728, 6.379, 7.155, 8.082, 9.188, 10.5",\
                 "4.68, 4.81, 5.145, 5.599, 6.146, 6.797, 7.573, 8.501, 9.607, 10.91",\
                 "5.059, 5.189, 5.524, 5.979, 6.526, 7.178, 7.955, 8.884, 9.99, 11.3",\
                 "5.393, 5.523, 5.859, 6.315, 6.863, 7.516, 8.293, 9.222, 10.33, 11.63");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("1.299, 1.435, 1.843, 2.541, 3.596, 5.069, 7.006, 9.442, 12.42, 15.97",\
                 "1.364, 1.501, 1.909, 2.607, 3.661, 5.134, 7.072, 9.508, 12.48, 16.04",\
                 "1.599, 1.735, 2.143, 2.841, 3.895, 5.368, 7.303, 9.75, 12.74, 16.27",\
                 "2.041, 2.177, 2.586, 3.284, 4.339, 5.811, 7.748, 10.19, 13.16, 16.71",\
                 "2.622, 2.763, 3.18, 3.881, 4.936, 6.409, 8.346, 10.78, 13.76, 17.31",\
                 "3.226, 3.376, 3.807, 4.518, 5.577, 7.05, 8.987, 11.42, 14.4, 17.97",\
                 "3.835, 3.997, 4.446, 5.165, 6.227, 7.704, 9.641, 12.08, 15.06, 18.61",\
                 "4.428, 4.606, 5.079, 5.81, 6.873, 8.35, 10.29, 12.73, 15.71, 19.26",\
                 "4.996, 5.192, 5.697, 6.444, 7.511, 8.988, 10.93, 13.37, 16.35, 19.89",\
                 "5.521, 5.74, 6.285, 7.054, 8.126, 9.601, 11.54, 13.98, 16.96, 20.51");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.682, 0.7786, 1.055, 1.491, 2.102, 2.934, 4.037, 5.471, 7.277, 9.46",\
                 "0.6826, 0.7786, 1.055, 1.491, 2.099, 2.931, 4.034, 5.473, 7.277, 9.472",\
                 "0.6818, 0.7784, 1.054, 1.49, 2.103, 2.926, 4.036, 5.473, 7.277, 9.469",\
                 "0.6784, 0.7762, 1.053, 1.491, 2.103, 2.93, 4.036, 5.474, 7.277, 9.468",\
                 "0.6728, 0.7696, 1.049, 1.488, 2.1, 2.925, 4.036, 5.472, 7.273, 9.465",\
                 "0.6702, 0.7676, 1.045, 1.48, 2.09, 2.919, 4.03, 5.466, 7.276, 9.462",\
                 "0.6714, 0.7692, 1.048, 1.48, 2.088, 2.916, 4.018, 5.454, 7.262, 9.458",\
                 "0.672, 0.77, 1.048, 1.486, 2.094, 2.92, 4.022, 5.454, 7.248, 9.436",\
                 "0.674, 0.77, 1.05, 1.484, 2.094, 2.924, 4.028, 5.462, 7.252, 9.438",\
                 "0.676, 0.774, 1.05, 1.486, 2.098, 2.924, 4.028, 5.458, 7.266, 9.444");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.584, 0.7432, 1.289, 2.364, 4.112, 6.584, 9.846, 13.98, 19, 24.97",\
                 "0.584, 0.7432, 1.289, 2.365, 4.111, 6.586, 9.848, 13.97, 19, 24.96",\
                 "0.5834, 0.7424, 1.29, 2.367, 4.113, 6.586, 9.868, 13.98, 19, 24.99",\
                 "0.5858, 0.7458, 1.29, 2.365, 4.113, 6.587, 9.848, 13.98, 19, 24.98",\
                 "0.6152, 0.771, 1.304, 2.37, 4.11, 6.595, 9.846, 14, 19.01, 24.99",\
                 "0.6696, 0.8182, 1.342, 2.395, 4.124, 6.597, 9.85, 13.98, 19, 24.99",\
                 "0.7386, 0.8832, 1.386, 2.416, 4.14, 6.602, 9.864, 13.98, 19, 24.96",\
                 "0.826, 0.966, 1.444, 2.442, 4.144, 6.616, 9.868, 13.99, 19, 24.99",\
                 "0.928, 1.066, 1.52, 2.484, 4.16, 6.614, 9.876, 13.98, 19.02, 24.98",\
                 "1.042, 1.184, 1.618, 2.534, 4.178, 6.622, 9.886, 14, 19.01, 24.99");
        }
      }

      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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("2.881, 3.012, 3.346, 3.799, 4.345, 4.997, 5.774, 6.705, 7.812, 9.121",\
                 "2.957, 3.088, 3.422, 3.875, 4.421, 5.073, 5.851, 6.781, 7.889, 9.197",\
                 "3.236, 3.367, 3.7, 4.154, 4.7, 5.352, 6.129, 7.059, 8.168, 9.475",\
                 "3.777, 3.908, 4.242, 4.695, 5.242, 5.893, 6.671, 7.601, 8.71, 10.02",\
                 "4.614, 4.745, 5.08, 5.534, 6.082, 6.734, 7.513, 8.443, 9.552, 10.86",\
                 "5.729, 5.861, 6.199, 6.655, 7.204, 7.858, 8.637, 9.567, 10.68, 11.98",\
                 "7.013, 7.151, 7.502, 7.967, 8.524, 9.182, 9.964, 10.9, 12, 13.31",\
                 "8.417, 8.563, 8.927, 9.409, 9.981, 10.65, 11.44, 12.38, 13.49, 14.8",\
                 "9.939, 10.09, 10.47, 10.97, 11.56, 12.24, 13.04, 13.99, 15.11, 16.42",\
                 "11.57, 11.73, 12.13, 12.64, 13.25, 13.95, 14.76, 15.71, 16.84, 18.15");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("1.859, 1.998, 2.411, 3.115, 4.175, 5.65, 7.591, 10.03, 13, 16.56",\
                 "1.926, 2.064, 2.477, 3.182, 4.241, 5.716, 7.657, 10.1, 13.08, 16.62",\
                 "2.156, 2.294, 2.707, 3.411, 4.472, 5.947, 7.887, 10.33, 13.3, 16.85",\
                 "2.58, 2.717, 3.13, 3.834, 4.896, 6.374, 8.315, 10.75, 13.73, 17.28",\
                 "3.141, 3.28, 3.694, 4.4, 5.462, 6.941, 8.88, 11.33, 14.3, 17.85",\
                 "3.753, 3.899, 4.327, 5.041, 6.104, 7.583, 9.524, 11.97, 14.95, 18.5",\
                 "4.382, 4.536, 4.98, 5.703, 6.771, 8.251, 10.19, 12.64, 15.61, 19.16",\
                 "5.015, 5.179, 5.641, 6.377, 7.448, 8.929, 10.87, 13.32, 16.29, 19.84",\
                 "5.642, 5.817, 6.299, 7.049, 8.124, 9.607, 11.55, 13.99, 16.97, 20.52",\
                 "6.242, 6.431, 6.94, 7.707, 8.788, 10.27, 12.21, 14.66, 17.64, 21.19");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.6386, 0.7378, 1.022, 1.465, 2.084, 2.922, 4.03, 5.467, 7.275, 9.459",\
                 "0.6382, 0.7384, 1.023, 1.466, 2.083, 2.917, 4.029, 5.467, 7.276, 9.456",\
                 "0.6382, 0.7386, 1.023, 1.465, 2.083, 2.922, 4.026, 5.467, 7.266, 9.467",\
                 "0.6394, 0.7396, 1.023, 1.467, 2.082, 2.921, 4.029, 5.47, 7.269, 9.456",\
                 "0.6446, 0.7446, 1.028, 1.47, 2.085, 2.919, 4.028, 5.466, 7.272, 9.472",\
                 "0.659, 0.7568, 1.039, 1.476, 2.088, 2.924, 4.032, 5.468, 7.27, 9.47",\
                 "0.7, 0.798, 1.072, 1.504, 2.11, 2.94, 4.038, 5.476, 7.278, 9.462",\
                 "0.744, 0.842, 1.12, 1.56, 2.168, 2.988, 4.074, 5.498, 7.284, 9.466",\
                 "0.794, 0.89, 1.17, 1.614, 2.226, 3.046, 4.134, 5.542, 7.316, 9.484",\
                 "0.852, 0.946, 1.224, 1.67, 2.286, 3.108, 4.184, 5.592, 7.362, 9.516");
        }

        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.008443, 0.01227, 0.02568, 0.0513, 0.09122, 0.1472, 0.2209, 0.3138, 0.4271, 0.5622");
          values("0.5562, 0.7194, 1.272, 2.362, 4.114, 6.6, 9.883, 13.97, 18.99, 24.97",\
                 "0.5568, 0.719, 1.273, 2.361, 4.114, 6.6, 9.882, 13.97, 19, 25.01",\
                 "0.5568, 0.72, 1.277, 2.363, 4.113, 6.599, 9.85, 13.97, 19.01, 25",\
                 "0.5604, 0.725, 1.277, 2.361, 4.11, 6.586, 9.846, 13.97, 19, 24.96",\
                 "0.574, 0.7356, 1.282, 2.363, 4.108, 6.597, 9.867, 14.02, 19, 24.96",\
                 "0.6122, 0.7732, 1.315, 2.379, 4.117, 6.589, 9.856, 13.98, 19, 24.97",\
                 "0.6526, 0.816, 1.356, 2.408, 4.128, 6.598, 9.864, 13.97, 18.98, 24.98",\
                 "0.704, 0.868, 1.402, 2.436, 4.144, 6.606, 9.86, 13.97, 19, 25.02",\
                 "0.764, 0.928, 1.454, 2.468, 4.158, 6.618, 9.868, 13.97, 18.99, 25",\
                 "0.838, 1.004, 1.52, 2.514, 4.178, 6.622, 9.876, 14, 18.99, 24.99");
        }
      }
    }
  }

