/*
 * 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.0099044" ;
    }

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.2815, 0.2815, 0.2965, 0.3414, 0.4209, 0.5381, 0.7065, 0.9412, \
                  1.241, 1.607");
        }

        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.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.4503, 0.4507, 0.4714, 0.5362, 0.6584, 0.8467, 1.108, 1.447, \
                  1.869, 2.376");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.09566, 0.09552, 0.0954, 0.09528, 0.09541, 0.09514, 0.0954, 0.09529, \
                  0.09536, 0.09535");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("-0.09489, -0.0951, -0.09492, -0.09484, -0.09495, -0.09495, -0.09505, \
                  -0.09488, -0.09502, -0.09515");
        }
      }
    }

    pin(Z) {
      capacitance : 0.006935 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.8823 ;
      max_transition : 3.4 ;
      min_capacitance : 0.007935 ;
      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.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.558, 0.5528, 0.544, 0.5384, 0.5351, 0.533, 0.5317, 0.5305, 0.5295, 0.5289",\
                 "0.5602, 0.5551, 0.5464, 0.5409, 0.5378, 0.5356, 0.5342, 0.5328, 0.532, 0.5313",\
                 "0.5792, 0.5746, 0.5668, 0.5621, 0.5592, 0.5574, 0.5563, 0.5553, 0.5544, 0.5539",\
                 "0.6213, 0.6182, 0.6127, 0.6101, 0.6089, 0.6081, 0.6076, 0.6071, 0.6068, 0.6064",\
                 "0.7014, 0.6998, 0.6976, 0.6968, 0.6963, 0.6962, 0.6962, 0.6959, 0.6959, 0.6958",\
                 "0.8278, 0.8276, 0.8271, 0.8262, 0.8265, 0.8264, 0.8262, 0.8263, 0.8264, 0.8263",\
                 "1.002, 1.001, 1, 0.9999, 0.9999, 1, 1, 1, 1, 1",\
                 "1.221, 1.221, 1.221, 1.22, 1.22, 1.22, 1.22, 1.221, 1.22, 1.221",\
                 "1.489, 1.489, 1.489, 1.489, 1.489, 1.489, 1.489, 1.489, 1.489, 1.489",\
                 "1.808, 1.808, 1.809, 1.808, 1.808, 1.808, 1.808, 1.808, 1.808, 1.809");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.4066, 0.4038, 0.4008, 0.4015, 0.4015, 0.4037, 0.4074, 0.41, 0.4181, 0.4228",\
                 "0.4077, 0.4044, 0.4015, 0.4021, 0.4028, 0.4037, 0.408, 0.4133, 0.417, 0.425",\
                 "0.4224, 0.4201, 0.4169, 0.4174, 0.4174, 0.4197, 0.4234, 0.4265, 0.4341, 0.4387",\
                 "0.4715, 0.4705, 0.4696, 0.4686, 0.4706, 0.4725, 0.4762, 0.4799, 0.4852, 0.4904",\
                 "0.5718, 0.5717, 0.5696, 0.5734, 0.5752, 0.5759, 0.5807, 0.5855, 0.5886, 0.5944",\
                 "0.7335, 0.7336, 0.7336, 0.7315, 0.7373, 0.7403, 0.7435, 0.7472, 0.7514, 0.7561",\
                 "0.9599, 0.9598, 0.961, 0.9587, 0.9601, 0.9686, 0.9734, 0.9771, 0.9813, 0.9871",\
                 "1.255, 1.257, 1.257, 1.258, 1.254, 1.26, 1.269, 1.277, 1.281, 1.285",\
                 "1.623, 1.625, 1.626, 1.627, 1.625, 1.626, 1.631, 1.643, 1.655, 1.659",\
                 "2.067, 2.068, 2.071, 2.073, 2.071, 2.071, 2.073, 2.081, 2.096, 2.11");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.974, 0.9603, 0.9383, 0.9252, 0.9181, 0.9137, 0.9107, 0.909, 0.9076, 0.9067",\
                 "0.9712, 0.9572, 0.9353, 0.9217, 0.9147, 0.9105, 0.9076, 0.9057, 0.9042, 0.9033",\
                 "0.9871, 0.9725, 0.9486, 0.9351, 0.9271, 0.9221, 0.9194, 0.9175, 0.9156, 0.9147",\
                 "1.073, 1.056, 1.024, 1.004, 0.9926, 0.9854, 0.9813, 0.9783, 0.9763, 0.9752",\
                 "1.255, 1.233, 1.188, 1.155, 1.135, 1.122, 1.114, 1.109, 1.105, 1.103",\
                 "1.532, 1.504, 1.447, 1.398, 1.366, 1.345, 1.331, 1.322, 1.315, 1.311",\
                 "1.908, 1.877, 1.807, 1.74, 1.693, 1.661, 1.639, 1.624, 1.614, 1.606",\
                 "2.387, 2.353, 2.27, 2.186, 2.122, 2.076, 2.044, 2.022, 2.005, 1.994",\
                 "2.972, 2.934, 2.842, 2.741, 2.657, 2.596, 2.552, 2.521, 2.497, 2.48",\
                 "3.669, 3.628, 3.527, 3.409, 3.306, 3.226, 3.169, 3.126, 3.094, 3.07");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.4266, 0.4242, 0.4267, 0.4377, 0.4473, 0.4546, 0.4626, 0.4707, 0.4755, 0.4824",\
                 "0.424, 0.4213, 0.4238, 0.4348, 0.4433, 0.4518, 0.4593, 0.4669, 0.4744, 0.4796",\
                 "0.43, 0.4263, 0.4265, 0.4353, 0.4434, 0.4518, 0.4593, 0.4674, 0.4761, 0.4796",\
                 "0.4863, 0.4785, 0.4709, 0.4712, 0.4765, 0.4837, 0.4912, 0.5015, 0.508, 0.5132",\
                 "0.6134, 0.6005, 0.582, 0.5759, 0.574, 0.5767, 0.5842, 0.5912, 0.5987, 0.6061",\
                 "0.8293, 0.8111, 0.7798, 0.7587, 0.7536, 0.7505, 0.7503, 0.754, 0.7582, 0.7656",\
                 "1.141, 1.118, 1.074, 1.037, 1.016, 1.008, 1.004, 1.003, 1.006, 1.008",\
                 "1.553, 1.524, 1.467, 1.416, 1.378, 1.356, 1.35, 1.346, 1.343, 1.341",\
                 "2.067, 2.034, 1.964, 1.897, 1.845, 1.81, 1.788, 1.78, 1.778, 1.773",\
                 "2.686, 2.65, 2.567, 2.486, 2.419, 2.368, 2.328, 2.308, 2.303, 2.297");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.227, 0.233, 0.256, 0.307, 0.391, 0.501, 0.631, 0.78, 0.949, \
                  1.138");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.227, 0.232, 0.258, 0.308, 0.381, 0.471, 0.577, 0.7, 0.842, 1.001");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.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.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.1152, 0.1372, 0.1932, 0.2749, 0.3813, 0.5148, 0.681, 0.8859, 1.134, 1.43",\
                 "0.1194, 0.1415, 0.1974, 0.279, 0.3854, 0.5189, 0.685, 0.8899, 1.138, 1.434",\
                 "0.1357, 0.1576, 0.2134, 0.2948, 0.4012, 0.5346, 0.7008, 0.9056, 1.154, 1.45",\
                 "0.1541, 0.1778, 0.2359, 0.3182, 0.4247, 0.5583, 0.7246, 0.9296, 1.178, 1.474",\
                 "0.1582, 0.1845, 0.2478, 0.3339, 0.4413, 0.575, 0.7413, 0.9462, 1.195, 1.49",\
                 "0.1462, 0.175, 0.2414, 0.3283, 0.4359, 0.5693, 0.7352, 0.94, 1.189, 1.484",\
                 "0.1173, 0.1485, 0.2171, 0.3048, 0.4125, 0.5459, 0.7118, 0.9162, 1.164, 1.46",\
                 "0.0704, 0.1042, 0.1756, 0.2645, 0.3726, 0.5062, 0.6721, 0.8767, 1.125, 1.42",\
                 "0.0042, 0.041, 0.1163, 0.2065, 0.3155, 0.4494, 0.6155, 0.82, 1.068, 1.363",\
                 "-0.0821, -0.0421, 0.0375, 0.1296, 0.2394, 0.3738, 0.54, 0.7447, 0.9928, 1.288");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.1194, 0.1435, 0.2047, 0.2975, 0.4304, 0.614, 0.8552, 1.158, 1.529, 1.971",\
                 "0.1227, 0.1468, 0.208, 0.3008, 0.4336, 0.6171, 0.8584, 1.163, 1.533, 1.976",\
                 "0.1343, 0.1589, 0.2206, 0.3135, 0.4464, 0.63, 0.8709, 1.175, 1.545, 1.988",\
                 "0.1433, 0.1712, 0.2371, 0.3316, 0.4649, 0.6486, 0.8895, 1.194, 1.563, 2.007",\
                 "0.1365, 0.1699, 0.2447, 0.3437, 0.4784, 0.6624, 0.9032, 1.208, 1.578, 2.021",\
                 "0.109, 0.1491, 0.2366, 0.3439, 0.4821, 0.6669, 0.9082, 1.212, 1.582, 2.025",\
                 "0.05759, 0.1063, 0.2087, 0.3278, 0.4719, 0.6601, 0.9026, 1.207, 1.577, 2.02",\
                 "-0.0201, 0.0395, 0.159, 0.2934, 0.4459, 0.639, 0.8852, 1.191, 1.562, 2.003",\
                 "-0.1274, -0.0544, 0.0854, 0.238, 0.4009, 0.5997, 0.8511, 1.162, 1.535, 1.977",\
                 "-0.2668, -0.1782, -0.0134, 0.1597, 0.3365, 0.5419, 0.7989, 1.115, 1.493, 1.939");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.06668, 0.08614, 0.1462, 0.2468, 0.3872, 0.5815, 0.843, 1.181, 1.601, 2.104",\
                 "0.0658, 0.08564, 0.1461, 0.2466, 0.3869, 0.5811, 0.843, 1.181, 1.601, 2.101",\
                 "0.0645, 0.08474, 0.1454, 0.2457, 0.3867, 0.5816, 0.8435, 1.18, 1.601, 2.102",\
                 "0.07132, 0.0907, 0.1483, 0.247, 0.3875, 0.5813, 0.8438, 1.181, 1.601, 2.103",\
                 "0.08006, 0.1004, 0.1598, 0.2539, 0.389, 0.5818, 0.8437, 1.18, 1.601, 2.101",\
                 "0.08946, 0.109, 0.1649, 0.2555, 0.3896, 0.5807, 0.842, 1.18, 1.601, 2.104",\
                 "0.09922, 0.1176, 0.1692, 0.257, 0.3902, 0.5806, 0.8408, 1.178, 1.598, 2.102",\
                 "0.1098, 0.1268, 0.1734, 0.2596, 0.3918, 0.5822, 0.8412, 1.178, 1.596, 2.099",\
                 "0.1234, 0.1372, 0.18, 0.2632, 0.3938, 0.583, 0.8434, 1.179, 1.597, 2.098",\
                 "0.1368, 0.1504, 0.1878, 0.267, 0.3964, 0.5844, 0.8426, 1.179, 1.597, 2.1");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.0705, 0.09554, 0.1703, 0.3114, 0.5435, 0.8763, 1.321, 1.877, 2.559, 3.37",\
                 "0.07052, 0.09556, 0.1703, 0.3112, 0.5424, 0.8766, 1.318, 1.878, 2.557, 3.375",\
                 "0.07232, 0.09658, 0.1713, 0.3115, 0.5435, 0.8766, 1.319, 1.879, 2.558, 3.369",\
                 "0.0821, 0.1063, 0.1772, 0.3138, 0.5431, 0.8763, 1.318, 1.879, 2.558, 3.369",\
                 "0.0994, 0.1243, 0.1921, 0.3219, 0.5473, 0.8767, 1.321, 1.878, 2.558, 3.373",\
                 "0.1235, 0.1472, 0.2159, 0.3378, 0.554, 0.8807, 1.319, 1.879, 2.56, 3.375",\
                 "0.1534, 0.1765, 0.2469, 0.361, 0.569, 0.8904, 1.325, 1.88, 2.561, 3.368",\
                 "0.193, 0.2148, 0.2822, 0.393, 0.5904, 0.9082, 1.338, 1.886, 2.564, 3.376",\
                 "0.2396, 0.261, 0.3238, 0.433, 0.6172, 0.9274, 1.359, 1.904, 2.573, 3.377",\
                 "0.2924, 0.316, 0.372, 0.4804, 0.6512, 0.953, 1.385, 1.931, 2.595, 3.391");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.1779, 0.1984, 0.2535, 0.3353, 0.4422, 0.5758, 0.7421, 0.947, 1.195, 1.491",\
                 "0.1819, 0.2024, 0.2575, 0.3392, 0.4461, 0.5798, 0.746, 0.9509, 1.199, 1.495",\
                 "0.202, 0.2224, 0.2773, 0.3589, 0.4658, 0.5995, 0.7657, 0.9706, 1.219, 1.515",\
                 "0.2466, 0.2666, 0.3211, 0.4025, 0.5093, 0.643, 0.8093, 1.014, 1.263, 1.558",\
                 "0.3115, 0.3324, 0.3881, 0.4701, 0.5775, 0.7114, 0.8777, 1.082, 1.33, 1.626",\
                 "0.3903, 0.4133, 0.4735, 0.5599, 0.6703, 0.806, 0.9728, 1.177, 1.425, 1.721",\
                 "0.4812, 0.5063, 0.5721, 0.6659, 0.7852, 0.9274, 1.097, 1.303, 1.55, 1.845",\
                 "0.5846, 0.612, 0.6829, 0.7845, 0.914, 1.07, 1.25, 1.459, 1.708, 2.002",\
                 "0.7007, 0.73, 0.8065, 0.9162, 1.056, 1.225, 1.423, 1.645, 1.899, 2.194",\
                 "0.8305, 0.8619, 0.9444, 1.061, 1.21, 1.393, 1.608, 1.85, 2.12, 2.421");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.1778, 0.2013, 0.2625, 0.3563, 0.4904, 0.6748, 0.9166, 1.221, 1.592, 2.034",\
                 "0.1802, 0.2035, 0.2647, 0.3585, 0.4926, 0.6768, 0.9188, 1.223, 1.593, 2.036",\
                 "0.1898, 0.213, 0.2738, 0.3672, 0.5012, 0.6855, 0.9274, 1.232, 1.602, 2.045",\
                 "0.2048, 0.2274, 0.2872, 0.3803, 0.5139, 0.6981, 0.9399, 1.243, 1.615, 2.058",\
                 "0.216, 0.2394, 0.3005, 0.3939, 0.5274, 0.7114, 0.9526, 1.257, 1.627, 2.07",\
                 "0.2163, 0.2411, 0.3063, 0.4041, 0.5395, 0.7236, 0.9644, 1.268, 1.639, 2.081",\
                 "0.2035, 0.2304, 0.3001, 0.4033, 0.5449, 0.733, 0.9744, 1.277, 1.648, 2.09",\
                 "0.1777, 0.2065, 0.2812, 0.3903, 0.5388, 0.7341, 0.9818, 1.286, 1.656, 2.097",\
                 "0.138, 0.169, 0.2487, 0.3638, 0.519, 0.7227, 0.9796, 1.292, 1.664, 2.105",\
                 "0.0846, 0.1177, 0.2023, 0.3236, 0.4855, 0.697, 0.9631, 1.286, 1.667, 2.111");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.06664, 0.089, 0.1497, 0.2498, 0.3895, 0.5831, 0.8441, 1.182, 1.599, 2.103",\
                 "0.06658, 0.08898, 0.1495, 0.2497, 0.3897, 0.5829, 0.8435, 1.182, 1.601, 2.102",\
                 "0.06736, 0.08936, 0.1499, 0.2496, 0.39, 0.583, 0.8443, 1.181, 1.601, 2.104",\
                 "0.06986, 0.09154, 0.1525, 0.2521, 0.3911, 0.5841, 0.8447, 1.181, 1.601, 2.102",\
                 "0.0797, 0.1018, 0.1604, 0.2579, 0.396, 0.5868, 0.846, 1.182, 1.601, 2.102",\
                 "0.09508, 0.1184, 0.1797, 0.2748, 0.4094, 0.5958, 0.8496, 1.185, 1.602, 2.104",\
                 "0.112, 0.1384, 0.2044, 0.3052, 0.443, 0.6194, 0.8638, 1.19, 1.603, 2.104",\
                 "0.1302, 0.1584, 0.2314, 0.3406, 0.49, 0.6748, 0.9036, 1.21, 1.611, 2.107",\
                 "0.151, 0.1808, 0.26, 0.3766, 0.5376, 0.7426, 0.9798, 1.268, 1.64, 2.117",\
                 "0.1728, 0.2048, 0.2874, 0.4136, 0.5878, 0.8112, 1.072, 1.367, 1.718, 2.159");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007935, 0.01397, 0.03516, 0.07561, 0.1386, 0.2271, 0.3434, 0.4901, 0.669, 0.8823");
          values("0.06812, 0.09416, 0.1695, 0.3105, 0.5422, 0.876, 1.32, 1.878, 2.56, 3.374",\
                 "0.0684, 0.09412, 0.1689, 0.311, 0.5425, 0.8762, 1.321, 1.876, 2.558, 3.369",\
                 "0.06788, 0.0937, 0.1691, 0.3112, 0.5423, 0.8766, 1.318, 1.878, 2.557, 3.374",\
                 "0.0697, 0.09488, 0.1708, 0.3113, 0.5429, 0.8769, 1.318, 1.878, 2.559, 3.369",\
                 "0.07676, 0.1026, 0.1768, 0.3157, 0.5447, 0.8765, 1.321, 1.877, 2.557, 3.369",\
                 "0.08706, 0.1144, 0.1907, 0.3293, 0.5519, 0.88, 1.32, 1.88, 2.559, 3.37",\
                 "0.09912, 0.1284, 0.2078, 0.3498, 0.5738, 0.8932, 1.325, 1.879, 2.561, 3.371",\
                 "0.1142, 0.1438, 0.2274, 0.373, 0.603, 0.9256, 1.348, 1.888, 2.563, 3.375",\
                 "0.1294, 0.1612, 0.2484, 0.3976, 0.633, 0.9646, 1.389, 1.919, 2.577, 3.375",\
                 "0.1472, 0.18, 0.2706, 0.4226, 0.664, 1.004, 1.441, 1.973, 2.619, 3.399");
        }
      }
    }
  }

