/*
 * 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_12) {
    area : 100.979200 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.08067, 0.0792, 0.07889, 0.08092, 0.08512, 0.0917, 0.1008, 0.1127, \
                  0.1278, 0.1464");
        }

        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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.212, 0.2102, 0.2089, 0.2108, 0.2165, 0.2261, 0.2404, 0.2603, \
                  0.2865, 0.3189");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.07495, 0.0748, 0.07454, 0.07453, 0.07464, 0.07483, 0.07482, \
                  0.07479, 0.07479, 0.07479");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.07462, -0.07439, -0.07448, -0.07445, -0.07445, -0.07455, -0.07464, \
                  -0.07464, -0.07466, -0.07464");
        }
      }
    }

    pin(Z) {
      capacitance : 0.02358 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 4.137 ;
      max_transition : 11 ;
      min_capacitance : 0.02458 ;
      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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.3808, 0.3808, 0.3809, 0.3807, 0.3807, 0.3808, 0.3809, 0.3811, 0.3808, 0.3809",\
                 "0.381, 0.3811, 0.3811, 0.3808, 0.3808, 0.3808, 0.3809, 0.3809, 0.381, 0.381",\
                 "0.3832, 0.3834, 0.3834, 0.3832, 0.3832, 0.3833, 0.3833, 0.3834, 0.3834, 0.3834",\
                 "0.3874, 0.3873, 0.3873, 0.3871, 0.387, 0.3871, 0.3871, 0.3872, 0.3872, 0.3872",\
                 "0.3945, 0.3944, 0.3944, 0.3942, 0.3941, 0.3941, 0.3942, 0.3943, 0.3943, 0.3943",\
                 "0.4043, 0.4043, 0.4042, 0.4042, 0.4042, 0.4042, 0.4041, 0.4042, 0.4042, 0.4042",\
                 "0.4175, 0.4176, 0.4176, 0.4174, 0.4174, 0.4174, 0.4175, 0.4175, 0.4175, 0.4175",\
                 "0.4345, 0.4345, 0.4345, 0.4344, 0.4343, 0.4343, 0.4343, 0.4345, 0.4344, 0.4343",\
                 "0.4551, 0.455, 0.4552, 0.455, 0.4549, 0.4549, 0.4549, 0.4549, 0.455, 0.455",\
                 "0.4795, 0.4795, 0.4795, 0.4792, 0.4791, 0.4791, 0.4791, 0.4792, 0.4792, 0.4792");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.3459, 0.3471, 0.3457, 0.3462, 0.349, 0.3525, 0.3591, 0.3633, 0.379, 0.4994",\
                 "0.3451, 0.3452, 0.3459, 0.345, 0.3484, 0.3516, 0.3585, 0.3645, 0.3779, 0.5068",\
                 "0.3443, 0.3461, 0.3453, 0.345, 0.3481, 0.3516, 0.3579, 0.3621, 0.3806, 0.5229",\
                 "0.3457, 0.3465, 0.3462, 0.345, 0.3487, 0.3516, 0.3588, 0.3657, 0.385, 0.5372",\
                 "0.3498, 0.3496, 0.3512, 0.3522, 0.3559, 0.3576, 0.3648, 0.3702, 0.3888, 0.5852",\
                 "0.3586, 0.3587, 0.3597, 0.3603, 0.3646, 0.366, 0.3723, 0.3795, 0.407, 0.6473",\
                 "0.3717, 0.372, 0.3735, 0.372, 0.3745, 0.3813, 0.3834, 0.3874, 0.4236, 0.7494",\
                 "0.3901, 0.3904, 0.3929, 0.3921, 0.3907, 0.3975, 0.4065, 0.4076, 0.46, 0.9354",\
                 "0.4136, 0.4139, 0.4159, 0.4158, 0.4165, 0.4161, 0.4248, 0.4412, 0.5353, 1.24",\
                 "0.4431, 0.4435, 0.4466, 0.4464, 0.4471, 0.444, 0.4482, 0.4695, 0.658, 1.816");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.6352, 0.6448, 0.6585, 0.6661, 0.6694, 0.671, 0.672, 0.6726, 0.673, 0.6733",\
                 "0.6272, 0.6373, 0.6511, 0.6587, 0.662, 0.6637, 0.6646, 0.6652, 0.6656, 0.6658",\
                 "0.6205, 0.6287, 0.6418, 0.6503, 0.6546, 0.6569, 0.6582, 0.6589, 0.6595, 0.6598",\
                 "0.6205, 0.6272, 0.6401, 0.6493, 0.6553, 0.6586, 0.6607, 0.662, 0.6628, 0.6632",\
                 "0.6364, 0.6423, 0.6538, 0.6635, 0.6703, 0.6746, 0.6773, 0.679, 0.6801, 0.6809",\
                 "0.6705, 0.6748, 0.6848, 0.6945, 0.7016, 0.7065, 0.7098, 0.712, 0.7134, 0.7144",\
                 "0.722, 0.7258, 0.7347, 0.7435, 0.751, 0.7564, 0.7599, 0.7626, 0.7642, 0.7654",\
                 "0.7927, 0.796, 0.804, 0.8125, 0.8196, 0.8252, 0.8292, 0.8324, 0.8344, 0.8357",\
                 "0.8833, 0.8863, 0.8939, 0.902, 0.909, 0.9146, 0.9187, 0.9219, 0.9245, 0.9261",\
                 "0.9949, 0.9978, 1.005, 1.013, 1.02, 1.026, 1.03, 1.033, 1.036, 1.038");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.3372, 0.346, 0.3588, 0.3651, 0.3705, 0.377, 0.3809, 0.3899, 0.4018, 0.5335",\
                 "0.3317, 0.3397, 0.3522, 0.3597, 0.3657, 0.371, 0.3785, 0.3869, 0.4003, 0.53",\
                 "0.3208, 0.3265, 0.3385, 0.3465, 0.3552, 0.3626, 0.3704, 0.3767, 0.3926, 0.5335",\
                 "0.3161, 0.3212, 0.3301, 0.3393, 0.348, 0.3554, 0.3653, 0.3719, 0.3933, 0.5469",\
                 "0.3224, 0.3267, 0.3352, 0.3459, 0.3561, 0.3626, 0.374, 0.3806, 0.4007, 0.5849",\
                 "0.3419, 0.346, 0.3528, 0.3615, 0.3735, 0.3797, 0.3899, 0.3971, 0.422, 0.6397",\
                 "0.3775, 0.3808, 0.3875, 0.3921, 0.4014, 0.4172, 0.4253, 0.433, 0.4646, 0.7484",\
                 "0.4307, 0.4329, 0.4395, 0.444, 0.4515, 0.458, 0.4823, 0.4856, 0.5257, 0.9295",\
                 "0.5018, 0.5048, 0.5105, 0.5139, 0.5208, 0.5255, 0.5411, 0.5677, 0.6376, 1.214",\
                 "0.5949, 0.5969, 0.6019, 0.6063, 0.612, 0.6161, 0.6218, 0.6425, 0.7954, 1.726");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.836, 0.866, 0.962, 1.15, 1.451, 1.844, 2.267, 2.714, 3.199, \
                  3.726");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.634, 0.655, 0.749, 0.92, 1.122, 1.354, 1.621, 1.935, 2.291, \
                  2.697");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.5014, 0.6064, 0.8352, 1.115, 1.443, 1.835, 2.311, 2.893, 3.595, 4.429",\
                 "0.5253, 0.6304, 0.8592, 1.138, 1.466, 1.858, 2.335, 2.916, 3.619, 4.453",\
                 "0.6103, 0.7154, 0.9441, 1.224, 1.552, 1.944, 2.421, 3.002, 3.704, 4.539",\
                 "0.7582, 0.8642, 1.094, 1.375, 1.702, 2.094, 2.571, 3.152, 3.855, 4.689",\
                 "0.8865, 0.9979, 1.23, 1.511, 1.839, 2.231, 2.708, 3.289, 3.991, 4.826",\
                 "0.9322, 1.043, 1.276, 1.557, 1.885, 2.277, 2.754, 3.335, 4.037, 4.872",\
                 "0.9295, 1.041, 1.274, 1.555, 1.884, 2.276, 2.752, 3.333, 4.034, 4.869",\
                 "0.8862, 0.9985, 1.232, 1.513, 1.842, 2.233, 2.71, 3.291, 3.992, 4.827",\
                 "0.8035, 0.9155, 1.151, 1.432, 1.761, 2.153, 2.629, 3.211, 3.913, 4.747",\
                 "0.6786, 0.7917, 1.027, 1.31, 1.639, 2.031, 2.508, 3.089, 3.791, 4.625");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.5077, 0.5987, 0.8067, 1.12, 1.582, 2.228, 3.077, 4.147, 5.452, 7.01",\
                 "0.5301, 0.6211, 0.8292, 1.142, 1.605, 2.25, 3.099, 4.171, 5.476, 7.035",\
                 "0.6087, 0.6997, 0.9077, 1.221, 1.683, 2.329, 3.179, 4.247, 5.556, 7.11",\
                 "0.7506, 0.8435, 1.053, 1.366, 1.829, 2.475, 3.324, 4.392, 5.698, 7.257",\
                 "0.8984, 1.008, 1.236, 1.554, 2.017, 2.662, 3.512, 4.583, 5.89, 7.448",\
                 "1.009, 1.138, 1.394, 1.725, 2.19, 2.834, 3.682, 4.752, 6.058, 7.615",\
                 "1.081, 1.229, 1.516, 1.864, 2.332, 2.977, 3.824, 4.893, 6.201, 7.758",\
                 "1.116, 1.282, 1.602, 1.97, 2.443, 3.088, 3.936, 5.004, 6.308, 7.866",\
                 "1.112, 1.296, 1.649, 2.042, 2.522, 3.167, 4.014, 5.082, 6.387, 7.941",\
                 "1.064, 1.268, 1.656, 2.077, 2.568, 3.214, 4.06, 5.128, 6.432, 7.987");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.2299, 0.3232, 0.5184, 0.7764, 1.137, 1.643, 2.336, 3.245, 4.378, 5.747",\
                 "0.23, 0.3236, 0.5185, 0.7768, 1.137, 1.642, 2.336, 3.244, 4.377, 5.746",\
                 "0.2298, 0.3234, 0.5186, 0.7778, 1.137, 1.644, 2.336, 3.245, 4.379, 5.744",\
                 "0.2356, 0.327, 0.5204, 0.7782, 1.138, 1.643, 2.335, 3.244, 4.377, 5.746",\
                 "0.2626, 0.3454, 0.5262, 0.7808, 1.139, 1.644, 2.337, 3.243, 4.377, 5.746",\
                 "0.263, 0.346, 0.5268, 0.782, 1.138, 1.642, 2.334, 3.244, 4.379, 5.745",\
                 "0.2636, 0.3466, 0.5274, 0.7812, 1.139, 1.643, 2.333, 3.24, 4.376, 5.745",\
                 "0.2646, 0.3476, 0.5282, 0.7828, 1.14, 1.643, 2.335, 3.241, 4.374, 5.742",\
                 "0.2656, 0.3488, 0.5306, 0.783, 1.14, 1.643, 2.336, 3.242, 4.374, 5.741",\
                 "0.2676, 0.3508, 0.5324, 0.785, 1.142, 1.646, 2.336, 3.244, 4.378, 5.742");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.1883, 0.2657, 0.4943, 0.9571, 1.728, 2.831, 4.285, 6.122, 8.365, 11.03",\
                 "0.1883, 0.2651, 0.4948, 0.9576, 1.728, 2.83, 4.287, 6.117, 8.361, 11.02",\
                 "0.1885, 0.2662, 0.4958, 0.9558, 1.726, 2.829, 4.281, 6.123, 8.364, 11.04",\
                 "0.196, 0.2702, 0.498, 0.9578, 1.728, 2.83, 4.285, 6.123, 8.366, 11.03",\
                 "0.2412, 0.315, 0.5212, 0.9632, 1.726, 2.826, 4.287, 6.116, 8.352, 11.04",\
                 "0.288, 0.3702, 0.5702, 0.9868, 1.732, 2.829, 4.279, 6.12, 8.366, 11.03",\
                 "0.3342, 0.4262, 0.627, 1.016, 1.743, 2.831, 4.285, 6.116, 8.344, 11.02",\
                 "0.3796, 0.481, 0.6914, 1.054, 1.755, 2.836, 4.282, 6.115, 8.344, 11.02",\
                 "0.4276, 0.5372, 0.7566, 1.103, 1.773, 2.84, 4.286, 6.108, 8.341, 11",\
                 "0.4768, 0.5974, 0.8314, 1.16, 1.797, 2.85, 4.287, 6.112, 8.34, 11");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.6262, 0.7323, 0.9587, 1.235, 1.561, 1.952, 2.428, 3.009, 3.712, 4.546",\
                 "0.645, 0.7511, 0.9775, 1.254, 1.58, 1.971, 2.447, 3.028, 3.731, 4.565",\
                 "0.7252, 0.8313, 1.058, 1.336, 1.662, 2.053, 2.529, 3.111, 3.813, 4.648",\
                 "0.8656, 0.9737, 1.203, 1.483, 1.81, 2.201, 2.678, 3.26, 3.962, 4.797",\
                 "1.034, 1.147, 1.385, 1.669, 1.999, 2.391, 2.868, 3.45, 4.152, 4.987",\
                 "1.233, 1.35, 1.594, 1.884, 2.218, 2.614, 3.092, 3.674, 4.377, 5.212",\
                 "1.476, 1.596, 1.846, 2.139, 2.477, 2.875, 3.356, 3.94, 4.643, 5.478",\
                 "1.772, 1.897, 2.152, 2.45, 2.79, 3.19, 3.672, 4.257, 4.962, 5.798",\
                 "2.119, 2.251, 2.517, 2.823, 3.167, 3.569, 4.053, 4.638, 5.344, 6.181",\
                 "2.512, 2.652, 2.938, 3.258, 3.612, 4.02, 4.506, 5.093, 5.798, 6.635");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.6178, 0.7082, 0.9161, 1.23, 1.693, 2.34, 3.189, 4.261, 5.567, 7.126",\
                 "0.6317, 0.7222, 0.9299, 1.244, 1.707, 2.354, 3.202, 4.275, 5.58, 7.133",\
                 "0.6773, 0.7676, 0.9759, 1.291, 1.755, 2.402, 3.252, 4.324, 5.628, 7.189",\
                 "0.7247, 0.8158, 1.025, 1.34, 1.805, 2.452, 3.303, 4.374, 5.681, 7.24",\
                 "0.7531, 0.8459, 1.058, 1.376, 1.842, 2.489, 3.34, 4.411, 5.719, 7.276",\
                 "0.7643, 0.8589, 1.074, 1.393, 1.86, 2.508, 3.358, 4.428, 5.738, 7.297",\
                 "0.7587, 0.8561, 1.074, 1.395, 1.862, 2.511, 3.362, 4.433, 5.739, 7.3",\
                 "0.7266, 0.8288, 1.056, 1.381, 1.849, 2.497, 3.348, 4.42, 5.725, 7.282",\
                 "0.6594, 0.7692, 1.008, 1.344, 1.817, 2.465, 3.316, 4.387, 5.694, 7.251",\
                 "0.5554, 0.673, 0.9255, 1.276, 1.76, 2.413, 3.265, 4.336, 5.643, 7.199");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.214, 0.3064, 0.5024, 0.7658, 1.131, 1.638, 2.335, 3.242, 4.377, 5.748",\
                 "0.2141, 0.3063, 0.5028, 0.7672, 1.13, 1.638, 2.335, 3.242, 4.377, 5.748",\
                 "0.2156, 0.3079, 0.5034, 0.7664, 1.13, 1.638, 2.335, 3.242, 4.378, 5.745",\
                 "0.2234, 0.3146, 0.508, 0.7706, 1.131, 1.641, 2.334, 3.244, 4.378, 5.745",\
                 "0.2414, 0.3328, 0.5236, 0.7794, 1.137, 1.644, 2.337, 3.244, 4.38, 5.745",\
                 "0.2582, 0.3478, 0.5376, 0.7944, 1.151, 1.651, 2.341, 3.246, 4.38, 5.743",\
                 "0.2728, 0.3614, 0.549, 0.8044, 1.161, 1.663, 2.351, 3.253, 4.381, 5.748",\
                 "0.2886, 0.3758, 0.5618, 0.8134, 1.169, 1.669, 2.357, 3.26, 4.39, 5.753",\
                 "0.3102, 0.398, 0.584, 0.8322, 1.183, 1.679, 2.363, 3.265, 4.394, 5.756",\
                 "0.338, 0.4288, 0.6234, 0.8686, 1.211, 1.7, 2.374, 3.272, 4.4, 5.762");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02458, 0.05297, 0.1526, 0.3429, 0.6394, 1.055, 1.603, 2.292, 3.134, 4.137");
          values("0.1714, 0.2507, 0.4882, 0.9544, 1.727, 2.829, 4.287, 6.113, 8.356, 11.03",\
                 "0.1715, 0.2509, 0.4872, 0.9548, 1.727, 2.831, 4.287, 6.119, 8.367, 11.04",\
                 "0.1744, 0.2536, 0.4896, 0.9554, 1.728, 2.829, 4.281, 6.115, 8.363, 11.03",\
                 "0.1794, 0.257, 0.4908, 0.9544, 1.727, 2.827, 4.287, 6.118, 8.363, 11.03",\
                 "0.1844, 0.263, 0.4972, 0.9594, 1.726, 2.826, 4.287, 6.119, 8.352, 11.04",\
                 "0.1888, 0.269, 0.5032, 0.9628, 1.731, 2.828, 4.282, 6.119, 8.356, 11.02",\
                 "0.1972, 0.2764, 0.5084, 0.9682, 1.734, 2.832, 4.281, 6.111, 8.348, 11.02",\
                 "0.211, 0.2926, 0.5242, 0.9752, 1.737, 2.832, 4.284, 6.111, 8.338, 11.02",\
                 "0.2292, 0.3136, 0.5484, 0.9988, 1.747, 2.837, 4.283, 6.112, 8.341, 11.01",\
                 "0.2492, 0.3366, 0.5786, 1.034, 1.774, 2.848, 4.287, 6.114, 8.342, 11");
        }
      }
    }
  }

