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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.02753, 0.02715, 0.0267, 0.02657, 0.02657, 0.0267, 0.02694, 0.02729, \
                 0.0278, 0.02848");
        }

        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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.04079, 0.04029, 0.03942, 0.03879, 0.03848, 0.03848, 0.03878, \
                 0.03936, 0.04023, 0.0414");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.004101, 0.004102, 0.004099, 0.004096, 0.004106, 0.004104, 0.004104, \
                 0.004102, 0.004104, 0.004102");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.004081, -0.004085, -0.00408, -0.004082, -0.004098, -0.004093, \
                 -0.004094, -0.004092, -0.004094, -0.004093");
        }
      }
    }

    pin(Z) {
      capacitance : 0.003832 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.4031 ;
      max_transition : 12 ;
      min_capacitance : 0.004832 ;
      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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.03544, 0.03544, 0.03543, 0.03541, 0.03541, 0.03541, 0.03542, 0.03542, 0.03542, 0.03543",\
                 "0.03553, 0.03555, 0.03555, 0.03551, 0.0355, 0.0355, 0.0355, 0.03551, 0.03551, 0.03552",\
                 "0.03598, 0.03599, 0.03599, 0.03598, 0.03597, 0.03597, 0.03597, 0.03598, 0.03599, 0.03599",\
                 "0.03631, 0.03629, 0.03628, 0.03627, 0.03629, 0.03627, 0.0363, 0.0363, 0.03631, 0.03629",\
                 "0.03668, 0.03669, 0.03668, 0.03666, 0.03666, 0.03666, 0.03667, 0.03667, 0.03667, 0.03668",\
                 "0.03718, 0.03719, 0.03719, 0.03718, 0.03718, 0.03717, 0.03717, 0.03717, 0.03718, 0.03718",\
                 "0.03792, 0.03792, 0.03791, 0.0379, 0.0379, 0.03789, 0.0379, 0.03789, 0.0379, 0.03791",\
                 "0.03885, 0.03885, 0.03884, 0.03883, 0.03883, 0.03883, 0.03884, 0.03884, 0.03884, 0.03884",\
                 "0.04001, 0.04001, 0.03999, 0.03998, 0.03999, 0.03997, 0.03998, 0.03998, 0.03999, 0.03999",\
                 "0.04139, 0.0414, 0.04139, 0.04138, 0.04138, 0.04138, 0.04138, 0.04139, 0.04139, 0.04139");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.02462, 0.02462, 0.02466, 0.02466, 0.02474, 0.02489, 0.02501, 0.02548, 0.0259, 0.03265",\
                 "0.02445, 0.02444, 0.02444, 0.02451, 0.02461, 0.0247, 0.02479, 0.02512, 0.02557, 0.0328",\
                 "0.02403, 0.02401, 0.02405, 0.02407, 0.02413, 0.02426, 0.02436, 0.02459, 0.02521, 0.03339",\
                 "0.0236, 0.02361, 0.02361, 0.02364, 0.02371, 0.02387, 0.02425, 0.02431, 0.02536, 0.03437",\
                 "0.02337, 0.02335, 0.02342, 0.0234, 0.02351, 0.02367, 0.02384, 0.02395, 0.02535, 0.0363",\
                 "0.02347, 0.02346, 0.02341, 0.02345, 0.02364, 0.02374, 0.0238, 0.02426, 0.02589, 0.04096",\
                 "0.02379, 0.02384, 0.02382, 0.02381, 0.02384, 0.02421, 0.02418, 0.0243, 0.0268, 0.04618",\
                 "0.02442, 0.02449, 0.02445, 0.02441, 0.02438, 0.02457, 0.02506, 0.02517, 0.02897, 0.05671",\
                 "0.02536, 0.02543, 0.02539, 0.02538, 0.02546, 0.02533, 0.02575, 0.02682, 0.03369, 0.07546",\
                 "0.0266, 0.02662, 0.02669, 0.02668, 0.02666, 0.02653, 0.02656, 0.02822, 0.04227, 0.1083");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.05558, 0.05581, 0.05635, 0.05685, 0.05719, 0.05739, 0.05752, 0.0576, 0.05765, 0.05769",\
                 "0.05539, 0.05562, 0.05616, 0.05666, 0.057, 0.0572, 0.05733, 0.0574, 0.05746, 0.05749",\
                 "0.05505, 0.05529, 0.05583, 0.05633, 0.05667, 0.05688, 0.057, 0.05708, 0.05714, 0.05717",\
                 "0.05476, 0.05497, 0.05548, 0.05596, 0.0563, 0.05653, 0.05666, 0.05675, 0.05682, 0.05686",\
                 "0.05452, 0.0547, 0.05514, 0.0556, 0.05596, 0.05622, 0.05639, 0.05651, 0.05659, 0.05664",\
                 "0.05441, 0.05456, 0.05494, 0.05538, 0.05575, 0.05604, 0.05625, 0.05639, 0.05648, 0.05656",\
                 "0.0545, 0.05461, 0.05495, 0.05533, 0.05571, 0.05601, 0.05624, 0.05641, 0.05652, 0.05661",\
                 "0.05477, 0.05485, 0.05512, 0.05547, 0.05583, 0.05614, 0.05639, 0.05656, 0.05669, 0.05679",\
                 "0.05523, 0.05528, 0.05547, 0.05577, 0.05611, 0.05642, 0.05668, 0.05687, 0.05702, 0.05712",\
                 "0.05586, 0.0559, 0.05605, 0.0563, 0.05659, 0.05687, 0.05714, 0.05734, 0.05749, 0.05761");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.02689, 0.0271, 0.02765, 0.02812, 0.02849, 0.02881, 0.02903, 0.02945, 0.03039, 0.03869",\
                 "0.02676, 0.02705, 0.02758, 0.02806, 0.02844, 0.02874, 0.0291, 0.02918, 0.02989, 0.03806",\
                 "0.02656, 0.02676, 0.02724, 0.02775, 0.02819, 0.02847, 0.02898, 0.02891, 0.03028, 0.03812",\
                 "0.02614, 0.02631, 0.02672, 0.02722, 0.02761, 0.02816, 0.02833, 0.02892, 0.03009, 0.03929",\
                 "0.02585, 0.026, 0.02632, 0.02681, 0.02721, 0.02766, 0.02817, 0.02834, 0.03058, 0.04182",\
                 "0.02564, 0.02577, 0.026, 0.0265, 0.02698, 0.02739, 0.0277, 0.02832, 0.02997, 0.04738",\
                 "0.02558, 0.02572, 0.02599, 0.02629, 0.02685, 0.0273, 0.0277, 0.02839, 0.03135, 0.05423",\
                 "0.02564, 0.02579, 0.02607, 0.02627, 0.02669, 0.02724, 0.02772, 0.02822, 0.03323, 0.06639",\
                 "0.0259, 0.026, 0.02631, 0.02662, 0.02682, 0.02722, 0.02797, 0.02921, 0.03792, 0.08857",\
                 "0.02636, 0.02646, 0.02671, 0.02698, 0.02732, 0.02773, 0.02786, 0.03045, 0.04918, 0.1285");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.385, 0.423, 0.546, 0.784, 1.107, 1.458, 1.839, 2.25, 2.691, \
                 3.168");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.621, 0.646, 0.76, 1.001, 1.331, 1.695, 2.089, 2.51, 2.96, 3.444");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.7124, 0.7822, 0.9523, 1.177, 1.45, 1.777, 2.172, 2.648, 3.218, 3.892",\
                 "0.7465, 0.8172, 0.9873, 1.211, 1.485, 1.812, 2.207, 2.682, 3.252, 3.926",\
                 "0.8565, 0.9266, 1.097, 1.322, 1.594, 1.922, 2.316, 2.792, 3.362, 4.036",\
                 "1.041, 1.109, 1.276, 1.499, 1.771, 2.098, 2.493, 2.968, 3.538, 4.213",\
                 "1.229, 1.295, 1.459, 1.679, 1.949, 2.276, 2.67, 3.146, 3.715, 4.389",\
                 "1.364, 1.43, 1.594, 1.814, 2.084, 2.409, 2.801, 3.276, 3.845, 4.52",\
                 "1.463, 1.529, 1.694, 1.915, 2.184, 2.509, 2.902, 3.375, 3.943, 4.616",\
                 "1.529, 1.596, 1.76, 1.981, 2.251, 2.576, 2.969, 3.443, 4.011, 4.683",\
                 "1.561, 1.627, 1.791, 2.012, 2.283, 2.608, 3.001, 3.476, 4.044, 4.717",\
                 "1.556, 1.622, 1.787, 2.008, 2.278, 2.604, 2.997, 3.472, 4.041, 4.714");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.4832, 0.5499, 0.7443, 1.074, 1.573, 2.272, 3.192, 4.353, 5.769, 7.458",\
                 "0.5105, 0.5775, 0.7717, 1.101, 1.601, 2.3, 3.22, 4.379, 5.797, 7.477",\
                 "0.6085, 0.6751, 0.8694, 1.199, 1.699, 2.398, 3.318, 4.478, 5.891, 7.58",\
                 "0.7789, 0.8467, 1.042, 1.372, 1.872, 2.571, 3.491, 4.652, 6.067, 7.754",\
                 "0.9565, 1.028, 1.23, 1.564, 2.064, 2.763, 3.684, 4.84, 6.261, 7.94",\
                 "1.117, 1.195, 1.403, 1.741, 2.244, 2.945, 3.864, 5.022, 6.438, 8.12",\
                 "1.252, 1.338, 1.558, 1.899, 2.402, 3.104, 4.025, 5.183, 6.595, 8.279",\
                 "1.355, 1.451, 1.686, 2.033, 2.537, 3.238, 4.159, 5.319, 6.732, 8.417",\
                 "1.424, 1.53, 1.783, 2.138, 2.643, 3.343, 4.264, 5.424, 6.839, 8.524",\
                 "1.454, 1.571, 1.846, 2.212, 2.719, 3.419, 4.34, 5.498, 6.913, 8.599");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.2958, 0.3445, 0.4818, 0.701, 1.014, 1.442, 2.017, 2.761, 3.697, 4.838",\
                 "0.2965, 0.3449, 0.4822, 0.7016, 1.014, 1.443, 2.016, 2.764, 3.7, 4.838",\
                 "0.295, 0.344, 0.4816, 0.7014, 1.014, 1.442, 2.017, 2.761, 3.697, 4.838",\
                 "0.2818, 0.3332, 0.4742, 0.6962, 1.011, 1.44, 2.013, 2.762, 3.701, 4.834",\
                 "0.2714, 0.3232, 0.4654, 0.6898, 1.005, 1.438, 2.014, 2.761, 3.697, 4.838",\
                 "0.2716, 0.323, 0.4664, 0.6898, 1.001, 1.429, 2.009, 2.76, 3.696, 4.836",\
                 "0.2716, 0.3238, 0.4662, 0.6904, 1.005, 1.433, 2.006, 2.75, 3.69, 4.831",\
                 "0.2716, 0.3236, 0.4664, 0.691, 1.006, 1.433, 2.007, 2.755, 3.688, 4.816",\
                 "0.2716, 0.3234, 0.4668, 0.6912, 1.006, 1.435, 2.009, 2.755, 3.69, 4.82",\
                 "0.2716, 0.3234, 0.4668, 0.6902, 1.006, 1.435, 2.01, 2.756, 3.692, 4.822");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.2332, 0.3114, 0.5737, 1.094, 1.938, 3.136, 4.718, 6.709, 9.114, 12.01",\
                 "0.2331, 0.3115, 0.573, 1.094, 1.937, 3.132, 4.705, 6.708, 9.146, 11.99",\
                 "0.2333, 0.3107, 0.5735, 1.095, 1.938, 3.132, 4.706, 6.71, 9.107, 12",\
                 "0.2386, 0.315, 0.5752, 1.093, 1.938, 3.135, 4.718, 6.713, 9.114, 12.01",\
                 "0.2576, 0.3322, 0.5892, 1.102, 1.939, 3.134, 4.711, 6.695, 9.146, 12.02",\
                 "0.288, 0.3582, 0.6048, 1.112, 1.946, 3.134, 4.707, 6.706, 9.13, 12.02",\
                 "0.325, 0.394, 0.6264, 1.119, 1.95, 3.143, 4.716, 6.693, 9.13, 12.03",\
                 "0.3666, 0.4358, 0.657, 1.131, 1.953, 3.144, 4.717, 6.697, 9.124, 12",\
                 "0.4102, 0.4832, 0.6922, 1.148, 1.955, 3.143, 4.717, 6.701, 9.118, 12.01",\
                 "0.4554, 0.533, 0.7394, 1.17, 1.964, 3.148, 4.72, 6.702, 9.122, 12");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("1.258, 1.331, 1.505, 1.732, 2.005, 2.333, 2.728, 3.204, 3.774, 4.448",\
                 "1.291, 1.364, 1.538, 1.765, 2.038, 2.366, 2.761, 3.237, 3.807, 4.481",\
                 "1.413, 1.486, 1.66, 1.887, 2.16, 2.488, 2.883, 3.359, 3.929, 4.603",\
                 "1.653, 1.726, 1.899, 2.126, 2.4, 2.728, 3.123, 3.599, 4.169, 4.843",\
                 "2.028, 2.101, 2.275, 2.503, 2.776, 3.105, 3.499, 3.975, 4.545, 5.22",\
                 "2.523, 2.599, 2.777, 3.008, 3.283, 3.612, 4.008, 4.484, 5.054, 5.729",\
                 "3.074, 3.157, 3.348, 3.588, 3.87, 4.204, 4.601, 5.079, 5.649, 6.324",\
                 "3.661, 3.753, 3.957, 4.209, 4.503, 4.846, 5.25, 5.73, 6.301, 6.976",\
                 "4.281, 4.382, 4.603, 4.868, 5.173, 5.525, 5.936, 6.421, 6.996, 7.672",\
                 "4.931, 5.046, 5.285, 5.564, 5.88, 6.243, 6.662, 7.153, 7.73, 8.408");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.7541, 0.8219, 1.019, 1.353, 1.855, 2.556, 3.475, 4.639, 6.056, 7.743",\
                 "0.7833, 0.8513, 1.049, 1.382, 1.885, 2.586, 3.507, 4.665, 6.081, 7.768",\
                 "0.8863, 0.954, 1.151, 1.484, 1.987, 2.688, 3.61, 4.767, 6.18, 7.875",\
                 "1.073, 1.141, 1.337, 1.671, 2.174, 2.875, 3.797, 4.96, 6.369, 8.065",\
                 "1.308, 1.378, 1.578, 1.913, 2.416, 3.118, 4.041, 5.2, 6.613, 8.308",\
                 "1.544, 1.619, 1.828, 2.168, 2.673, 3.374, 4.296, 5.458, 6.875, 8.564",\
                 "1.768, 1.85, 2.07, 2.415, 2.922, 3.624, 4.546, 5.706, 7.122, 8.809",\
                 "1.97, 2.061, 2.294, 2.647, 3.155, 3.858, 4.78, 5.94, 7.354, 9.045",\
                 "2.143, 2.243, 2.494, 2.857, 3.367, 4.07, 4.992, 6.152, 7.567, 9.252",\
                 "2.284, 2.393, 2.663, 3.037, 3.553, 4.256, 5.177, 6.337, 7.751, 9.437");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.298, 0.344, 0.4778, 0.698, 1.011, 1.44, 2.016, 2.761, 3.696, 4.838",\
                 "0.298, 0.3442, 0.4782, 0.6976, 1.01, 1.441, 2.013, 2.761, 3.696, 4.838",\
                 "0.298, 0.3436, 0.4778, 0.6978, 1.011, 1.439, 2.016, 2.763, 3.701, 4.832",\
                 "0.2986, 0.3442, 0.4784, 0.6978, 1.01, 1.44, 2.015, 2.761, 3.697, 4.837",\
                 "0.3018, 0.3476, 0.4804, 0.6988, 1.012, 1.439, 2.016, 2.764, 3.702, 4.836",\
                 "0.3238, 0.3656, 0.492, 0.7066, 1.017, 1.442, 2.015, 2.765, 3.703, 4.833",\
                 "0.3714, 0.4066, 0.5262, 0.735, 1.037, 1.457, 2.026, 2.768, 3.701, 4.838",\
                 "0.431, 0.4562, 0.5666, 0.774, 1.075, 1.492, 2.052, 2.785, 3.711, 4.842",\
                 "0.5052, 0.5178, 0.6128, 0.814, 1.118, 1.53, 2.084, 2.81, 3.728, 4.848",\
                 "0.6, 0.592, 0.664, 0.862, 1.164, 1.574, 2.122, 2.84, 3.746, 4.862");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004832, 0.007581, 0.01723, 0.03566, 0.06436, 0.1046, 0.1576, 0.2244, 0.3059, 0.4031");
          values("0.2235, 0.3019, 0.5678, 1.091, 1.935, 3.136, 4.712, 6.713, 9.124, 12.04",\
                 "0.223, 0.3024, 0.5678, 1.091, 1.938, 3.133, 4.716, 6.69, 9.116, 11.99",\
                 "0.2236, 0.302, 0.568, 1.092, 1.937, 3.135, 4.718, 6.695, 9.129, 12.01",\
                 "0.2254, 0.3044, 0.569, 1.093, 1.935, 3.136, 4.707, 6.712, 9.128, 12.01",\
                 "0.2386, 0.3158, 0.5756, 1.095, 1.938, 3.134, 4.718, 6.691, 9.126, 12.01",\
                 "0.2612, 0.3384, 0.5954, 1.104, 1.938, 3.135, 4.713, 6.705, 9.12, 12.03",\
                 "0.2882, 0.3668, 0.6182, 1.118, 1.948, 3.133, 4.704, 6.698, 9.135, 12.03",\
                 "0.3228, 0.4016, 0.6484, 1.134, 1.95, 3.141, 4.707, 6.694, 9.108, 12.02",\
                 "0.3622, 0.4432, 0.6854, 1.154, 1.958, 3.144, 4.711, 6.69, 9.116, 11.99",\
                 "0.4024, 0.4888, 0.7264, 1.181, 1.97, 3.148, 4.716, 6.694, 9.11, 12");
        }
      }
    }
  }

