/*
 * 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__invz_1) {
    area : 37.318400 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.03716, 0.0369, 0.03687, 0.0381, 0.04109, 0.0463, 0.05387, 0.0641, \
                  0.07708, 0.09304");
        }

        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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.02654, 0.02633, 0.02629, 0.02724, 0.02927, 0.03248, 0.03703, \
                  0.04332, 0.05165, 0.06224");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.01631, 0.01611, 0.01608, 0.01689, 0.01868, 0.0216, 0.02577, \
                  0.03127, 0.0382, 0.0466");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.0037, 0.003605, 0.003634, 0.004186, 0.005581, 0.008009, 0.01154, \
                  0.01625, 0.02217, 0.02939");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.003098 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.2114 ;
      max_transition : 8.9 ;
      min_capacitance : 0.004098 ;
      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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.02896, 0.02894, 0.02894, 0.02894, 0.02892, 0.02892, 0.02892, 0.02892, 0.02893, 0.02893",\
                 "0.02901, 0.02899, 0.02899, 0.02898, 0.02897, 0.02897, 0.02897, 0.02896, 0.02898, 0.02898",\
                 "0.02984, 0.02983, 0.02983, 0.02981, 0.0298, 0.02981, 0.02981, 0.02981, 0.02982, 0.02982",\
                 "0.0315, 0.03149, 0.03148, 0.03148, 0.03148, 0.03148, 0.03149, 0.03149, 0.0315, 0.0315",\
                 "0.03427, 0.03425, 0.03425, 0.03424, 0.03423, 0.03424, 0.03424, 0.03425, 0.03425, 0.03425",\
                 "0.03835, 0.03835, 0.03835, 0.03834, 0.03834, 0.03834, 0.03834, 0.03834, 0.03834, 0.03834",\
                 "0.04393, 0.04394, 0.04392, 0.04392, 0.04392, 0.04392, 0.04392, 0.04392, 0.04392, 0.04392",\
                 "0.05106, 0.05105, 0.05105, 0.05104, 0.05104, 0.05104, 0.05104, 0.05105, 0.05105, 0.05105",\
                 "0.05982, 0.05983, 0.0598, 0.0598, 0.05979, 0.05979, 0.0598, 0.0598, 0.0598, 0.05981",\
                 "0.07027, 0.07028, 0.07026, 0.07025, 0.07024, 0.07024, 0.07025, 0.07025, 0.07025, 0.07026");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.01907, 0.01908, 0.01909, 0.01908, 0.01913, 0.01919, 0.01936, 0.01949, 0.01972, 0.02092",\
                 "0.01894, 0.01894, 0.01895, 0.01894, 0.01899, 0.01908, 0.01918, 0.01931, 0.01958, 0.02075",\
                 "0.01893, 0.01892, 0.01894, 0.01894, 0.01898, 0.01908, 0.01912, 0.01933, 0.01948, 0.02091",\
                 "0.01988, 0.01989, 0.01988, 0.01989, 0.01994, 0.02005, 0.02013, 0.02032, 0.02055, 0.02195",\
                 "0.02241, 0.0224, 0.02241, 0.02247, 0.02252, 0.02258, 0.02274, 0.02281, 0.02315, 0.02474",\
                 "0.02694, 0.02692, 0.0269, 0.02691, 0.02707, 0.02713, 0.02722, 0.02727, 0.02759, 0.02962",\
                 "0.03359, 0.0336, 0.03357, 0.03356, 0.03361, 0.03383, 0.03395, 0.03404, 0.03431, 0.03677",\
                 "0.04254, 0.04256, 0.04255, 0.04252, 0.04252, 0.04266, 0.04294, 0.04313, 0.04346, 0.04654",\
                 "0.05392, 0.05393, 0.05394, 0.05392, 0.0539, 0.05392, 0.05409, 0.05458, 0.0551, 0.05961",\
                 "0.06779, 0.06781, 0.06785, 0.06784, 0.06783, 0.06782, 0.06786, 0.06819, 0.06936, 0.07597");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.04744, 0.04739, 0.04734, 0.04739, 0.04745, 0.0475, 0.04754, 0.04757, 0.04758, 0.04759",\
                 "0.04735, 0.04729, 0.04727, 0.04729, 0.04735, 0.0474, 0.04745, 0.04747, 0.04748, 0.0475",\
                 "0.04731, 0.04726, 0.04722, 0.04727, 0.04732, 0.04737, 0.04741, 0.04744, 0.04745, 0.04746",\
                 "0.04781, 0.04777, 0.04773, 0.04778, 0.04783, 0.04788, 0.04792, 0.04795, 0.04797, 0.04798",\
                 "0.04926, 0.04919, 0.04914, 0.04918, 0.04924, 0.04929, 0.04933, 0.04936, 0.04938, 0.04939",\
                 "0.05177, 0.05171, 0.05165, 0.05167, 0.05173, 0.05178, 0.05182, 0.05184, 0.05187, 0.05188",\
                 "0.05546, 0.0554, 0.05531, 0.05533, 0.05539, 0.05544, 0.05548, 0.0555, 0.05552, 0.05553",\
                 "0.06044, 0.06034, 0.06025, 0.06026, 0.0603, 0.06034, 0.06038, 0.06041, 0.06043, 0.06044",\
                 "0.06674, 0.06665, 0.06653, 0.06648, 0.06651, 0.06655, 0.06659, 0.06662, 0.06664, 0.06665",\
                 "0.0744, 0.0743, 0.07413, 0.07408, 0.0741, 0.07412, 0.07416, 0.07419, 0.0742, 0.07421");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.04169, 0.04179, 0.04205, 0.04238, 0.04272, 0.04299, 0.04324, 0.04346, 0.04373, 0.04549",\
                 "0.04149, 0.04161, 0.04185, 0.04218, 0.04252, 0.04279, 0.04312, 0.0433, 0.04364, 0.04534",\
                 "0.04144, 0.04155, 0.04178, 0.04214, 0.04248, 0.04279, 0.04298, 0.04328, 0.04354, 0.04519",\
                 "0.04227, 0.04237, 0.04259, 0.04294, 0.04329, 0.04359, 0.04381, 0.04414, 0.04447, 0.04629",\
                 "0.04409, 0.04418, 0.04445, 0.04474, 0.04509, 0.04537, 0.04561, 0.04592, 0.04622, 0.0484",\
                 "0.04713, 0.04719, 0.04742, 0.04776, 0.04809, 0.0484, 0.04862, 0.04893, 0.04927, 0.05209",\
                 "0.05147, 0.05152, 0.05174, 0.05205, 0.0524, 0.05269, 0.05298, 0.05315, 0.05376, 0.05745",\
                 "0.05723, 0.0573, 0.05745, 0.05769, 0.05802, 0.05848, 0.05872, 0.05893, 0.05959, 0.06488",\
                 "0.06452, 0.06456, 0.06471, 0.06488, 0.06521, 0.0656, 0.06608, 0.06633, 0.06746, 0.07507",\
                 "0.07338, 0.07342, 0.07353, 0.07375, 0.07403, 0.0742, 0.07456, 0.07524, 0.0774, 0.09017");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.303, 0.326, 0.399, 0.544, 0.73, 0.943, 1.187, 1.467, 1.78, 2.13");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.481, 0.499, 0.57, 0.713, 0.901, 1.124, 1.384, 1.683, 2.021, \
                  2.403");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.4261, 0.471, 0.5981, 0.7794, 0.9993, 1.26, 1.569, 1.936, 2.37, 2.88",\
                 "0.4434, 0.4881, 0.6156, 0.7968, 1.017, 1.278, 1.587, 1.953, 2.388, 2.898",\
                 "0.5074, 0.5521, 0.6789, 0.8596, 1.079, 1.34, 1.649, 2.016, 2.45, 2.96",\
                 "0.6181, 0.6613, 0.7835, 0.9603, 1.177, 1.437, 1.745, 2.111, 2.545, 3.055",\
                 "0.7105, 0.7545, 0.8754, 1.048, 1.262, 1.52, 1.827, 2.193, 2.626, 3.136",\
                 "0.7401, 0.7833, 0.9026, 1.073, 1.286, 1.543, 1.849, 2.214, 2.647, 3.156",\
                 "0.7237, 0.7663, 0.8836, 1.053, 1.265, 1.52, 1.826, 2.19, 2.622, 3.131",\
                 "0.6673, 0.7096, 0.8259, 0.9935, 1.203, 1.457, 1.761, 2.125, 2.557, 3.065",\
                 "0.5713, 0.6138, 0.7295, 0.8958, 1.104, 1.356, 1.658, 2.02, 2.452, 2.96",\
                 "0.4346, 0.4773, 0.5933, 0.7592, 0.9661, 1.217, 1.518, 1.88, 2.31, 2.818");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.4023, 0.4497, 0.593, 0.8327, 1.187, 1.678, 2.324, 3.138, 4.132, 5.317",\
                 "0.4157, 0.463, 0.6063, 0.8461, 1.2, 1.692, 2.337, 3.15, 4.145, 5.33",\
                 "0.464, 0.5111, 0.6543, 0.894, 1.248, 1.74, 2.385, 3.199, 4.192, 5.374",\
                 "0.5333, 0.5818, 0.727, 0.9677, 1.322, 1.814, 2.459, 3.272, 4.267, 5.452",\
                 "0.5819, 0.6331, 0.7833, 1.029, 1.385, 1.877, 2.523, 3.336, 4.33, 5.512",\
                 "0.6049, 0.6605, 0.8179, 1.067, 1.426, 1.92, 2.566, 3.379, 4.373, 5.556",\
                 "0.5975, 0.6595, 0.8285, 1.085, 1.447, 1.94, 2.589, 3.402, 4.394, 5.578",\
                 "0.5546, 0.624, 0.8096, 1.078, 1.445, 1.942, 2.589, 3.404, 4.397, 5.58",\
                 "0.4731, 0.5521, 0.756, 1.04, 1.418, 1.92, 2.57, 3.384, 4.377, 5.561",\
                 "0.351, 0.4393, 0.6657, 0.9685, 1.359, 1.871, 2.526, 3.344, 4.338, 5.522");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.2594, 0.3045, 0.4295, 0.6096, 0.8539, 1.182, 1.62, 2.185, 2.891, 3.755",\
                 "0.2605, 0.305, 0.4301, 0.6101, 0.8538, 1.182, 1.621, 2.185, 2.892, 3.755",\
                 "0.2578, 0.3029, 0.4286, 0.609, 0.8534, 1.184, 1.621, 2.183, 2.889, 3.754",\
                 "0.2501, 0.2928, 0.4148, 0.5978, 0.8464, 1.176, 1.617, 2.182, 2.892, 3.751",\
                 "0.2634, 0.3002, 0.41, 0.586, 0.835, 1.169, 1.61, 2.18, 2.891, 3.752",\
                 "0.2588, 0.2948, 0.4048, 0.5822, 0.8318, 1.164, 1.605, 2.174, 2.887, 3.748",\
                 "0.255, 0.2908, 0.3996, 0.578, 0.8288, 1.165, 1.604, 2.168, 2.877, 3.746",\
                 "0.2536, 0.2882, 0.3954, 0.5718, 0.8208, 1.157, 1.599, 2.165, 2.875, 3.736",\
                 "0.2548, 0.289, 0.3936, 0.5682, 0.8148, 1.149, 1.591, 2.161, 2.875, 3.739",\
                 "0.258, 0.2916, 0.3948, 0.5662, 0.8106, 1.145, 1.586, 2.155, 2.871, 3.735");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.2638, 0.3217, 0.5164, 0.8904, 1.498, 2.37, 3.534, 4.999, 6.774, 8.891",\
                 "0.2635, 0.3218, 0.5157, 0.8901, 1.498, 2.377, 3.537, 4.984, 6.779, 8.89",\
                 "0.2631, 0.3211, 0.5153, 0.8899, 1.497, 2.37, 3.527, 4.989, 6.77, 8.89",\
                 "0.2712, 0.3286, 0.52, 0.8922, 1.498, 2.376, 3.537, 4.987, 6.776, 8.902",\
                 "0.2912, 0.3454, 0.5344, 0.9028, 1.506, 2.372, 3.536, 4.986, 6.784, 8.891",\
                 "0.3206, 0.3718, 0.552, 0.9118, 1.512, 2.382, 3.536, 4.986, 6.778, 8.888",\
                 "0.3594, 0.4104, 0.5814, 0.9286, 1.52, 2.383, 3.536, 4.997, 6.778, 8.89",\
                 "0.4078, 0.4594, 0.6216, 0.9574, 1.536, 2.388, 3.539, 4.994, 6.778, 8.897",\
                 "0.4598, 0.5136, 0.6758, 0.9968, 1.562, 2.409, 3.545, 4.997, 6.773, 8.904",\
                 "0.5154, 0.575, 0.7344, 1.044, 1.605, 2.44, 3.575, 5.007, 6.779, 8.896");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.8991, 0.9482, 1.087, 1.278, 1.505, 1.769, 2.08, 2.447, 2.882, 3.392",\
                 "0.9143, 0.9633, 1.102, 1.293, 1.52, 1.784, 2.095, 2.462, 2.897, 3.407",\
                 "0.9653, 1.014, 1.152, 1.344, 1.571, 1.835, 2.146, 2.513, 2.948, 3.458",\
                 "1.02, 1.069, 1.207, 1.399, 1.625, 1.89, 2.201, 2.568, 3.003, 3.513",\
                 "1.048, 1.098, 1.236, 1.428, 1.654, 1.919, 2.23, 2.597, 3.032, 3.542",\
                 "1.05, 1.099, 1.238, 1.429, 1.657, 1.921, 2.232, 2.6, 3.034, 3.544",\
                 "1.023, 1.072, 1.21, 1.403, 1.63, 1.895, 2.206, 2.574, 3.008, 3.518",\
                 "0.9617, 1.011, 1.15, 1.343, 1.571, 1.836, 2.147, 2.515, 2.949, 3.46",\
                 "0.8625, 0.9119, 1.051, 1.245, 1.474, 1.739, 2.051, 2.42, 2.854, 3.364",\
                 "0.7219, 0.7714, 0.9118, 1.108, 1.337, 1.603, 1.916, 2.285, 2.719, 3.23");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.9414, 0.9905, 1.138, 1.382, 1.739, 2.233, 2.88, 3.694, 4.688, 5.873",\
                 "0.9582, 1.007, 1.155, 1.398, 1.756, 2.25, 2.897, 3.712, 4.705, 5.89",\
                 "1.03, 1.079, 1.226, 1.47, 1.828, 2.321, 2.968, 3.783, 4.777, 5.961",\
                 "1.172, 1.221, 1.368, 1.611, 1.969, 2.463, 3.11, 3.926, 4.92, 6.104",\
                 "1.359, 1.408, 1.556, 1.799, 2.157, 2.651, 3.298, 4.113, 5.106, 6.289",\
                 "1.582, 1.631, 1.778, 2.022, 2.38, 2.873, 3.521, 4.337, 5.329, 6.511",\
                 "1.846, 1.895, 2.044, 2.287, 2.645, 3.138, 3.785, 4.6, 5.596, 6.782",\
                 "2.152, 2.202, 2.351, 2.595, 2.953, 3.446, 4.093, 4.907, 5.901, 7.087",\
                 "2.501, 2.551, 2.7, 2.946, 3.303, 3.797, 4.444, 5.258, 6.25, 7.434",\
                 "2.894, 2.945, 3.095, 3.341, 3.7, 4.194, 4.841, 5.656, 6.648, 7.831");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.2906, 0.338, 0.4643, 0.636, 0.8712, 1.193, 1.627, 2.189, 2.891, 3.753",\
                 "0.2908, 0.3383, 0.4648, 0.6362, 0.8704, 1.195, 1.627, 2.188, 2.895, 3.753",\
                 "0.2906, 0.3386, 0.4648, 0.6378, 0.8716, 1.194, 1.627, 2.189, 2.895, 3.756",\
                 "0.2912, 0.3384, 0.465, 0.6362, 0.8724, 1.194, 1.626, 2.188, 2.895, 3.754",\
                 "0.2912, 0.3392, 0.465, 0.6372, 0.8708, 1.196, 1.629, 2.186, 2.891, 3.75",\
                 "0.2924, 0.3396, 0.4654, 0.6384, 0.872, 1.193, 1.627, 2.187, 2.895, 3.752",\
                 "0.2928, 0.3402, 0.4674, 0.6392, 0.8734, 1.193, 1.625, 2.185, 2.891, 3.756",\
                 "0.295, 0.343, 0.4706, 0.6434, 0.8746, 1.195, 1.629, 2.188, 2.892, 3.748",\
                 "0.2978, 0.3458, 0.473, 0.646, 0.8774, 1.199, 1.629, 2.188, 2.891, 3.749",\
                 "0.301, 0.3496, 0.4776, 0.651, 0.8812, 1.203, 1.634, 2.19, 2.893, 3.75");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.004098, 0.005528, 0.01055, 0.02014, 0.03508, 0.05604, 0.08363, 0.1184, 0.1608, 0.2114");
          values("0.2678, 0.3243, 0.5164, 0.8892, 1.499, 2.371, 3.528, 4.986, 6.768, 8.891",\
                 "0.2678, 0.3242, 0.5164, 0.8894, 1.497, 2.37, 3.534, 4.999, 6.766, 8.891",\
                 "0.2672, 0.3244, 0.5166, 0.8896, 1.498, 2.371, 3.527, 4.987, 6.771, 8.893",\
                 "0.268, 0.3246, 0.5166, 0.8896, 1.498, 2.371, 3.529, 4.995, 6.785, 8.891",\
                 "0.2682, 0.3254, 0.5166, 0.8902, 1.498, 2.372, 3.528, 4.991, 6.77, 8.89",\
                 "0.2704, 0.3262, 0.5176, 0.8904, 1.498, 2.371, 3.528, 4.992, 6.768, 8.886",\
                 "0.2724, 0.3284, 0.5194, 0.8932, 1.498, 2.37, 3.526, 4.984, 6.775, 8.902",\
                 "0.2754, 0.332, 0.522, 0.8942, 1.5, 2.372, 3.527, 4.993, 6.783, 8.911",\
                 "0.2784, 0.335, 0.5248, 0.8948, 1.501, 2.371, 3.526, 4.986, 6.768, 8.894",\
                 "0.2834, 0.3394, 0.5286, 0.8972, 1.502, 2.373, 3.525, 4.982, 6.764, 8.882");
        }
      }
    }
  }

