/*
 * 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_3) {
    area : 50.489600 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.04029, 0.03996, 0.03932, 0.03878, 0.0383, 0.03801, 0.03789, \
                  0.03791, 0.03762, 0.02886");
        }

        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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.0247, 0.02445, 0.02412, 0.02398, 0.02388, 0.02383, 0.02383, \
                  0.02388, 0.02358, 0.02135");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02056, 0.02037, 0.02001, 0.01978, 0.01966, 0.01962, 0.01965, \
                  0.01972, 0.01966, 0.01579");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.006275, 0.006216, 0.006049, 0.005836, 0.005686, 0.005599, 0.005587, \
                  0.00563, 0.005798, 0.006247");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.007585 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.5646 ;
      max_transition : 25 ;
      min_capacitance : 0.008585 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.04056, 0.04056, 0.04055, 0.04053, 0.04052, 0.04052, 0.04053, 0.04053, 0.04054, 0.04052",\
                 "0.04066, 0.04066, 0.04067, 0.04065, 0.04064, 0.04065, 0.04066, 0.04066, 0.04066, 0.04064",\
                 "0.04109, 0.04108, 0.04107, 0.04106, 0.04105, 0.04105, 0.04106, 0.04107, 0.04107, 0.04105",\
                 "0.04139, 0.04138, 0.04137, 0.04136, 0.04133, 0.04135, 0.04134, 0.04135, 0.04135, 0.04132",\
                 "0.04165, 0.04165, 0.04162, 0.04159, 0.04161, 0.04162, 0.04162, 0.04162, 0.04161, 0.04155",\
                 "0.04194, 0.04194, 0.04195, 0.04192, 0.04192, 0.04193, 0.04192, 0.04193, 0.0419, 0.04175",\
                 "0.04231, 0.04232, 0.0423, 0.0423, 0.0423, 0.0423, 0.0423, 0.04229, 0.04222, 0.04182",\
                 "0.04278, 0.04278, 0.04276, 0.04275, 0.04275, 0.04274, 0.04276, 0.0427, 0.04233, 0.04132",\
                 "0.04356, 0.04357, 0.04354, 0.04355, 0.04352, 0.04352, 0.04342, 0.04287, 0.0415, 0.0399",\
                 "0.04485, 0.04486, 0.04483, 0.04477, 0.0446, 0.04393, 0.0422, 0.04035, 0.03901, 0.03805");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.02806, 0.02806, 0.02806, 0.02816, 0.0283, 0.02843, 0.02942, 0.04324, 0.1197, 0.2835",\
                 "0.02792, 0.02794, 0.02796, 0.02797, 0.02814, 0.02831, 0.02902, 0.04471, 0.1224, 0.2867",\
                 "0.0276, 0.02761, 0.02762, 0.02769, 0.02785, 0.028, 0.02902, 0.04579, 0.1304, 0.2975",\
                 "0.0272, 0.0272, 0.02721, 0.02731, 0.02744, 0.02755, 0.02909, 0.05133, 0.149, 0.3178",\
                 "0.02692, 0.0269, 0.02692, 0.02697, 0.02708, 0.0274, 0.03046, 0.06325, 0.1785, 0.3442",\
                 "0.02673, 0.02674, 0.02671, 0.02684, 0.02691, 0.02733, 0.03381, 0.08619, 0.2197, 0.3698",\
                 "0.0267, 0.0267, 0.02673, 0.02663, 0.02695, 0.02768, 0.04399, 0.1272, 0.2649, 0.3838",\
                 "0.02677, 0.02678, 0.02681, 0.02678, 0.02677, 0.03117, 0.0747, 0.1853, 0.2939, 0.3727",\
                 "0.02709, 0.02714, 0.02715, 0.02717, 0.02841, 0.05395, 0.138, 0.221, 0.2785, 0.3184",\
                 "0.02799, 0.02801, 0.02806, 0.02947, 0.05838, 0.1121, 0.1489, 0.1723, 0.1878, 0.1984");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.06659, 0.06687, 0.06743, 0.06792, 0.06821, 0.06839, 0.0685, 0.06857, 0.06861, 0.06861",\
                 "0.06654, 0.06681, 0.06737, 0.06786, 0.06815, 0.06834, 0.06845, 0.06852, 0.06856, 0.06855",\
                 "0.06628, 0.06655, 0.06711, 0.06761, 0.0679, 0.06808, 0.06819, 0.06826, 0.0683, 0.06829",\
                 "0.06593, 0.0662, 0.06676, 0.06725, 0.06754, 0.06773, 0.06785, 0.0679, 0.06794, 0.0679",\
                 "0.06562, 0.06588, 0.06645, 0.06692, 0.06723, 0.06742, 0.06753, 0.0676, 0.06763, 0.06754",\
                 "0.06538, 0.06567, 0.06621, 0.06669, 0.06702, 0.06721, 0.06733, 0.06739, 0.06739, 0.06716",\
                 "0.06527, 0.0655, 0.06606, 0.06657, 0.06688, 0.06708, 0.06719, 0.06725, 0.06712, 0.0665",\
                 "0.06523, 0.06547, 0.066, 0.06648, 0.06681, 0.06703, 0.06714, 0.06705, 0.06639, 0.06502",\
                 "0.06532, 0.06556, 0.06606, 0.06655, 0.06684, 0.06702, 0.06677, 0.06561, 0.06393, 0.06255",\
                 "0.06456, 0.06476, 0.06519, 0.06542, 0.0648, 0.06287, 0.0612, 0.06009, 0.05932, 0.05878");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.02626, 0.02649, 0.02693, 0.02751, 0.02801, 0.02848, 0.0302, 0.05341, 0.1528, 0.3215",\
                 "0.02608, 0.02629, 0.02677, 0.02732, 0.02786, 0.02829, 0.0306, 0.05417, 0.155, 0.3246",\
                 "0.02572, 0.02592, 0.02641, 0.02696, 0.02747, 0.02787, 0.03054, 0.05823, 0.1666, 0.3343",\
                 "0.02542, 0.02562, 0.02606, 0.02662, 0.02711, 0.02759, 0.03167, 0.06838, 0.1888, 0.3521",\
                 "0.02513, 0.02534, 0.02584, 0.02638, 0.02679, 0.0275, 0.03486, 0.08974, 0.2255, 0.3726",\
                 "0.02495, 0.02516, 0.0256, 0.02611, 0.02661, 0.02783, 0.04514, 0.1312, 0.2681, 0.3845",\
                 "0.02484, 0.02503, 0.02544, 0.02596, 0.02653, 0.03139, 0.07751, 0.1889, 0.2947, 0.371",\
                 "0.02477, 0.02498, 0.02535, 0.02586, 0.02785, 0.05672, 0.1423, 0.2206, 0.2742, 0.3113",\
                 "0.02461, 0.02477, 0.02519, 0.02844, 0.06387, 0.1099, 0.139, 0.1573, 0.1693, 0.1774",\
                 "-0.01082, -0.01085, -0.0109, -0.01094, -0.01096, -0.01097, -0.01098, -0.01098, -0.01098, -0.01098");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.874, 0.964, 1.245, 1.79, 2.589, 3.507, 4.53, 5.648, 6.853, 8.157");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("1.426, 1.496, 1.765, 2.306, 3.114, 4.058, 5.101, 6.232, 7.462, \
                  8.767");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("1.925, 2.052, 2.378, 2.823, 3.365, 4.012, 4.788, 5.718, 6.829, 8.14",\
                 "2.004, 2.13, 2.457, 2.904, 3.444, 4.092, 4.868, 5.798, 6.908, 8.22",\
                 "2.267, 2.394, 2.72, 3.166, 3.707, 4.354, 5.13, 6.06, 7.17, 8.483",\
                 "2.725, 2.85, 3.177, 3.621, 4.162, 4.809, 5.585, 6.516, 7.626, 8.938",\
                 "3.273, 3.398, 3.721, 4.165, 4.706, 5.353, 6.129, 7.059, 8.169, 9.482",\
                 "3.771, 3.897, 4.219, 4.661, 5.201, 5.846, 6.62, 7.55, 8.66, 9.972",\
                 "4.235, 4.361, 4.684, 5.128, 5.667, 6.312, 7.085, 8.012, 9.12, 10.43",\
                 "4.666, 4.792, 5.116, 5.56, 6.099, 6.745, 7.519, 8.447, 9.553, 10.86",\
                 "5.062, 5.188, 5.512, 5.957, 6.496, 7.142, 7.917, 8.845, 9.953, 11.26",\
                 "5.418, 5.544, 5.869, 6.313, 6.852, 7.499, 8.273, 9.202, 10.31, 11.62");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("1.321, 1.458, 1.869, 2.568, 3.622, 5.093, 7.031, 9.468, 12.44, 16.01",\
                 "1.386, 1.523, 1.934, 2.633, 3.687, 5.159, 7.095, 9.532, 12.51, 16.05",\
                 "1.62, 1.757, 2.167, 2.866, 3.92, 5.393, 7.329, 9.764, 12.74, 16.3",\
                 "2.062, 2.199, 2.61, 3.308, 4.362, 5.835, 7.771, 10.21, 13.2, 16.73",\
                 "2.645, 2.787, 3.205, 3.908, 4.962, 6.434, 8.371, 10.81, 13.79, 17.33",\
                 "3.255, 3.406, 3.837, 4.549, 5.608, 7.08, 9.015, 11.45, 14.43, 17.99",\
                 "3.868, 4.03, 4.481, 5.201, 6.263, 7.74, 9.676, 12.11, 15.09, 18.64",\
                 "4.468, 4.646, 5.12, 5.852, 6.916, 8.393, 10.33, 12.77, 15.75, 19.3",\
                 "5.043, 5.24, 5.746, 6.494, 7.562, 9.037, 10.97, 13.42, 16.39, 19.94",\
                 "5.579, 5.797, 6.343, 7.114, 8.186, 9.661, 11.6, 14.04, 17.02, 20.56");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.6566, 0.751, 1.025, 1.459, 2.071, 2.907, 4.017, 5.467, 7.28, 9.493",\
                 "0.6574, 0.7514, 1.025, 1.459, 2.069, 2.905, 4.022, 5.47, 7.288, 9.491",\
                 "0.657, 0.7514, 1.024, 1.46, 2.07, 2.905, 4.021, 5.467, 7.287, 9.485",\
                 "0.6534, 0.7488, 1.023, 1.459, 2.074, 2.908, 4.019, 5.468, 7.286, 9.493",\
                 "0.6472, 0.7424, 1.019, 1.454, 2.067, 2.906, 4.02, 5.465, 7.287, 9.485",\
                 "0.646, 0.7406, 1.014, 1.447, 2.059, 2.897, 4.016, 5.464, 7.286, 9.484",\
                 "0.6472, 0.742, 1.016, 1.45, 2.06, 2.892, 4.004, 5.448, 7.278, 9.486",\
                 "0.648, 0.744, 1.018, 1.454, 2.064, 2.898, 4.006, 5.45, 7.258, 9.46",\
                 "0.648, 0.742, 1.02, 1.454, 2.068, 2.898, 4.014, 5.458, 7.27, 9.462",\
                 "0.65, 0.746, 1.02, 1.454, 2.064, 2.9, 4.01, 5.456, 7.274, 9.466");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.594, 0.7546, 1.3, 2.374, 4.118, 6.601, 9.881, 13.96, 18.97, 24.99",\
                 "0.5942, 0.7536, 1.299, 2.372, 4.118, 6.589, 9.85, 14, 19, 24.98",\
                 "0.5942, 0.7538, 1.299, 2.374, 4.117, 6.6, 9.849, 13.96, 18.99, 24.97",\
                 "0.5944, 0.7542, 1.3, 2.374, 4.117, 6.601, 9.88, 13.97, 19, 25",\
                 "0.6262, 0.7814, 1.314, 2.378, 4.115, 6.601, 9.881, 13.97, 19, 25.02",\
                 "0.6766, 0.8282, 1.353, 2.402, 4.127, 6.599, 9.872, 13.98, 19, 24.98",\
                 "0.7472, 0.8914, 1.395, 2.424, 4.142, 6.604, 9.868, 13.98, 18.99, 24.98",\
                 "0.834, 0.974, 1.456, 2.452, 4.152, 6.622, 9.87, 13.99, 19, 24.97",\
                 "0.938, 1.076, 1.53, 2.494, 4.162, 6.626, 9.884, 13.98, 19.01, 25",\
                 "1.05, 1.194, 1.63, 2.544, 4.186, 6.628, 9.882, 13.99, 19.01, 24.97");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("3.417, 3.543, 3.867, 4.31, 4.849, 5.495, 6.27, 7.2, 8.311, 9.623",\
                 "3.489, 3.615, 3.94, 4.383, 4.921, 5.567, 6.342, 7.272, 8.383, 9.695",\
                 "3.735, 3.861, 4.186, 4.629, 5.168, 5.814, 6.589, 7.519, 8.629, 9.941",\
                 "4.166, 4.292, 4.616, 5.059, 5.599, 6.245, 7.019, 7.95, 9.06, 10.37",\
                 "4.658, 4.784, 5.11, 5.552, 6.091, 6.737, 7.512, 8.442, 9.552, 10.86",\
                 "5.164, 5.29, 5.616, 6.058, 6.598, 7.244, 8.019, 8.949, 10.06, 11.37",\
                 "5.675, 5.801, 6.126, 6.57, 7.109, 7.757, 8.533, 9.463, 10.57, 11.88",\
                 "6.18, 6.306, 6.63, 7.074, 7.614, 8.261, 9.036, 9.967, 11.08, 12.39",\
                 "6.666, 6.792, 7.117, 7.56, 8.1, 8.748, 9.523, 10.45, 11.56, 12.88",\
                 "7.123, 7.249, 7.574, 8.017, 8.559, 9.206, 9.981, 10.91, 12.02, 13.34");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("3.346, 3.486, 3.9, 4.607, 5.668, 7.145, 9.084, 11.53, 14.51, 18.04",\
                 "3.418, 3.556, 3.972, 4.679, 5.739, 7.217, 9.155, 11.6, 14.58, 18.12",\
                 "3.687, 3.826, 4.241, 4.947, 6.008, 7.485, 9.426, 11.87, 14.85, 18.38",\
                 "4.226, 4.364, 4.78, 5.486, 6.547, 8.024, 9.964, 12.41, 15.39, 18.92",\
                 "5.067, 5.205, 5.621, 6.327, 7.387, 8.866, 10.8, 13.25, 16.23, 19.77",\
                 "6.132, 6.271, 6.686, 7.392, 8.453, 9.931, 11.87, 14.31, 17.28, 20.83",\
                 "7.323, 7.463, 7.878, 8.584, 9.646, 11.12, 13.06, 15.5, 18.48, 22.03",\
                 "8.621, 8.761, 9.178, 9.885, 10.95, 12.42, 14.36, 16.8, 19.78, 23.33",\
                 "10.03, 10.17, 10.59, 11.29, 12.35, 13.83, 15.77, 18.21, 21.19, 24.74",\
                 "11.54, 11.68, 12.1, 12.8, 13.87, 15.34, 17.28, 19.72, 22.7, 26.25");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.6164, 0.7144, 0.994, 1.436, 2.053, 2.892, 4.015, 5.467, 7.282, 9.495",\
                 "0.6168, 0.714, 0.9946, 1.436, 2.057, 2.897, 4.015, 5.464, 7.285, 9.485",\
                 "0.6164, 0.7146, 0.9936, 1.437, 2.055, 2.897, 4.015, 5.467, 7.285, 9.487",\
                 "0.6168, 0.7146, 0.995, 1.436, 2.054, 2.891, 4.014, 5.466, 7.279, 9.481",\
                 "0.6172, 0.7148, 0.9942, 1.437, 2.059, 2.898, 4.014, 5.462, 7.286, 9.478",\
                 "0.6184, 0.717, 0.9942, 1.436, 2.053, 2.896, 4.014, 5.462, 7.284, 9.496",\
                 "0.62, 0.716, 0.996, 1.438, 2.054, 2.896, 4.01, 5.462, 7.276, 9.494",\
                 "0.62, 0.718, 0.996, 1.438, 2.058, 2.894, 4.014, 5.46, 7.274, 9.482",\
                 "0.618, 0.718, 0.998, 1.436, 2.054, 2.894, 4.01, 5.462, 7.278, 9.476",\
                 "0.622, 0.718, 1, 1.44, 2.056, 2.898, 4.014, 5.464, 7.28, 9.498");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.008585, 0.01242, 0.02589, 0.05162, 0.0917, 0.1479, 0.2219, 0.3152, 0.429, 0.5646");
          values("0.5736, 0.735, 1.288, 2.371, 4.116, 6.6, 9.851, 13.97, 19, 24.97",\
                 "0.5734, 0.7358, 1.287, 2.371, 4.116, 6.601, 9.878, 13.97, 19, 24.98",\
                 "0.5728, 0.7362, 1.287, 2.37, 4.116, 6.596, 9.881, 13.97, 19, 24.95",\
                 "0.5738, 0.7356, 1.288, 2.371, 4.118, 6.593, 9.88, 13.97, 19, 24.96",\
                 "0.574, 0.7362, 1.289, 2.371, 4.115, 6.6, 9.866, 13.97, 19, 24.96",\
                 "0.5748, 0.7368, 1.288, 2.368, 4.114, 6.59, 9.85, 13.98, 18.97, 24.98",\
                 "0.578, 0.74, 1.292, 2.368, 4.118, 6.598, 9.848, 13.96, 19.01, 25",\
                 "0.58, 0.742, 1.292, 2.37, 4.116, 6.59, 9.85, 13.97, 19.02, 24.96",\
                 "0.586, 0.748, 1.294, 2.374, 4.116, 6.588, 9.844, 13.96, 19.01, 25.02",\
                 "0.592, 0.752, 1.298, 2.376, 4.114, 6.6, 9.846, 13.95, 18.97, 24.99");
        }
      }
    }
  }

