/*
 * 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_4) {
    area : 48.294400 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.2266, 0.2251, 0.2331, 0.2594, 0.3059, 0.3749, 0.4695, 0.6013, \
                 0.7735, 0.9868");
        }

        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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.3763, 0.3746, 0.385, 0.4231, 0.4971, 0.6118, 0.772, 0.9812, \
                 1.242, 1.556");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.07587, 0.07579, 0.07553, 0.07557, 0.07552, 0.07544, 0.07568, \
                 0.07556, 0.07554, 0.07563");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.07545, -0.07553, -0.07545, -0.0752, -0.07532, -0.07526, -0.0753, \
                 -0.07545, -0.07551, -0.07551");
        }
      }
    }

    pin(Z) {
      capacitance : 0.007 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.927 ;
      max_transition : 4 ;
      min_capacitance : 0.008 ;
      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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.4355, 0.4344, 0.434, 0.4335, 0.4333, 0.4333, 0.4335, 0.4335, 0.4334, 0.4334",\
                 "0.4365, 0.4356, 0.4348, 0.4344, 0.4343, 0.4344, 0.4344, 0.4344, 0.4343, 0.4343",\
                 "0.4504, 0.4496, 0.4491, 0.4488, 0.4488, 0.4488, 0.4489, 0.4489, 0.4489, 0.4489",\
                 "0.4825, 0.4824, 0.4821, 0.4819, 0.4818, 0.4821, 0.4822, 0.4822, 0.4821, 0.4822",\
                 "0.5387, 0.5386, 0.5388, 0.5384, 0.5384, 0.5385, 0.5386, 0.5386, 0.5386, 0.5386",\
                 "0.621, 0.6205, 0.6207, 0.6204, 0.6207, 0.6206, 0.6204, 0.6207, 0.6205, 0.6205",\
                 "0.7295, 0.7296, 0.7294, 0.729, 0.7291, 0.7293, 0.7294, 0.7293, 0.7293, 0.7293",\
                 "0.8668, 0.8671, 0.8669, 0.8667, 0.8665, 0.8667, 0.8667, 0.8669, 0.8669, 0.8668",\
                 "1.034, 1.034, 1.034, 1.033, 1.033, 1.033, 1.033, 1.033, 1.033, 1.033",\
                 "1.232, 1.232, 1.232, 1.231, 1.231, 1.232, 1.232, 1.232, 1.232, 1.232");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.3241, 0.3241, 0.3244, 0.3247, 0.3255, 0.3272, 0.3304, 0.3352, 0.3376, 0.3439",\
                 "0.3236, 0.3236, 0.3235, 0.3243, 0.3248, 0.3272, 0.3284, 0.3332, 0.3381, 0.3434",\
                 "0.3317, 0.332, 0.3315, 0.3318, 0.3325, 0.3342, 0.3374, 0.3422, 0.3446, 0.3509",\
                 "0.3619, 0.362, 0.3628, 0.3629, 0.3642, 0.3647, 0.3689, 0.3717, 0.3761, 0.3819",\
                 "0.4232, 0.4235, 0.4226, 0.4263, 0.4264, 0.4272, 0.4304, 0.4332, 0.4381, 0.4419",\
                 "0.5221, 0.5224, 0.5226, 0.5214, 0.5268, 0.5277, 0.5309, 0.5322, 0.5366, 0.5429",\
                 "0.6615, 0.6619, 0.6624, 0.6613, 0.6622, 0.6687, 0.6709, 0.6727, 0.6756, 0.6794",\
                 "0.8448, 0.8449, 0.8454, 0.8452, 0.8445, 0.8462, 0.8559, 0.8597, 0.8621, 0.8634",\
                 "1.073, 1.073, 1.074, 1.074, 1.073, 1.073, 1.076, 1.088, 1.095, 1.097",\
                 "1.348, 1.348, 1.349, 1.35, 1.349, 1.348, 1.349, 1.357, 1.371, 1.377");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.7569, 0.7506, 0.7444, 0.742, 0.7421, 0.7427, 0.7428, 0.7426, 0.7427, 0.7427",\
                 "0.7537, 0.747, 0.7404, 0.7385, 0.7383, 0.7389, 0.7391, 0.739, 0.7391, 0.7392",\
                 "0.7603, 0.7535, 0.7462, 0.7436, 0.7434, 0.7442, 0.744, 0.7439, 0.7441, 0.7442",\
                 "0.8136, 0.804, 0.7903, 0.7837, 0.7815, 0.7804, 0.7806, 0.7803, 0.7797, 0.7798",\
                 "0.9231, 0.9089, 0.8867, 0.8724, 0.8654, 0.862, 0.8602, 0.8592, 0.8585, 0.858",\
                 "1.085, 1.067, 1.036, 1.014, 1.001, 0.9935, 0.99, 0.9876, 0.9861, 0.985",\
                 "1.304, 1.283, 1.243, 1.213, 1.193, 1.181, 1.174, 1.17, 1.167, 1.165",\
                 "1.584, 1.56, 1.512, 1.472, 1.444, 1.427, 1.416, 1.409, 1.405, 1.402",\
                 "1.927, 1.9, 1.844, 1.795, 1.759, 1.735, 1.719, 1.71, 1.703, 1.698",\
                 "2.336, 2.307, 2.243, 2.184, 2.139, 2.107, 2.087, 2.073, 2.063, 2.057");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.3242, 0.3289, 0.3402, 0.3521, 0.3616, 0.3688, 0.3731, 0.3799, 0.3858, 0.392",\
                 "0.322, 0.326, 0.3374, 0.3493, 0.3587, 0.3648, 0.3701, 0.3769, 0.3813, 0.394",\
                 "0.3222, 0.3256, 0.3339, 0.3449, 0.3542, 0.3618, 0.3696, 0.3739, 0.3803, 0.387",\
                 "0.3477, 0.3479, 0.352, 0.3591, 0.3685, 0.3758, 0.3841, 0.3884, 0.3958, 0.402",\
                 "0.4128, 0.4096, 0.4074, 0.413, 0.4181, 0.4248, 0.4326, 0.4404, 0.4458, 0.4515",\
                 "0.5301, 0.524, 0.5152, 0.5106, 0.5172, 0.5208, 0.5271, 0.5324, 0.5398, 0.5445",\
                 "0.7057, 0.6951, 0.6788, 0.667, 0.6651, 0.6703, 0.6756, 0.6774, 0.6828, 0.689",\
                 "0.9415, 0.9261, 0.9025, 0.8858, 0.8715, 0.8703, 0.8791, 0.8824, 0.8873, 0.8865",\
                 "1.239, 1.22, 1.187, 1.161, 1.143, 1.134, 1.133, 1.141, 1.142, 1.146",\
                 "1.601, 1.577, 1.537, 1.502, 1.475, 1.457, 1.452, 1.449, 1.461, 1.469");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.243, 0.251, 0.278, 0.337, 0.432, 0.553, 0.697, 0.861, 1.048, \
                 1.256");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.244, 0.25, 0.279, 0.338, 0.421, 0.524, 0.647, 0.788, 0.95, 1.134");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.1381, 0.1637, 0.2296, 0.3239, 0.443, 0.5917, 0.777, 1.006, 1.284, 1.614",\
                 "0.1438, 0.1694, 0.2351, 0.3294, 0.4486, 0.5972, 0.7825, 1.011, 1.289, 1.62",\
                 "0.1662, 0.1916, 0.2572, 0.3511, 0.4701, 0.6187, 0.804, 1.033, 1.311, 1.641",\
                 "0.1969, 0.2242, 0.2917, 0.3858, 0.5049, 0.6536, 0.8387, 1.068, 1.345, 1.676",\
                 "0.212, 0.2422, 0.3146, 0.4107, 0.53, 0.6785, 0.8637, 1.092, 1.37, 1.701",\
                 "0.2093, 0.2407, 0.3141, 0.4101, 0.5293, 0.6777, 0.8625, 1.091, 1.369, 1.699",\
                 "0.1874, 0.2198, 0.2938, 0.3899, 0.5091, 0.6571, 0.8418, 1.07, 1.347, 1.678",\
                 "0.1459, 0.1793, 0.2541, 0.3508, 0.4699, 0.618, 0.8027, 1.031, 1.308, 1.638",\
                 "0.0844, 0.119, 0.1948, 0.292, 0.4114, 0.5595, 0.7441, 0.9725, 1.25, 1.58",\
                 "0.0025, 0.0372, 0.1146, 0.2122, 0.332, 0.4802, 0.665, 0.8934, 1.171, 1.501");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.1386, 0.1657, 0.2352, 0.3442, 0.5055, 0.7305, 1.026, 1.399, 1.855, 2.398",\
                 "0.1436, 0.1707, 0.2401, 0.3491, 0.5104, 0.7354, 1.031, 1.404, 1.86, 2.403",\
                 "0.1616, 0.1889, 0.2586, 0.3677, 0.529, 0.754, 1.05, 1.423, 1.878, 2.422",\
                 "0.1814, 0.2121, 0.2854, 0.3955, 0.5569, 0.7819, 1.078, 1.451, 1.907, 2.45",\
                 "0.187, 0.2231, 0.3042, 0.4173, 0.5795, 0.8044, 1.101, 1.473, 1.929, 2.472",\
                 "0.1739, 0.2163, 0.3089, 0.4278, 0.5912, 0.8165, 1.112, 1.485, 1.94, 2.484",\
                 "0.14, 0.1889, 0.2956, 0.4235, 0.5906, 0.8167, 1.113, 1.485, 1.94, 2.483",\
                 "0.084, 0.1404, 0.2617, 0.4017, 0.5739, 0.8033, 1.1, 1.473, 1.928, 2.47",\
                 "0.0041, 0.0687, 0.2056, 0.3602, 0.5392, 0.7725, 1.074, 1.448, 1.903, 2.445",\
                 "-0.1018, -0.0278, 0.1255, 0.2968, 0.4845, 0.7222, 1.028, 1.406, 1.864, 2.406");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.06944, 0.0943, 0.1656, 0.2739, 0.4231, 0.6319, 0.9184, 1.287, 1.743, 2.292",\
                 "0.06922, 0.09424, 0.1657, 0.2739, 0.423, 0.6323, 0.9189, 1.287, 1.745, 2.293",\
                 "0.06826, 0.09332, 0.1648, 0.2732, 0.4227, 0.6327, 0.9171, 1.288, 1.745, 2.293",\
                 "0.07542, 0.09968, 0.1671, 0.2732, 0.4225, 0.6322, 0.9168, 1.288, 1.744, 2.293",\
                 "0.08434, 0.1103, 0.1767, 0.277, 0.4232, 0.6329, 0.9172, 1.288, 1.745, 2.293",\
                 "0.0907, 0.115, 0.1781, 0.277, 0.4236, 0.6308, 0.9148, 1.286, 1.744, 2.293",\
                 "0.095, 0.1182, 0.1796, 0.2776, 0.4232, 0.631, 0.914, 1.282, 1.741, 2.29",\
                 "0.098, 0.1218, 0.1812, 0.2786, 0.423, 0.6308, 0.9144, 1.283, 1.739, 2.287",\
                 "0.1028, 0.1248, 0.1828, 0.28, 0.4238, 0.631, 0.9146, 1.283, 1.739, 2.287",\
                 "0.1066, 0.1284, 0.1854, 0.2814, 0.4252, 0.6326, 0.9162, 1.284, 1.741, 2.287");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.07382, 0.1017, 0.1885, 0.3575, 0.6363, 1.034, 1.56, 2.222, 3.032, 3.998",\
                 "0.07384, 0.1019, 0.1886, 0.3575, 0.636, 1.033, 1.56, 2.222, 3.032, 3.998",\
                 "0.07476, 0.1024, 0.1888, 0.3576, 0.6361, 1.033, 1.56, 2.223, 3.028, 3.998",\
                 "0.0856, 0.1124, 0.1939, 0.3589, 0.636, 1.034, 1.56, 2.223, 3.032, 3.997",\
                 "0.1014, 0.1295, 0.2058, 0.3646, 0.6379, 1.035, 1.561, 2.223, 3.032, 3.996",\
                 "0.1206, 0.1509, 0.2259, 0.3746, 0.641, 1.036, 1.558, 2.221, 3.031, 3.997",\
                 "0.1424, 0.175, 0.253, 0.3908, 0.6492, 1.039, 1.56, 2.223, 3.031, 3.99",\
                 "0.167, 0.2006, 0.285, 0.4146, 0.6642, 1.048, 1.565, 2.222, 3.027, 3.988",\
                 "0.1962, 0.2298, 0.3194, 0.4442, 0.6822, 1.063, 1.578, 2.23, 3.03, 3.995",\
                 "0.2296, 0.2632, 0.356, 0.4796, 0.7026, 1.082, 1.598, 2.249, 3.041, 3.994");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.2085, 0.2333, 0.2996, 0.3958, 0.5161, 0.6653, 0.8508, 1.08, 1.357, 1.688",\
                 "0.2137, 0.2386, 0.3049, 0.4011, 0.5213, 0.6705, 0.856, 1.085, 1.363, 1.693",\
                 "0.2388, 0.2635, 0.3296, 0.4258, 0.5462, 0.6953, 0.8808, 1.11, 1.387, 1.718",\
                 "0.2922, 0.3165, 0.3822, 0.4782, 0.5989, 0.7481, 0.9337, 1.162, 1.44, 1.771",\
                 "0.3675, 0.3924, 0.4587, 0.5561, 0.6777, 0.8274, 1.013, 1.242, 1.519, 1.85",\
                 "0.4626, 0.489, 0.5579, 0.6575, 0.7814, 0.9326, 1.119, 1.348, 1.625, 1.956",\
                 "0.5734, 0.6019, 0.6761, 0.782, 0.9119, 1.066, 1.253, 1.483, 1.76, 2.091",\
                 "0.699, 0.73, 0.8096, 0.9237, 1.065, 1.228, 1.419, 1.65, 1.928, 2.258",\
                 "0.8406, 0.874, 0.9595, 1.081, 1.235, 1.412, 1.615, 1.851, 2.13, 2.46",\
                 "0.9985, 1.034, 1.126, 1.255, 1.419, 1.613, 1.833, 2.083, 2.368, 2.699");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.1981, 0.2262, 0.2975, 0.4085, 0.5713, 0.7971, 1.093, 1.467, 1.923, 2.466",\
                 "0.2021, 0.23, 0.3013, 0.4123, 0.5749, 0.8009, 1.097, 1.471, 1.925, 2.468",\
                 "0.2168, 0.2445, 0.3153, 0.426, 0.5891, 0.8151, 1.112, 1.485, 1.94, 2.484",\
                 "0.236, 0.2635, 0.3342, 0.4446, 0.6073, 0.8337, 1.131, 1.504, 1.959, 2.503",\
                 "0.2514, 0.2793, 0.3511, 0.4621, 0.6248, 0.8508, 1.148, 1.52, 1.977, 2.52",\
                 "0.2572, 0.2862, 0.3616, 0.4751, 0.638, 0.8637, 1.16, 1.533, 1.99, 2.533",\
                 "0.2492, 0.2801, 0.3596, 0.4783, 0.645, 0.8714, 1.168, 1.54, 1.996, 2.54",\
                 "0.2268, 0.2593, 0.3433, 0.4677, 0.6398, 0.8716, 1.169, 1.542, 1.997, 2.539",\
                 "0.1884, 0.2234, 0.3116, 0.4417, 0.6203, 0.8591, 1.163, 1.538, 1.993, 2.535",\
                 "0.1349, 0.1719, 0.2648, 0.4003, 0.5847, 0.8302, 1.144, 1.526, 1.984, 2.526");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.07216, 0.09792, 0.1704, 0.2782, 0.426, 0.6338, 0.9193, 1.288, 1.745, 2.293",\
                 "0.07218, 0.09788, 0.1705, 0.2779, 0.4259, 0.6342, 0.9195, 1.288, 1.745, 2.293",\
                 "0.07236, 0.0983, 0.1707, 0.2785, 0.4265, 0.6337, 0.9196, 1.288, 1.745, 2.293",\
                 "0.07492, 0.1008, 0.173, 0.2804, 0.4275, 0.635, 0.9201, 1.287, 1.745, 2.293",\
                 "0.08218, 0.1078, 0.1795, 0.2873, 0.4319, 0.6372, 0.921, 1.288, 1.743, 2.291",\
                 "0.0944, 0.1196, 0.1904, 0.2978, 0.4412, 0.644, 0.924, 1.29, 1.745, 2.293",\
                 "0.109, 0.137, 0.21, 0.3212, 0.46, 0.6546, 0.9294, 1.291, 1.747, 2.294",\
                 "0.1242, 0.1554, 0.2328, 0.3526, 0.4998, 0.6854, 0.9454, 1.299, 1.749, 2.294",\
                 "0.141, 0.174, 0.2564, 0.3858, 0.549, 0.7432, 0.9906, 1.323, 1.757, 2.296",\
                 "0.1588, 0.1948, 0.2812, 0.4186, 0.6, 0.8116, 1.066, 1.382, 1.792, 2.309");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.008, 0.01434, 0.03661, 0.07913, 0.1454, 0.2383, 0.3606, 0.5147, 0.7028, 0.927");
          values("0.07314, 0.1007, 0.1867, 0.357, 0.6354, 1.035, 1.56, 2.221, 3.031, 3.997",\
                 "0.0734, 0.1004, 0.1868, 0.3568, 0.6356, 1.034, 1.56, 2.221, 3.027, 3.991",\
                 "0.07308, 0.1007, 0.1872, 0.3568, 0.636, 1.033, 1.559, 2.221, 3.029, 3.997",\
                 "0.07472, 0.1029, 0.1887, 0.3572, 0.6359, 1.033, 1.559, 2.222, 3.027, 3.997",\
                 "0.07864, 0.1081, 0.1937, 0.3603, 0.6376, 1.036, 1.56, 2.221, 3.032, 3.996",\
                 "0.0872, 0.117, 0.2043, 0.3674, 0.639, 1.036, 1.56, 2.223, 3.029, 3.997",\
                 "0.0978, 0.1282, 0.219, 0.3828, 0.6504, 1.039, 1.56, 2.22, 3.026, 3.991",\
                 "0.1106, 0.142, 0.2348, 0.402, 0.672, 1.057, 1.568, 2.222, 3.027, 3.989",\
                 "0.1244, 0.1574, 0.2526, 0.4226, 0.6976, 1.087, 1.592, 2.234, 3.03, 3.993",\
                 "0.1396, 0.1738, 0.2702, 0.4434, 0.7226, 1.119, 1.631, 2.265, 3.048, 3.995");
        }
      }
    }
  }

