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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.04256, 0.04206, 0.04114, 0.04049, 0.04017, 0.04017, 0.04051, \
                 0.04117, 0.04211, 0.04335");
        }

        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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.02986, 0.02949, 0.02903, 0.02886, 0.02887, 0.02899, 0.02923, \
                 0.02961, 0.03016, 0.03086");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.02109, 0.02075, 0.02024, 0.02003, 0.02, 0.02015, 0.02043, 0.02084, \
                 0.0214, 0.02215");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.004869, 0.004728, 0.004438, 0.004142, 0.004021, 0.004077, 0.00431, \
                 0.00469, 0.005246, 0.005984");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.003758 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.4049 ;
      max_transition : 12 ;
      min_capacitance : 0.004758 ;
      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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.03566, 0.03566, 0.03565, 0.03564, 0.03563, 0.03563, 0.03564, 0.03564, 0.03565, 0.03565",\
                 "0.03573, 0.03576, 0.03574, 0.03572, 0.03571, 0.03572, 0.03572, 0.03573, 0.03573, 0.03573",\
                 "0.03617, 0.03618, 0.03617, 0.03615, 0.03615, 0.03614, 0.03615, 0.03617, 0.03618, 0.03617",\
                 "0.03647, 0.03648, 0.03645, 0.03646, 0.03643, 0.03644, 0.03647, 0.03647, 0.03648, 0.03649",\
                 "0.03688, 0.03688, 0.03687, 0.03685, 0.03685, 0.03685, 0.03686, 0.03686, 0.03686, 0.03686",\
                 "0.03741, 0.03739, 0.03737, 0.03737, 0.03738, 0.03737, 0.03737, 0.03738, 0.03738, 0.03738",\
                 "0.03819, 0.03819, 0.03817, 0.03817, 0.03817, 0.03818, 0.03818, 0.03817, 0.03817, 0.03818",\
                 "0.03919, 0.03919, 0.03919, 0.03918, 0.03917, 0.03918, 0.03919, 0.03919, 0.03919, 0.03918",\
                 "0.04043, 0.04044, 0.04043, 0.04041, 0.04041, 0.04041, 0.04041, 0.04041, 0.04041, 0.04042",\
                 "0.04193, 0.04193, 0.04192, 0.0419, 0.04189, 0.0419, 0.0419, 0.04191, 0.04191, 0.04191");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.02362, 0.02361, 0.02365, 0.02369, 0.02374, 0.02386, 0.02412, 0.02404, 0.02531, 0.03224",\
                 "0.0234, 0.0234, 0.0234, 0.02347, 0.02352, 0.0237, 0.02392, 0.02391, 0.02461, 0.03211",\
                 "0.02287, 0.02287, 0.02287, 0.02289, 0.02298, 0.02314, 0.02322, 0.02353, 0.02479, 0.03209",\
                 "0.0224, 0.0224, 0.02242, 0.02246, 0.02257, 0.02264, 0.02291, 0.02305, 0.02445, 0.03322",\
                 "0.02213, 0.02214, 0.02216, 0.02217, 0.02226, 0.02244, 0.02259, 0.02269, 0.02444, 0.03516",\
                 "0.02221, 0.02226, 0.02221, 0.02221, 0.02241, 0.02246, 0.02272, 0.02304, 0.02458, 0.03946",\
                 "0.0226, 0.02262, 0.02259, 0.0226, 0.02269, 0.02302, 0.023, 0.02348, 0.02582, 0.04535",\
                 "0.02331, 0.02336, 0.02334, 0.02331, 0.02327, 0.02349, 0.02392, 0.02402, 0.02793, 0.05597",\
                 "0.02431, 0.02434, 0.02434, 0.02434, 0.02444, 0.02424, 0.02466, 0.02559, 0.03254, 0.074",\
                 "0.02569, 0.02568, 0.02572, 0.02571, 0.02575, 0.02563, 0.02563, 0.02733, 0.04139, 0.1071");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.05672, 0.05697, 0.05751, 0.05802, 0.05836, 0.05855, 0.05868, 0.05876, 0.05881, 0.05885",\
                 "0.05658, 0.05682, 0.05738, 0.05789, 0.05822, 0.05842, 0.05855, 0.05863, 0.05868, 0.05871",\
                 "0.05615, 0.0564, 0.05694, 0.05746, 0.05778, 0.05798, 0.05812, 0.0582, 0.05825, 0.05829",\
                 "0.05572, 0.05595, 0.05649, 0.05701, 0.05735, 0.05754, 0.05768, 0.05776, 0.05781, 0.05785",\
                 "0.05546, 0.0557, 0.05623, 0.05675, 0.05709, 0.0573, 0.05743, 0.05751, 0.05756, 0.0576",\
                 "0.05542, 0.05566, 0.0562, 0.05671, 0.05704, 0.05725, 0.05738, 0.05746, 0.05752, 0.05755",\
                 "0.05556, 0.05577, 0.0563, 0.05681, 0.05717, 0.05738, 0.05751, 0.05759, 0.05765, 0.0577",\
                 "0.0559, 0.05614, 0.05663, 0.05713, 0.05747, 0.0577, 0.05784, 0.05793, 0.05798, 0.05802",\
                 "0.05642, 0.05663, 0.05713, 0.05763, 0.05798, 0.0582, 0.05834, 0.05843, 0.05849, 0.05853",\
                 "0.0571, 0.05731, 0.05782, 0.0583, 0.05864, 0.05887, 0.05903, 0.05912, 0.05918, 0.05922");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.05177, 0.05195, 0.05241, 0.05294, 0.05337, 0.05375, 0.05399, 0.05428, 0.05529, 0.06533",\
                 "0.05141, 0.05162, 0.0521, 0.0526, 0.05303, 0.05341, 0.05358, 0.05403, 0.05553, 0.06376",\
                 "0.05089, 0.05115, 0.05156, 0.05207, 0.05249, 0.05289, 0.05313, 0.05349, 0.0551, 0.06395",\
                 "0.05056, 0.05076, 0.05124, 0.05177, 0.05217, 0.05256, 0.05295, 0.05304, 0.05471, 0.06567",\
                 "0.05044, 0.05064, 0.05107, 0.05158, 0.05206, 0.05237, 0.05278, 0.05289, 0.05457, 0.06931",\
                 "0.05047, 0.05065, 0.05112, 0.05159, 0.05206, 0.05242, 0.05282, 0.05315, 0.05536, 0.07495",\
                 "0.05064, 0.05081, 0.05116, 0.05171, 0.05222, 0.05251, 0.05286, 0.05339, 0.05793, 0.08648",\
                 "0.05098, 0.05114, 0.05153, 0.05191, 0.0524, 0.05298, 0.05316, 0.05378, 0.06137, 0.1051",\
                 "0.05147, 0.05167, 0.052, 0.05237, 0.05274, 0.05316, 0.05399, 0.05527, 0.07017, 0.1404",\
                 "0.05212, 0.05231, 0.05262, 0.05308, 0.05345, 0.05386, 0.05422, 0.05919, 0.09195, 0.2014");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.329, 0.366, 0.49, 0.727, 1.027, 1.355, 1.711, 2.094, 2.508, \
                 2.953");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.587, 0.619, 0.735, 0.973, 1.296, 1.653, 2.035, 2.45, 2.885, \
                 3.357");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.7038, 0.7718, 0.9372, 1.158, 1.428, 1.753, 2.147, 2.624, 3.195, 3.873",\
                 "0.7388, 0.8072, 0.9724, 1.193, 1.463, 1.789, 2.183, 2.659, 3.23, 3.908",\
                 "0.8484, 0.9166, 1.082, 1.302, 1.572, 1.898, 2.292, 2.768, 3.34, 4.017",\
                 "1.029, 1.095, 1.258, 1.478, 1.746, 2.071, 2.466, 2.942, 3.513, 4.19",\
                 "1.215, 1.279, 1.439, 1.656, 1.923, 2.248, 2.641, 3.117, 3.689, 4.366",\
                 "1.354, 1.419, 1.578, 1.795, 2.061, 2.384, 2.776, 3.252, 3.823, 4.5",\
                 "1.461, 1.525, 1.685, 1.902, 2.169, 2.492, 2.884, 3.358, 3.927, 4.604",\
                 "1.536, 1.6, 1.761, 1.978, 2.244, 2.569, 2.961, 3.436, 4.005, 4.681",\
                 "1.578, 1.642, 1.802, 2.02, 2.287, 2.611, 3.003, 3.478, 4.048, 4.723",\
                 "1.586, 1.65, 1.809, 2.026, 2.294, 2.618, 3.011, 3.486, 4.057, 4.733");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.4725, 0.5393, 0.7337, 1.063, 1.563, 2.262, 3.183, 4.339, 5.752, 7.445",\
                 "0.4996, 0.5663, 0.7606, 1.09, 1.59, 2.289, 3.21, 4.366, 5.78, 7.473",\
                 "0.5967, 0.6636, 0.8577, 1.187, 1.687, 2.386, 3.307, 4.464, 5.879, 7.568",\
                 "0.7651, 0.8329, 1.028, 1.359, 1.858, 2.558, 3.478, 4.636, 6.051, 7.738",\
                 "0.9384, 1.01, 1.212, 1.546, 2.047, 2.746, 3.667, 4.827, 6.243, 7.923",\
                 "1.095, 1.173, 1.382, 1.719, 2.223, 2.923, 3.843, 5.002, 6.421, 8.109",\
                 "1.226, 1.313, 1.532, 1.873, 2.377, 3.079, 4.001, 5.159, 6.572, 8.262",\
                 "1.327, 1.423, 1.657, 2.004, 2.508, 3.209, 4.131, 5.292, 6.705, 8.39",\
                 "1.393, 1.499, 1.752, 2.107, 2.612, 3.313, 4.233, 5.394, 6.81, 8.495",\
                 "1.422, 1.54, 1.814, 2.18, 2.687, 3.387, 4.307, 5.467, 6.882, 8.569");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.2811, 0.3294, 0.4661, 0.6882, 1.002, 1.433, 2.012, 2.767, 3.711, 4.846",\
                 "0.2818, 0.3299, 0.4664, 0.6882, 1.002, 1.433, 2.012, 2.767, 3.711, 4.846",\
                 "0.2812, 0.3294, 0.466, 0.6876, 1.003, 1.433, 2.012, 2.765, 3.71, 4.847",\
                 "0.2686, 0.3192, 0.4596, 0.6822, 0.9982, 1.432, 2.012, 2.762, 3.706, 4.854",\
                 "0.2588, 0.3092, 0.4514, 0.6756, 0.9932, 1.428, 2.01, 2.762, 3.705, 4.853",\
                 "0.2576, 0.3094, 0.4518, 0.6764, 0.9892, 1.421, 2.005, 2.761, 3.709, 4.845",\
                 "0.2582, 0.3096, 0.4518, 0.6762, 0.9928, 1.423, 2.002, 2.751, 3.697, 4.845",\
                 "0.258, 0.3094, 0.4522, 0.6764, 0.9938, 1.423, 2.005, 2.755, 3.696, 4.832",\
                 "0.258, 0.3094, 0.4518, 0.6766, 0.9946, 1.426, 2.004, 2.757, 3.697, 4.832",\
                 "0.2584, 0.3096, 0.4522, 0.6762, 0.9946, 1.426, 2.007, 2.762, 3.704, 4.836");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.2296, 0.3085, 0.5708, 1.092, 1.936, 3.132, 4.717, 6.696, 9.128, 12",\
                 "0.2291, 0.3081, 0.5706, 1.092, 1.936, 3.133, 4.714, 6.695, 9.118, 12",\
                 "0.2288, 0.3078, 0.5699, 1.09, 1.934, 3.131, 4.711, 6.705, 9.132, 11.99",\
                 "0.2352, 0.3116, 0.5732, 1.092, 1.936, 3.131, 4.711, 6.705, 9.134, 11.99",\
                 "0.2538, 0.3294, 0.5864, 1.1, 1.935, 3.13, 4.713, 6.71, 9.141, 12",\
                 "0.2834, 0.3542, 0.602, 1.109, 1.945, 3.136, 4.708, 6.705, 9.142, 12.05",\
                 "0.3208, 0.3888, 0.6222, 1.116, 1.949, 3.141, 4.715, 6.691, 9.131, 12.04",\
                 "0.362, 0.4318, 0.6532, 1.128, 1.951, 3.144, 4.716, 6.699, 9.112, 12.02",\
                 "0.4042, 0.4778, 0.69, 1.144, 1.955, 3.141, 4.716, 6.701, 9.12, 12.01",\
                 "0.4482, 0.5292, 0.7352, 1.167, 1.962, 3.146, 4.718, 6.702, 9.124, 12");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("1.424, 1.495, 1.664, 1.887, 2.157, 2.483, 2.878, 3.354, 3.926, 4.603",\
                 "1.454, 1.525, 1.694, 1.917, 2.187, 2.513, 2.907, 3.384, 3.956, 4.633",\
                 "1.556, 1.627, 1.796, 2.019, 2.289, 2.616, 3.01, 3.486, 4.058, 4.735",\
                 "1.705, 1.775, 1.945, 2.168, 2.438, 2.764, 3.158, 3.635, 4.206, 4.884",\
                 "1.846, 1.917, 2.086, 2.309, 2.579, 2.905, 3.3, 3.776, 4.348, 5.025",\
                 "1.97, 2.041, 2.21, 2.433, 2.704, 3.03, 3.424, 3.901, 4.472, 5.15",\
                 "2.072, 2.143, 2.312, 2.535, 2.806, 3.133, 3.527, 4.003, 4.575, 5.253",\
                 "2.15, 2.222, 2.39, 2.613, 2.884, 3.21, 3.605, 4.081, 4.653, 5.33",\
                 "2.199, 2.269, 2.438, 2.662, 2.933, 3.259, 3.653, 4.13, 4.702, 5.379",\
                 "2.215, 2.286, 2.456, 2.679, 2.95, 3.276, 3.671, 4.147, 4.719, 5.396");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("1.205, 1.273, 1.47, 1.804, 2.308, 3.01, 3.931, 5.092, 6.509, 8.192",\
                 "1.234, 1.303, 1.5, 1.834, 2.338, 3.039, 3.961, 5.122, 6.539, 8.22",\
                 "1.354, 1.422, 1.619, 1.953, 2.456, 3.158, 4.08, 5.241, 6.658, 8.339",\
                 "1.592, 1.66, 1.857, 2.191, 2.694, 3.396, 4.318, 5.476, 6.89, 8.576",\
                 "1.922, 1.99, 2.187, 2.521, 3.024, 3.726, 4.648, 5.806, 7.22, 8.913",\
                 "2.291, 2.359, 2.557, 2.891, 3.395, 4.096, 5.019, 6.176, 7.594, 9.287",\
                 "2.69, 2.758, 2.957, 3.291, 3.794, 4.496, 5.417, 6.576, 7.992, 9.685",\
                 "3.12, 3.189, 3.388, 3.721, 4.225, 4.926, 5.847, 7.007, 8.422, 10.11",\
                 "3.581, 3.65, 3.849, 4.184, 4.688, 5.388, 6.31, 7.469, 8.883, 10.57",\
                 "4.076, 4.146, 4.346, 4.68, 5.184, 5.886, 6.807, 7.967, 9.381, 11.07");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.282, 0.3276, 0.4622, 0.6828, 0.9978, 1.429, 2.011, 2.762, 3.706, 4.853",\
                 "0.2822, 0.328, 0.4622, 0.6818, 0.9978, 1.429, 2.012, 2.763, 3.707, 4.853",\
                 "0.2822, 0.3276, 0.4618, 0.6826, 0.9962, 1.43, 2.011, 2.766, 3.706, 4.853",\
                 "0.2826, 0.3274, 0.4618, 0.6826, 0.999, 1.429, 2.009, 2.765, 3.71, 4.853",\
                 "0.2826, 0.3282, 0.4622, 0.6818, 0.999, 1.431, 2.01, 2.763, 3.707, 4.852",\
                 "0.2826, 0.328, 0.4622, 0.6824, 0.9974, 1.431, 2.011, 2.766, 3.711, 4.847",\
                 "0.2832, 0.328, 0.464, 0.6824, 0.997, 1.43, 2.01, 2.762, 3.707, 4.853",\
                 "0.2832, 0.3288, 0.4634, 0.684, 0.9982, 1.43, 2.011, 2.765, 3.705, 4.845",\
                 "0.2838, 0.3292, 0.464, 0.6834, 0.997, 1.429, 2.009, 2.761, 3.706, 4.847",\
                 "0.284, 0.3294, 0.4638, 0.6834, 0.998, 1.43, 2.01, 2.766, 3.708, 4.844");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004758, 0.00752, 0.01721, 0.03573, 0.06457, 0.105, 0.1583, 0.2254, 0.3073, 0.4049");
          values("0.2216, 0.3008, 0.566, 1.089, 1.933, 3.13, 4.705, 6.691, 9.113, 12.02",\
                 "0.2218, 0.3008, 0.5662, 1.089, 1.933, 3.13, 4.706, 6.71, 9.141, 12",\
                 "0.2214, 0.3008, 0.5662, 1.089, 1.933, 3.13, 4.706, 6.709, 9.14, 12",\
                 "0.2216, 0.3002, 0.566, 1.09, 1.933, 3.129, 4.712, 6.693, 9.129, 12",\
                 "0.2224, 0.3008, 0.566, 1.09, 1.935, 3.132, 4.714, 6.695, 9.117, 12",\
                 "0.2234, 0.3024, 0.567, 1.091, 1.935, 3.134, 4.713, 6.699, 9.118, 12",\
                 "0.225, 0.3038, 0.5678, 1.089, 1.933, 3.131, 4.707, 6.702, 9.139, 12.04",\
                 "0.2264, 0.3052, 0.5686, 1.091, 1.935, 3.128, 4.703, 6.694, 9.128, 12.02",\
                 "0.2288, 0.3074, 0.57, 1.092, 1.932, 3.126, 4.7, 6.684, 9.11, 12.01",\
                 "0.232, 0.31, 0.572, 1.092, 1.934, 3.132, 4.706, 6.684, 9.102, 12");
        }
      }
    }
  }

