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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.02166, 0.02146, 0.02126, 0.02116, 0.02111, 0.02103, 0.02096, \
                  0.02089, 0.02083, 0.01978");
        }

        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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.03862, 0.03836, 0.03788, 0.03745, 0.03711, 0.0368, 0.03655, \
                  0.03638, 0.03622, 0.02792");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.005981, 0.005984, 0.005986, 0.005985, 0.005996, 0.005996, 0.005995, \
                  0.005996, 0.005991, 0.005005");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("-0.005967, -0.005963, -0.005966, -0.00597, -0.005978, -0.005985, \
                  -0.005976, -0.005978, -0.005978, -0.005418");
        }
      }
    }

    pin(Z) {
      capacitance : 0.007905 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.6433 ;
      max_transition : 21 ;
      min_capacitance : 0.008905 ;
      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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.04345, 0.04345, 0.04347, 0.04346, 0.04344, 0.04345, 0.04345, 0.04346, 0.04346, 0.04346",\
                 "0.04365, 0.04364, 0.04366, 0.04363, 0.04362, 0.04362, 0.04363, 0.04363, 0.04363, 0.04364",\
                 "0.04409, 0.04408, 0.0441, 0.04407, 0.04406, 0.04407, 0.04408, 0.04408, 0.04408, 0.04408",\
                 "0.04432, 0.04433, 0.04434, 0.04434, 0.04432, 0.04432, 0.04432, 0.04434, 0.04432, 0.04433",\
                 "0.04453, 0.04455, 0.04454, 0.04451, 0.0445, 0.04451, 0.0445, 0.04451, 0.04451, 0.04451",\
                 "0.04469, 0.04469, 0.04469, 0.04467, 0.04466, 0.04466, 0.04468, 0.04468, 0.04468, 0.04468",\
                 "0.04483, 0.04485, 0.04485, 0.04485, 0.04483, 0.04484, 0.04483, 0.04483, 0.04482, 0.04481",\
                 "0.045, 0.045, 0.04501, 0.04499, 0.04499, 0.04499, 0.045, 0.045, 0.04498, 0.04483",\
                 "0.04519, 0.04519, 0.04519, 0.04517, 0.04516, 0.04516, 0.04516, 0.04512, 0.0448, 0.04359",\
                 "0.04586, 0.04586, 0.04585, 0.04582, 0.04579, 0.04569, 0.04513, 0.04338, 0.04137, 0.03987");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.03316, 0.03315, 0.03314, 0.03326, 0.03334, 0.03329, 0.03352, 0.03465, 0.05796, 0.1969",\
                 "0.0331, 0.03309, 0.03308, 0.03318, 0.03327, 0.03331, 0.03346, 0.03513, 0.05917, 0.2012",\
                 "0.03292, 0.03294, 0.03294, 0.03292, 0.03311, 0.03307, 0.03357, 0.03491, 0.06301, 0.2166",\
                 "0.03268, 0.03267, 0.03268, 0.0327, 0.0328, 0.03298, 0.03336, 0.03554, 0.07451, 0.2483",\
                 "0.03248, 0.03251, 0.03251, 0.03252, 0.03259, 0.03271, 0.03287, 0.03805, 0.09819, 0.2975",\
                 "0.0323, 0.03229, 0.0323, 0.0324, 0.03244, 0.03255, 0.03317, 0.04445, 0.1445, 0.3577",\
                 "0.03216, 0.03217, 0.03222, 0.03223, 0.03243, 0.03245, 0.03374, 0.06668, 0.2219, 0.4124",\
                 "0.03206, 0.03207, 0.03209, 0.03205, 0.03217, 0.03262, 0.04135, 0.1353, 0.3047, 0.4402",\
                 "0.03197, 0.03199, 0.03203, 0.03211, 0.03199, 0.03543, 0.0981, 0.2337, 0.3386, 0.4128",\
                 "0.03224, 0.03224, 0.03227, 0.03234, 0.03821, 0.107, 0.1843, 0.2355, 0.2697, 0.2931");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.07065, 0.07093, 0.07152, 0.07201, 0.0723, 0.07248, 0.07259, 0.07266, 0.0727, 0.07274",\
                 "0.07036, 0.07064, 0.07125, 0.07174, 0.07203, 0.07222, 0.07233, 0.0724, 0.07244, 0.07247",\
                 "0.06992, 0.07018, 0.07079, 0.07131, 0.07162, 0.0718, 0.07191, 0.07198, 0.07201, 0.07204",\
                 "0.06954, 0.06979, 0.07035, 0.07085, 0.07117, 0.07139, 0.07152, 0.07159, 0.07164, 0.07168",\
                 "0.06915, 0.06937, 0.06987, 0.07035, 0.07071, 0.07098, 0.07115, 0.07126, 0.07133, 0.07137",\
                 "0.06882, 0.069, 0.06944, 0.06992, 0.07032, 0.07061, 0.07083, 0.07098, 0.07106, 0.07111",\
                 "0.06855, 0.06873, 0.06914, 0.06961, 0.07, 0.07034, 0.07058, 0.07074, 0.07086, 0.07081",\
                 "0.06836, 0.06854, 0.06892, 0.06935, 0.06975, 0.07009, 0.07035, 0.0705, 0.07034, 0.06918",\
                 "0.06813, 0.06829, 0.06862, 0.06902, 0.06934, 0.06942, 0.06859, 0.06663, 0.06498, 0.0638",\
                 "0.03711, 0.03749, 0.03812, 0.03865, 0.03912, 0.0395, 0.03983, 0.04006, 0.04024, 0.0404");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.03438, 0.03465, 0.03527, 0.03577, 0.03613, 0.0364, 0.0366, 0.03848, 0.0644, 0.2115",\
                 "0.03429, 0.03458, 0.03522, 0.0358, 0.03618, 0.03643, 0.03689, 0.03835, 0.06563, 0.2152",\
                 "0.03393, 0.03414, 0.03473, 0.0352, 0.03565, 0.03607, 0.03624, 0.03821, 0.07056, 0.2321",\
                 "0.03338, 0.03356, 0.03404, 0.0346, 0.03508, 0.03557, 0.03616, 0.03893, 0.08206, 0.2629",\
                 "0.03299, 0.03316, 0.03356, 0.03397, 0.03458, 0.03491, 0.03565, 0.04091, 0.1065, 0.3118",\
                 "0.03264, 0.03277, 0.03309, 0.03363, 0.03416, 0.03452, 0.03527, 0.04793, 0.1529, 0.3665",\
                 "0.03236, 0.03252, 0.03285, 0.03323, 0.03377, 0.03421, 0.03587, 0.07095, 0.2286, 0.4174",\
                 "0.03219, 0.03228, 0.03256, 0.03287, 0.03335, 0.03415, 0.04359, 0.1394, 0.3089, 0.4427",\
                 "0.03198, 0.03211, 0.03235, 0.03272, 0.03292, 0.03701, 0.1011, 0.2366, 0.3407, 0.4141",\
                 "0.03225, 0.03236, 0.03259, 0.03297, 0.03936, 0.1087, 0.1858, 0.2367, 0.2705, 0.2938");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.81, 0.896, 1.174, 1.711, 2.547, 3.642, 4.935, 6.426, 8.122, \
                  10.03");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("1.383, 1.453, 1.715, 2.252, 3.098, 4.239, 5.607, 7.175, 8.956, \
                  10.93");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("2.158, 2.266, 2.534, 2.885, 3.299, 3.785, 4.363, 5.053, 5.875, 6.846",\
                 "2.234, 2.341, 2.609, 2.959, 3.374, 3.86, 4.438, 5.127, 5.95, 6.92",\
                 "2.485, 2.593, 2.861, 3.212, 3.625, 4.112, 4.69, 5.38, 6.201, 7.172",\
                 "2.95, 3.058, 3.325, 3.676, 4.09, 4.576, 5.154, 5.844, 6.666, 7.636",\
                 "3.593, 3.701, 3.97, 4.319, 4.733, 5.22, 5.797, 6.487, 7.31, 8.281",\
                 "4.263, 4.37, 4.637, 4.986, 5.4, 5.886, 6.464, 7.155, 7.976, 8.948",\
                 "4.985, 5.094, 5.361, 5.709, 6.122, 6.609, 7.184, 7.874, 8.696, 9.666",\
                 "5.767, 5.875, 6.143, 6.492, 6.906, 7.391, 7.968, 8.656, 9.476, 10.45",\
                 "6.615, 6.723, 6.99, 7.34, 7.753, 8.239, 8.816, 9.505, 10.33, 11.29",\
                 "7.529, 7.637, 7.905, 8.254, 8.668, 9.154, 9.731, 10.42, 11.24, 12.21");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("1.116, 1.221, 1.546, 2.124, 3.013, 4.259, 5.9, 7.968, 10.49, 13.49",\
                 "1.181, 1.286, 1.611, 2.19, 3.079, 4.325, 5.966, 8.026, 10.55, 13.56",\
                 "1.417, 1.522, 1.847, 2.425, 3.314, 4.561, 6.199, 8.27, 10.79, 13.79",\
                 "1.866, 1.971, 2.296, 2.874, 3.763, 5.009, 6.648, 8.719, 11.23, 14.25",\
                 "2.531, 2.637, 2.964, 3.543, 4.432, 5.678, 7.315, 9.388, 11.91, 14.92",\
                 "3.315, 3.427, 3.762, 4.345, 5.234, 6.479, 8.119, 10.18, 12.7, 15.72",\
                 "4.194, 4.312, 4.656, 5.242, 6.134, 7.38, 9.017, 11.08, 13.6, 16.62",\
                 "5.16, 5.287, 5.643, 6.233, 7.125, 8.372, 10.01, 12.07, 14.59, 17.6",\
                 "6.214, 6.35, 6.721, 7.317, 8.208, 9.455, 11.09, 13.16, 15.67, 18.68",\
                 "7.349, 7.497, 7.887, 8.491, 9.383, 10.63, 12.27, 14.33, 16.85, 19.85");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.5762, 0.6516, 0.8522, 1.158, 1.591, 2.184, 2.98, 4.021, 5.33, 6.929",\
                 "0.5762, 0.652, 0.8526, 1.158, 1.591, 2.184, 2.979, 4.02, 5.328, 6.929",\
                 "0.5762, 0.6514, 0.853, 1.158, 1.591, 2.184, 2.98, 4.02, 5.327, 6.928",\
                 "0.5762, 0.6512, 0.8524, 1.158, 1.59, 2.181, 2.979, 4.019, 5.332, 6.928",\
                 "0.5748, 0.65, 0.8514, 1.158, 1.588, 2.181, 2.979, 4.017, 5.329, 6.928",\
                 "0.5726, 0.6486, 0.8502, 1.156, 1.588, 2.182, 2.98, 4.02, 5.33, 6.928",\
                 "0.574, 0.6478, 0.8494, 1.156, 1.584, 2.178, 2.972, 4.014, 5.33, 6.922",\
                 "0.576, 0.65, 0.85, 1.154, 1.586, 2.178, 2.97, 4.008, 5.318, 6.918",\
                 "0.574, 0.652, 0.852, 1.156, 1.588, 2.178, 2.972, 4.012, 5.32, 6.908",\
                 "0.576, 0.652, 0.852, 1.158, 1.588, 2.18, 2.974, 4.014, 5.328, 6.912");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.4202, 0.5528, 1.019, 1.951, 3.431, 5.514, 8.254, 11.71, 15.93, 20.96",\
                 "0.4216, 0.5542, 1.019, 1.951, 3.428, 5.512, 8.26, 11.71, 15.93, 21",\
                 "0.42, 0.5526, 1.02, 1.948, 3.434, 5.514, 8.258, 11.74, 15.93, 20.96",\
                 "0.4206, 0.5534, 1.02, 1.948, 3.428, 5.511, 8.255, 11.71, 15.93, 20.95",\
                 "0.4308, 0.563, 1.024, 1.952, 3.428, 5.511, 8.257, 11.73, 15.96, 20.96",\
                 "0.462, 0.5892, 1.044, 1.958, 3.43, 5.517, 8.254, 11.71, 15.93, 20.95",\
                 "0.501, 0.6244, 1.066, 1.971, 3.444, 5.516, 8.268, 11.71, 15.94, 20.96",\
                 "0.55, 0.668, 1.096, 1.984, 3.45, 5.528, 8.264, 11.71, 15.93, 20.96",\
                 "0.606, 0.724, 1.132, 2, 3.456, 5.534, 8.274, 11.72, 15.96, 20.97",\
                 "0.678, 0.794, 1.182, 2.02, 3.464, 5.536, 8.278, 11.73, 15.94, 20.99");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("3.055, 3.16, 3.425, 3.771, 4.182, 4.667, 5.245, 5.934, 6.756, 7.727",\
                 "3.128, 3.234, 3.498, 3.845, 4.256, 4.741, 5.318, 6.008, 6.83, 7.801",\
                 "3.403, 3.509, 3.773, 4.12, 4.53, 5.016, 5.593, 6.283, 7.105, 8.076",\
                 "3.941, 4.046, 4.31, 4.657, 5.068, 5.554, 6.131, 6.821, 7.643, 8.614",\
                 "4.783, 4.889, 5.153, 5.5, 5.912, 6.398, 6.975, 7.665, 8.488, 9.458",\
                 "5.957, 6.062, 6.326, 6.674, 7.086, 7.573, 8.151, 8.841, 9.663, 10.63",\
                 "7.447, 7.554, 7.819, 8.169, 8.582, 9.068, 9.646, 10.34, 11.16, 12.13",\
                 "9.204, 9.313, 9.582, 9.935, 10.35, 10.84, 11.42, 12.11, 12.93, 13.9",\
                 "11.2, 11.31, 11.59, 11.95, 12.37, 12.86, 13.45, 14.14, 14.96, 15.94",\
                 "13.43, 13.54, 13.83, 14.2, 14.63, 15.13, 15.72, 16.42, 17.24, 18.21");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("1.483, 1.59, 1.92, 2.504, 3.397, 4.644, 6.284, 8.347, 10.87, 13.89",\
                 "1.549, 1.656, 1.986, 2.571, 3.464, 4.712, 6.355, 8.417, 10.94, 13.95",\
                 "1.779, 1.885, 2.214, 2.799, 3.694, 4.943, 6.582, 8.644, 11.17, 14.19",\
                 "2.204, 2.311, 2.64, 3.225, 4.121, 5.37, 7.012, 9.082, 11.61, 14.6",\
                 "2.792, 2.898, 3.228, 3.812, 4.707, 5.959, 7.602, 9.673, 12.19, 15.2",\
                 "3.504, 3.614, 3.948, 4.535, 5.43, 6.68, 8.327, 10.39, 12.92, 15.93",\
                 "4.322, 4.436, 4.777, 5.365, 6.264, 7.513, 9.155, 11.23, 13.74, 16.75",\
                 "5.247, 5.365, 5.713, 6.305, 7.204, 8.455, 10.1, 12.16, 14.69, 17.69",\
                 "6.275, 6.399, 6.757, 7.354, 8.251, 9.503, 11.15, 13.21, 15.73, 18.74",\
                 "7.403, 7.533, 7.901, 8.503, 9.402, 10.65, 12.29, 14.36, 16.88, 19.88");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.536, 0.6132, 0.8218, 1.135, 1.574, 2.173, 2.974, 4.017, 5.325, 6.928",\
                 "0.5356, 0.6138, 0.8222, 1.136, 1.573, 2.173, 2.974, 4.018, 5.325, 6.928",\
                 "0.536, 0.614, 0.8214, 1.135, 1.574, 2.17, 2.974, 4.018, 5.33, 6.919",\
                 "0.536, 0.6136, 0.8228, 1.136, 1.574, 2.17, 2.974, 4.018, 5.329, 6.92",\
                 "0.5382, 0.616, 0.8252, 1.137, 1.574, 2.174, 2.974, 4.018, 5.33, 6.929",\
                 "0.5404, 0.6194, 0.8276, 1.138, 1.575, 2.174, 2.974, 4.014, 5.33, 6.924",\
                 "0.546, 0.624, 0.83, 1.142, 1.578, 2.174, 2.974, 4.018, 5.328, 6.924",\
                 "0.56, 0.636, 0.842, 1.152, 1.584, 2.184, 2.976, 4.018, 5.332, 6.92",\
                 "0.584, 0.664, 0.872, 1.18, 1.612, 2.202, 2.992, 4.03, 5.332, 6.924",\
                 "0.61, 0.69, 0.9, 1.214, 1.648, 2.242, 3.024, 4.056, 5.35, 6.934");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008905, 0.01328, 0.02865, 0.058, 0.1037, 0.1679, 0.2523, 0.3587, 0.4885, 0.6433");
          values("0.4014, 0.5368, 1.012, 1.946, 3.427, 5.511, 8.257, 11.71, 15.94, 21.01",\
                 "0.4018, 0.537, 1.013, 1.949, 3.427, 5.521, 8.266, 11.72, 15.94, 20.96",\
                 "0.4024, 0.5398, 1.014, 1.947, 3.427, 5.521, 8.256, 11.71, 15.94, 21.02",\
                 "0.4046, 0.5396, 1.015, 1.95, 3.427, 5.52, 8.255, 11.72, 15.97, 20.96",\
                 "0.4082, 0.5444, 1.014, 1.947, 3.431, 5.514, 8.255, 11.71, 15.93, 20.98",\
                 "0.4262, 0.5606, 1.029, 1.953, 3.428, 5.517, 8.274, 11.71, 15.93, 20.98",\
                 "0.447, 0.5814, 1.046, 1.966, 3.438, 5.52, 8.256, 11.72, 15.93, 20.96",\
                 "0.472, 0.606, 1.066, 1.976, 3.446, 5.524, 8.262, 11.72, 15.93, 20.97",\
                 "0.5, 0.636, 1.088, 1.988, 3.45, 5.532, 8.268, 11.72, 15.93, 20.96",\
                 "0.54, 0.672, 1.116, 2, 3.462, 5.536, 8.274, 11.73, 15.94, 21");
        }
      }
    }
  }

