/*
 * 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_8) {
    area : 74.636800 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.1808, 0.1788, 0.1814, 0.1941, 0.2169, 0.2505, 0.2967, 0.3563, \
                  0.4322, 0.5309");
        }

        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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.3864, 0.3837, 0.386, 0.4025, 0.4381, 0.4943, 0.5738, 0.679, \
                  0.8121, 0.9735");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.1204, 0.1201, 0.1199, 0.1197, 0.1199, 0.1197, 0.1202, 0.12, \
                  0.12, 0.12");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.1197, -0.1196, -0.1196, -0.1194, -0.1197, -0.1194, -0.1197, \
                  -0.1198, -0.1198, -0.1197");
        }
      }
    }

    pin(Z) {
      capacitance : 0.01453 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 1.957 ;
      max_transition : 5 ;
      min_capacitance : 0.01553 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.5961, 0.5961, 0.5962, 0.5958, 0.5958, 0.5959, 0.596, 0.5962, 0.5962, 0.5963",\
                 "0.5963, 0.5963, 0.5963, 0.5958, 0.596, 0.5961, 0.5962, 0.5962, 0.5963, 0.5965",\
                 "0.6038, 0.6038, 0.6036, 0.6035, 0.6035, 0.6036, 0.6037, 0.6038, 0.6039, 0.6039",\
                 "0.6222, 0.6218, 0.6216, 0.6213, 0.6212, 0.6213, 0.6214, 0.6214, 0.6216, 0.6216",\
                 "0.6526, 0.6525, 0.6524, 0.6522, 0.652, 0.652, 0.6522, 0.6523, 0.6524, 0.6524",\
                 "0.6964, 0.6966, 0.6966, 0.6964, 0.6964, 0.6962, 0.6963, 0.6963, 0.6964, 0.6964",\
                 "0.7551, 0.7548, 0.755, 0.7549, 0.7546, 0.7547, 0.7547, 0.7546, 0.7548, 0.7548",\
                 "0.8296, 0.8293, 0.8294, 0.829, 0.8288, 0.8289, 0.8291, 0.8291, 0.829, 0.829",\
                 "0.9195, 0.9195, 0.9197, 0.9193, 0.919, 0.9192, 0.9193, 0.9193, 0.9195, 0.9196",\
                 "1.027, 1.027, 1.027, 1.027, 1.026, 1.026, 1.026, 1.027, 1.026, 1.027");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.5164, 0.5164, 0.5181, 0.5169, 0.5177, 0.5211, 0.5287, 0.5364, 0.5439, 0.5524",\
                 "0.5155, 0.5154, 0.5167, 0.5165, 0.5164, 0.5189, 0.5273, 0.5332, 0.5417, 0.5515",\
                 "0.5172, 0.5168, 0.5183, 0.5171, 0.5182, 0.5207, 0.5291, 0.535, 0.5435, 0.5528",\
                 "0.5292, 0.5288, 0.5297, 0.5288, 0.5299, 0.5328, 0.539, 0.5481, 0.5534, 0.5663",\
                 "0.5562, 0.5564, 0.5592, 0.5593, 0.56, 0.563, 0.5714, 0.5791, 0.5907, 0.5938",\
                 "0.6027, 0.6037, 0.6033, 0.6039, 0.6091, 0.608, 0.6164, 0.6241, 0.6294, 0.6433",\
                 "0.6713, 0.6723, 0.6728, 0.6712, 0.6739, 0.6818, 0.6853, 0.6894, 0.6956, 0.7045",\
                 "0.763, 0.7639, 0.7643, 0.7648, 0.7621, 0.7677, 0.782, 0.7888, 0.7928, 0.8025",\
                 "0.8786, 0.8799, 0.8799, 0.8821, 0.8813, 0.8807, 0.8878, 0.9099, 0.9125, 0.9163",\
                 "1.022, 1.021, 1.023, 1.024, 1.024, 1.022, 1.025, 1.038, 1.058, 1.069");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.9899, 0.9982, 1.018, 1.036, 1.045, 1.051, 1.054, 1.056, 1.057, 1.058",\
                 "0.9822, 0.9903, 1.011, 1.027, 1.037, 1.043, 1.046, 1.048, 1.049, 1.05",\
                 "0.9826, 0.9898, 1.008, 1.024, 1.034, 1.04, 1.043, 1.046, 1.047, 1.048",\
                 "1.021, 1.025, 1.036, 1.049, 1.06, 1.067, 1.071, 1.074, 1.076, 1.077",\
                 "1.104, 1.104, 1.109, 1.119, 1.129, 1.136, 1.141, 1.145, 1.147, 1.149",\
                 "1.233, 1.23, 1.232, 1.239, 1.248, 1.256, 1.262, 1.266, 1.269, 1.271",\
                 "1.413, 1.41, 1.408, 1.413, 1.421, 1.429, 1.435, 1.44, 1.443, 1.446",\
                 "1.65, 1.646, 1.643, 1.647, 1.653, 1.661, 1.668, 1.672, 1.676, 1.68",\
                 "1.949, 1.945, 1.939, 1.942, 1.948, 1.954, 1.961, 1.966, 1.971, 1.974",\
                 "2.312, 2.306, 2.3, 2.301, 2.306, 2.313, 2.319, 2.325, 2.329, 2.333");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.4978, 0.509, 0.5293, 0.5453, 0.5547, 0.5621, 0.5737, 0.5841, 0.5899, 0.6019",\
                 "0.4916, 0.5016, 0.5218, 0.5378, 0.5488, 0.5563, 0.567, 0.5783, 0.5894, 0.597",\
                 "0.4814, 0.4896, 0.5067, 0.5222, 0.5344, 0.5432, 0.5557, 0.5648, 0.5755, 0.5866",\
                 "0.486, 0.4924, 0.5072, 0.5212, 0.5349, 0.5459, 0.5607, 0.5706, 0.5822, 0.5992",\
                 "0.5233, 0.5293, 0.5432, 0.5576, 0.5709, 0.5828, 0.5989, 0.6102, 0.6214, 0.6379",\
                 "0.6054, 0.6107, 0.621, 0.6315, 0.6492, 0.6589, 0.675, 0.6899, 0.6997, 0.7171",\
                 "0.7376, 0.7416, 0.7511, 0.7573, 0.7734, 0.7916, 0.8059, 0.8168, 0.8302, 0.84",\
                 "0.9261, 0.93, 0.9359, 0.9453, 0.957, 0.9721, 0.9945, 1.007, 1.016, 1.023",\
                 "1.175, 1.18, 1.186, 1.191, 1.196, 1.209, 1.226, 1.257, 1.26, 1.266",\
                 "1.487, 1.491, 1.496, 1.502, 1.508, 1.515, 1.524, 1.544, 1.578, 1.593");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.454, 0.465, 0.499, 0.574, 0.696, 0.865, 1.056, 1.272, 1.518, \
                  1.791");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.38, 0.387, 0.425, 0.499, 0.596, 0.716, 0.86, 1.027, 1.217, 1.431");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.2286, 0.2698, 0.3709, 0.5075, 0.6742, 0.8773, 1.127, 1.432, 1.802, 2.242",\
                 "0.2368, 0.278, 0.379, 0.5156, 0.6826, 0.8856, 1.135, 1.441, 1.811, 2.251",\
                 "0.2682, 0.3092, 0.4102, 0.5468, 0.7133, 0.9166, 1.166, 1.472, 1.842, 2.282",\
                 "0.3201, 0.3622, 0.464, 0.6011, 0.7679, 0.9712, 1.221, 1.526, 1.896, 2.336",\
                 "0.363, 0.4104, 0.5202, 0.6607, 0.8288, 1.033, 1.282, 1.588, 1.958, 2.398",\
                 "0.3823, 0.4319, 0.5441, 0.6849, 0.8533, 1.057, 1.306, 1.612, 1.982, 2.422",\
                 "0.3776, 0.4277, 0.5401, 0.6812, 0.8498, 1.053, 1.302, 1.608, 1.978, 2.418",\
                 "0.3503, 0.4007, 0.5138, 0.6554, 0.8241, 1.028, 1.277, 1.582, 1.952, 2.392",\
                 "0.3011, 0.3519, 0.4659, 0.6081, 0.7774, 0.981, 1.231, 1.536, 1.906, 2.345",\
                 "0.2292, 0.2805, 0.3952, 0.5381, 0.7076, 0.9116, 1.161, 1.467, 1.836, 2.276");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.2444, 0.2868, 0.3861, 0.5308, 0.7399, 1.03, 1.412, 1.894, 2.483, 3.183",\
                 "0.252, 0.2944, 0.3935, 0.5384, 0.7475, 1.038, 1.42, 1.902, 2.49, 3.191",\
                 "0.2797, 0.3219, 0.4212, 0.566, 0.7751, 1.066, 1.448, 1.929, 2.517, 3.217",\
                 "0.3256, 0.3699, 0.4709, 0.6162, 0.8253, 1.116, 1.498, 1.98, 2.566, 3.266",\
                 "0.3629, 0.4148, 0.5267, 0.6763, 0.8859, 1.176, 1.558, 2.039, 2.628, 3.329",\
                 "0.3826, 0.4421, 0.5683, 0.725, 0.9364, 1.227, 1.609, 2.09, 2.677, 3.379",\
                 "0.3826, 0.4497, 0.5921, 0.7595, 0.9733, 1.264, 1.646, 2.126, 2.713, 3.416",\
                 "0.3608, 0.4358, 0.5953, 0.7772, 0.9956, 1.287, 1.668, 2.149, 2.736, 3.436",\
                 "0.3157, 0.3985, 0.5758, 0.7744, 1.001, 1.293, 1.675, 2.156, 2.743, 3.442",\
                 "0.2474, 0.3377, 0.5325, 0.7495, 0.9858, 1.282, 1.665, 2.146, 2.733, 3.432");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.1051, 0.1438, 0.2444, 0.3866, 0.5798, 0.8487, 1.216, 1.692, 2.287, 3.004",\
                 "0.1052, 0.1437, 0.2443, 0.3869, 0.5796, 0.8485, 1.216, 1.694, 2.287, 3.004",\
                 "0.1049, 0.144, 0.2443, 0.387, 0.5796, 0.8485, 1.215, 1.693, 2.288, 3.004",\
                 "0.1094, 0.1465, 0.2456, 0.3874, 0.58, 0.8486, 1.215, 1.693, 2.288, 3.003",\
                 "0.1259, 0.1657, 0.2605, 0.395, 0.5844, 0.851, 1.216, 1.693, 2.287, 3.004",\
                 "0.1352, 0.1742, 0.2648, 0.397, 0.5846, 0.8504, 1.215, 1.693, 2.289, 3.003",\
                 "0.1384, 0.1762, 0.2662, 0.3978, 0.5852, 0.8512, 1.215, 1.692, 2.287, 3.002",\
                 "0.1402, 0.1778, 0.2676, 0.3986, 0.5858, 0.8508, 1.216, 1.692, 2.285, 3.003",\
                 "0.142, 0.1796, 0.269, 0.4, 0.5872, 0.852, 1.216, 1.692, 2.286, 3",\
                 "0.1438, 0.1818, 0.271, 0.402, 0.5882, 0.8526, 1.216, 1.694, 2.287, 3.002");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.1096, 0.1449, 0.2487, 0.4523, 0.7967, 1.295, 1.954, 2.784, 3.804, 5.015",\
                 "0.1099, 0.145, 0.2491, 0.4531, 0.7965, 1.295, 1.954, 2.784, 3.804, 5.015",\
                 "0.1097, 0.1448, 0.2488, 0.4524, 0.7975, 1.294, 1.953, 2.787, 3.796, 5.008",\
                 "0.1171, 0.1501, 0.2514, 0.4536, 0.7975, 1.294, 1.954, 2.787, 3.8, 5.013",\
                 "0.1381, 0.1746, 0.2686, 0.4592, 0.7986, 1.294, 1.952, 2.782, 3.801, 5.005",\
                 "0.1582, 0.2002, 0.2946, 0.4728, 0.8018, 1.296, 1.953, 2.785, 3.801, 5.016",\
                 "0.1796, 0.2276, 0.3266, 0.4922, 0.8084, 1.297, 1.954, 2.782, 3.796, 5.011",\
                 "0.2022, 0.2558, 0.3648, 0.5192, 0.8186, 1.3, 1.953, 2.782, 3.796, 5.001",\
                 "0.2238, 0.284, 0.4042, 0.5552, 0.8378, 1.306, 1.957, 2.784, 3.793, 5",\
                 "0.2448, 0.3112, 0.4438, 0.5972, 0.8618, 1.318, 1.963, 2.785, 3.797, 4.999");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.2896, 0.3328, 0.4369, 0.5748, 0.7418, 0.9449, 1.194, 1.5, 1.87, 2.31",\
                 "0.296, 0.3392, 0.4434, 0.5814, 0.7484, 0.9515, 1.201, 1.507, 1.877, 2.317",\
                 "0.3262, 0.3693, 0.4734, 0.6116, 0.7785, 0.9819, 1.231, 1.537, 1.907, 2.347",\
                 "0.3846, 0.4277, 0.5321, 0.6712, 0.8393, 1.043, 1.292, 1.598, 1.968, 2.408",\
                 "0.4638, 0.508, 0.6151, 0.7566, 0.9259, 1.13, 1.38, 1.686, 2.057, 2.497",\
                 "0.5706, 0.6159, 0.725, 0.8688, 1.041, 1.246, 1.497, 1.803, 2.173, 2.614",\
                 "0.7013, 0.7507, 0.8664, 1.014, 1.189, 1.396, 1.648, 1.955, 2.326, 2.766",\
                 "0.8513, 0.9058, 1.033, 1.193, 1.375, 1.586, 1.84, 2.148, 2.518, 2.959",\
                 "1.019, 1.079, 1.219, 1.396, 1.595, 1.816, 2.074, 2.383, 2.755, 3.196",\
                 "1.205, 1.272, 1.425, 1.621, 1.842, 2.082, 2.351, 2.665, 3.037, 3.478");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.3109, 0.3536, 0.4536, 0.5998, 0.8098, 1.101, 1.483, 1.965, 2.554, 3.255",\
                 "0.3153, 0.358, 0.458, 0.6042, 0.8145, 1.106, 1.488, 1.97, 2.559, 3.26",\
                 "0.3318, 0.3743, 0.4742, 0.6205, 0.8308, 1.122, 1.505, 1.988, 2.576, 3.276",\
                 "0.3505, 0.3934, 0.4935, 0.64, 0.8507, 1.142, 1.526, 2.008, 2.596, 3.298",\
                 "0.3636, 0.4073, 0.5091, 0.6566, 0.8676, 1.16, 1.543, 2.025, 2.614, 3.316",\
                 "0.3728, 0.4188, 0.5236, 0.6723, 0.8839, 1.176, 1.559, 2.042, 2.631, 3.333",\
                 "0.3673, 0.4182, 0.5307, 0.6849, 0.8978, 1.19, 1.574, 2.056, 2.644, 3.346",\
                 "0.3432, 0.3997, 0.5227, 0.6864, 0.9056, 1.2, 1.583, 2.066, 2.654, 3.354",\
                 "0.2991, 0.3618, 0.4972, 0.6718, 0.9009, 1.203, 1.588, 2.071, 2.659, 3.36",\
                 "0.2366, 0.3052, 0.4529, 0.6394, 0.8804, 1.194, 1.588, 2.072, 2.661, 3.361");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.1041, 0.1421, 0.2413, 0.3838, 0.577, 0.8471, 1.215, 1.693, 2.287, 3.004",\
                 "0.1041, 0.1423, 0.2414, 0.3836, 0.5772, 0.8473, 1.214, 1.692, 2.287, 3.002",\
                 "0.1049, 0.1432, 0.2422, 0.3838, 0.5774, 0.8471, 1.214, 1.692, 2.288, 3.004",\
                 "0.1084, 0.1472, 0.2456, 0.3868, 0.5785, 0.8482, 1.214, 1.692, 2.287, 3.005",\
                 "0.1137, 0.1546, 0.2544, 0.393, 0.5828, 0.8506, 1.215, 1.694, 2.287, 3.004",\
                 "0.1196, 0.1608, 0.2604, 0.4004, 0.59, 0.8542, 1.219, 1.695, 2.288, 3.005",\
                 "0.1336, 0.1762, 0.2738, 0.4106, 0.5972, 0.8616, 1.223, 1.696, 2.289, 3.005",\
                 "0.1506, 0.1976, 0.301, 0.4392, 0.6172, 0.8732, 1.23, 1.701, 2.293, 3.008",\
                 "0.1696, 0.2204, 0.3342, 0.4866, 0.664, 0.903, 1.245, 1.708, 2.297, 3.009",\
                 "0.1892, 0.2452, 0.3696, 0.541, 0.7354, 0.9668, 1.286, 1.728, 2.303, 3.011");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.01553, 0.02893, 0.07596, 0.1658, 0.3057, 0.5021, 0.7604, 1.086, 1.483, 1.957");
          values("0.1017, 0.1384, 0.2438, 0.4502, 0.7967, 1.295, 1.954, 2.784, 3.804, 5.011",\
                 "0.1024, 0.1371, 0.244, 0.4502, 0.7963, 1.295, 1.954, 2.783, 3.802, 5.012",\
                 "0.1038, 0.1383, 0.2447, 0.4505, 0.7969, 1.295, 1.954, 2.786, 3.804, 5.015",\
                 "0.1053, 0.1407, 0.2461, 0.4515, 0.7969, 1.295, 1.954, 2.786, 3.804, 5.014",\
                 "0.1085, 0.144, 0.2491, 0.4536, 0.7978, 1.295, 1.953, 2.786, 3.804, 5.01",\
                 "0.117, 0.1524, 0.2546, 0.457, 0.7994, 1.296, 1.952, 2.782, 3.803, 5.008",\
                 "0.132, 0.1682, 0.2704, 0.4664, 0.8018, 1.296, 1.955, 2.781, 3.793, 5.009",\
                 "0.1486, 0.1884, 0.2912, 0.4888, 0.8168, 1.302, 1.956, 2.783, 3.797, 4.999",\
                 "0.1672, 0.2102, 0.3164, 0.5164, 0.847, 1.324, 1.963, 2.783, 3.794, 5.008",\
                 "0.1868, 0.2338, 0.3444, 0.5474, 0.8832, 1.364, 1.991, 2.795, 3.798, 5");
        }
      }
    }
  }

