/*
 * 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 : "0.0002390958" ;
    }

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

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

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

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

    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 : 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.03588, 0.03555, 0.03487, 0.03432, 0.03391, 0.0337, 0.03365, \
                  0.03372, 0.03348, 0.02902");
        }

        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.0248, 0.02454, 0.0242, 0.02405, 0.02397, 0.02392, 0.02392, 0.02398, \
                  0.02368, 0.02143");
        }

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

    pin(I) {
      capacitance : 0.004465 ;
      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.01781, 0.01757, 0.01718, 0.01697, 0.01688, 0.01686, 0.01691, \
                  0.01701, 0.01693, 0.01571");
        }

        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.00406, 0.003969, 0.003755, 0.003521, 0.003362, 0.003284, 0.003281, \
                  0.003343, 0.00355, 0.004046");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.003998 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.3769 ;
      max_transition : 25 ;
      min_capacitance : 0.004998 ;
      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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.02992, 0.02992, 0.02991, 0.0299, 0.02989, 0.02989, 0.0299, 0.0299, 0.0299, 0.02989",\
                 "0.03005, 0.03005, 0.03003, 0.03003, 0.03002, 0.03003, 0.03004, 0.03004, 0.03004, 0.03003",\
                 "0.03045, 0.03046, 0.03044, 0.03044, 0.03042, 0.03043, 0.03043, 0.03043, 0.03044, 0.03042",\
                 "0.03071, 0.03072, 0.03072, 0.03069, 0.0307, 0.03069, 0.0307, 0.03069, 0.0307, 0.03068",\
                 "0.03095, 0.03095, 0.03094, 0.03093, 0.03093, 0.03093, 0.03094, 0.03094, 0.03094, 0.03088",\
                 "0.03125, 0.03126, 0.03124, 0.03124, 0.03123, 0.03122, 0.03123, 0.03123, 0.03122, 0.03113",\
                 "0.0316, 0.03161, 0.03161, 0.0316, 0.03159, 0.03161, 0.03159, 0.03158, 0.03154, 0.03129",\
                 "0.03205, 0.03205, 0.03206, 0.03203, 0.03203, 0.03204, 0.03204, 0.03201, 0.03179, 0.03117",\
                 "0.03284, 0.03283, 0.03283, 0.03282, 0.0328, 0.03281, 0.03273, 0.03241, 0.03157, 0.0306",\
                 "0.03416, 0.03414, 0.03413, 0.03408, 0.03398, 0.03359, 0.03256, 0.03144, 0.03064, 0.03006");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.0191, 0.0191, 0.01912, 0.01914, 0.01923, 0.01941, 0.01981, 0.02916, 0.07902, 0.1889",\
                 "0.01897, 0.01898, 0.01897, 0.01902, 0.0191, 0.01914, 0.01984, 0.02918, 0.08053, 0.1909",\
                 "0.01861, 0.01862, 0.01862, 0.01869, 0.01876, 0.01889, 0.01977, 0.03037, 0.08589, 0.1981",\
                 "0.0182, 0.0182, 0.0182, 0.01828, 0.01834, 0.0185, 0.01969, 0.03383, 0.09762, 0.2115",\
                 "0.01789, 0.01791, 0.01792, 0.01797, 0.01805, 0.01818, 0.02009, 0.04084, 0.1169, 0.2288",\
                 "0.01773, 0.01773, 0.01772, 0.01781, 0.01785, 0.01797, 0.02198, 0.05477, 0.1436, 0.2462",\
                 "0.01771, 0.01773, 0.01771, 0.01771, 0.01784, 0.01837, 0.0276, 0.08051, 0.1741, 0.2573",\
                 "0.01781, 0.01782, 0.01782, 0.01785, 0.01779, 0.01999, 0.04563, 0.1188, 0.1963, 0.2531",\
                 "0.01816, 0.01817, 0.01817, 0.01821, 0.01867, 0.03179, 0.08629, 0.1482, 0.1919, 0.2223",\
                 "0.01906, 0.01908, 0.01911, 0.0194, 0.03226, 0.07361, 0.1065, 0.1275, 0.1413, 0.1507");
        }
      }

      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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.04823, 0.0484, 0.04879, 0.04916, 0.04941, 0.04956, 0.04966, 0.04972, 0.04976, 0.04976",\
                 "0.04814, 0.04832, 0.04872, 0.04908, 0.04933, 0.04948, 0.04958, 0.04964, 0.04967, 0.04968",\
                 "0.04785, 0.04803, 0.04841, 0.04879, 0.04903, 0.04918, 0.04928, 0.04934, 0.04938, 0.04937",\
                 "0.04749, 0.04767, 0.04806, 0.04844, 0.04868, 0.04883, 0.04892, 0.04899, 0.04902, 0.049",\
                 "0.04723, 0.04741, 0.0478, 0.04817, 0.04842, 0.04857, 0.04867, 0.04873, 0.04876, 0.0487",\
                 "0.04707, 0.04724, 0.04762, 0.04799, 0.04824, 0.0484, 0.04849, 0.04855, 0.04856, 0.04841",\
                 "0.04698, 0.04714, 0.04754, 0.04792, 0.04817, 0.04832, 0.04842, 0.04846, 0.04839, 0.048",\
                 "0.04699, 0.04716, 0.04755, 0.04789, 0.04815, 0.04831, 0.0484, 0.04836, 0.04795, 0.04712",\
                 "0.04714, 0.0473, 0.04767, 0.04803, 0.04827, 0.04839, 0.04825, 0.04757, 0.04656, 0.04573",\
                 "0.04675, 0.0469, 0.04722, 0.04743, 0.0472, 0.04613, 0.04511, 0.04441, 0.04395, 0.04362");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.02561, 0.02575, 0.02611, 0.02651, 0.02682, 0.02713, 0.02811, 0.04218, 0.1057, 0.219",\
                 "0.02538, 0.02554, 0.02587, 0.02627, 0.02659, 0.02692, 0.02796, 0.04257, 0.1075, 0.2208",\
                 "0.02499, 0.02514, 0.02547, 0.02584, 0.02617, 0.02646, 0.02783, 0.04469, 0.1141, 0.2277",\
                 "0.02466, 0.02485, 0.02517, 0.02557, 0.02591, 0.02624, 0.02835, 0.05091, 0.1291, 0.2402",\
                 "0.02452, 0.02468, 0.02498, 0.02536, 0.0257, 0.0261, 0.03005, 0.06379, 0.1532, 0.2553",\
                 "0.0244, 0.02454, 0.02487, 0.02523, 0.02557, 0.02615, 0.03584, 0.08887, 0.1826, 0.2655",\
                 "0.02435, 0.02448, 0.02479, 0.02522, 0.02551, 0.02782, 0.05347, 0.127, 0.2043, 0.2611",\
                 "0.02438, 0.0245, 0.02476, 0.0251, 0.02592, 0.03946, 0.09477, 0.156, 0.199, 0.2288",\
                 "0.02424, 0.02434, 0.02462, 0.02536, 0.04096, 0.08139, 0.1113, 0.1302, 0.1425, 0.1509",\
                 "0.01053, 0.01053, 0.01051, 0.0105, 0.01048, 0.01047, 0.01047, 0.01047, 0.01046, 0.01046");
        }
      }

      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.694, 0.786, 1.065, 1.605, 2.341, 3.177, 4.101, 5.12, 6.219, \
                  7.407");
        }

        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.356, 1.415, 1.686, 2.221, 3.029, 3.966, 5.003, 6.133, 7.36, \
                  8.656");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("1.888, 2.023, 2.358, 2.814, 3.365, 4.023, 4.809, 5.747, 6.864, 8.181",\
                 "1.974, 2.108, 2.445, 2.9, 3.452, 4.111, 4.896, 5.834, 6.951, 8.267",\
                 "2.239, 2.374, 2.711, 3.167, 3.717, 4.376, 5.161, 6.1, 7.216, 8.533",\
                 "2.67, 2.804, 3.14, 3.593, 4.144, 4.803, 5.588, 6.526, 7.643, 8.957",\
                 "3.189, 3.321, 3.653, 4.104, 4.654, 5.312, 6.096, 7.035, 8.151, 9.467",\
                 "3.671, 3.802, 4.133, 4.582, 5.128, 5.783, 6.567, 7.504, 8.62, 9.937",\
                 "4.122, 4.254, 4.586, 5.036, 5.583, 6.238, 7.019, 7.952, 9.066, 10.38",\
                 "4.546, 4.678, 5.008, 5.46, 6.007, 6.663, 7.445, 8.38, 9.491, 10.8",\
                 "4.936, 5.068, 5.4, 5.849, 6.398, 7.055, 7.836, 8.773, 9.885, 11.2",\
                 "5.289, 5.418, 5.75, 6.201, 6.75, 7.405, 8.189, 9.125, 10.24, 11.55");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("1.144, 1.283, 1.693, 2.391, 3.447, 4.923, 6.864, 9.307, 12.29, 15.85",\
                 "1.207, 1.346, 1.756, 2.454, 3.51, 4.986, 6.928, 9.37, 12.35, 15.91",\
                 "1.435, 1.574, 1.984, 2.682, 3.738, 5.214, 7.156, 9.606, 12.6, 16.14",\
                 "1.862, 2.001, 2.411, 3.109, 4.164, 5.64, 7.58, 10.03, 13.01, 16.56",\
                 "2.383, 2.527, 2.947, 3.651, 4.708, 6.183, 8.126, 10.57, 13.55, 17.11",\
                 "2.918, 3.071, 3.502, 4.213, 5.277, 6.754, 8.694, 11.15, 14.12, 17.68",\
                 "3.45, 3.615, 4.064, 4.782, 5.846, 7.329, 9.272, 11.72, 14.7, 18.27",\
                 "3.962, 4.143, 4.615, 5.342, 6.407, 7.889, 9.835, 12.29, 15.27, 18.83",\
                 "4.439, 4.64, 5.143, 5.886, 6.953, 8.432, 10.38, 12.83, 15.82, 19.37",\
                 "4.87, 5.093, 5.636, 6.397, 7.468, 8.947, 10.89, 13.34, 16.33, 19.89");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.615, 0.7128, 0.9948, 1.443, 2.07, 2.913, 4.031, 5.476, 7.287, 9.493",\
                 "0.6152, 0.7138, 0.995, 1.443, 2.068, 2.912, 4.029, 5.475, 7.281, 9.495",\
                 "0.6166, 0.7138, 0.9952, 1.444, 2.066, 2.914, 4.031, 5.477, 7.291, 9.483",\
                 "0.6096, 0.708, 0.9918, 1.44, 2.065, 2.913, 4.03, 5.477, 7.288, 9.496",\
                 "0.5948, 0.6948, 0.9822, 1.437, 2.062, 2.911, 4.029, 5.469, 7.288, 9.483",\
                 "0.5922, 0.6932, 0.9766, 1.426, 2.05, 2.896, 4.019, 5.465, 7.284, 9.484",\
                 "0.5944, 0.6942, 0.98, 1.428, 2.054, 2.894, 4.004, 5.448, 7.274, 9.484",\
                 "0.594, 0.694, 0.98, 1.432, 2.058, 2.9, 4.014, 5.452, 7.252, 9.45",\
                 "0.594, 0.696, 0.98, 1.43, 2.056, 2.902, 4.014, 5.456, 7.264, 9.456",\
                 "0.596, 0.696, 0.982, 1.434, 2.058, 2.904, 4.018, 5.458, 7.27, 9.464");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.5244, 0.6868, 1.233, 2.314, 4.063, 6.554, 9.821, 13.96, 18.99, 24.98",\
                 "0.5246, 0.6874, 1.233, 2.312, 4.066, 6.546, 9.815, 13.96, 18.99, 24.96",\
                 "0.524, 0.686, 1.234, 2.315, 4.068, 6.561, 9.85, 13.96, 19, 25",\
                 "0.5264, 0.6874, 1.235, 2.316, 4.068, 6.561, 9.83, 13.96, 19, 25.01",\
                 "0.555, 0.7156, 1.255, 2.322, 4.069, 6.559, 9.82, 13.95, 18.98, 24.99",\
                 "0.6014, 0.7548, 1.284, 2.347, 4.08, 6.551, 9.836, 13.99, 18.99, 24.98",\
                 "0.6666, 0.8146, 1.317, 2.361, 4.094, 6.57, 9.834, 13.96, 18.98, 25",\
                 "0.748, 0.888, 1.37, 2.382, 4.104, 6.578, 9.844, 13.96, 18.98, 25.02",\
                 "0.842, 0.982, 1.438, 2.414, 4.108, 6.584, 9.852, 13.97, 19.01, 25.02",\
                 "0.942, 1.09, 1.522, 2.454, 4.124, 6.59, 9.862, 13.99, 19.01, 25.02");
        }
      }

      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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("3.638, 3.774, 4.112, 4.567, 5.116, 5.774, 6.56, 7.497, 8.614, 9.93",\
                 "3.709, 3.844, 4.183, 4.636, 5.187, 5.845, 6.63, 7.569, 8.685, 10",\
                 "3.953, 4.089, 4.427, 4.882, 5.432, 6.089, 6.874, 7.812, 8.929, 10.25",\
                 "4.353, 4.489, 4.826, 5.281, 5.832, 6.489, 7.275, 8.213, 9.329, 10.65",\
                 "4.792, 4.928, 5.265, 5.72, 6.271, 6.928, 7.713, 8.651, 9.768, 11.08",\
                 "5.238, 5.373, 5.711, 6.165, 6.716, 7.374, 8.159, 9.097, 10.21, 11.53",\
                 "5.683, 5.818, 6.156, 6.612, 7.163, 7.821, 8.607, 9.545, 10.66, 11.98",\
                 "6.115, 6.25, 6.589, 7.042, 7.594, 8.252, 9.038, 9.977, 11.09, 12.41",\
                 "6.524, 6.659, 6.997, 7.451, 8.003, 8.661, 9.447, 10.39, 11.5, 12.82",\
                 "6.902, 7.038, 7.376, 7.831, 8.383, 9.04, 9.826, 10.76, 11.88, 13.2");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("2.883, 3.023, 3.439, 4.145, 5.207, 6.688, 8.631, 11.09, 14.06, 17.62",\
                 "2.952, 3.093, 3.508, 4.214, 5.277, 6.758, 8.7, 11.16, 14.13, 17.69",\
                 "3.221, 3.361, 3.777, 4.483, 5.545, 7.026, 8.969, 11.43, 14.41, 17.96",\
                 "3.761, 3.903, 4.317, 5.024, 6.087, 7.568, 9.512, 11.96, 14.94, 18.5",\
                 "4.573, 4.714, 5.128, 5.834, 6.898, 8.379, 10.32, 12.78, 15.77, 19.31",\
                 "5.541, 5.681, 6.097, 6.802, 7.866, 9.348, 11.29, 13.74, 16.72, 20.29",\
                 "6.615, 6.756, 7.171, 7.879, 8.941, 10.42, 12.37, 14.81, 17.81, 21.36",\
                 "7.789, 7.93, 8.346, 9.052, 10.12, 11.6, 13.54, 15.99, 18.98, 22.54",\
                 "9.064, 9.205, 9.623, 10.33, 11.39, 12.87, 14.82, 17.27, 20.25, 23.81",\
                 "10.43, 10.57, 10.99, 11.7, 12.76, 14.24, 16.19, 18.64, 21.62, 25.18");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.5838, 0.684, 0.9714, 1.425, 2.053, 2.9, 4.022, 5.472, 7.278, 9.493",\
                 "0.5848, 0.684, 0.9712, 1.424, 2.055, 2.905, 4.022, 5.466, 7.281, 9.492",\
                 "0.5848, 0.6844, 0.9706, 1.425, 2.056, 2.9, 4.025, 5.469, 7.282, 9.492",\
                 "0.584, 0.6836, 0.9704, 1.423, 2.051, 2.9, 4.024, 5.472, 7.289, 9.491",\
                 "0.585, 0.6844, 0.9718, 1.425, 2.051, 2.899, 4.025, 5.473, 7.282, 9.48",\
                 "0.5848, 0.6848, 0.971, 1.423, 2.054, 2.906, 4.026, 5.472, 7.288, 9.482",\
                 "0.584, 0.684, 0.972, 1.426, 2.054, 2.9, 4.02, 5.474, 7.288, 9.482",\
                 "0.586, 0.686, 0.972, 1.426, 2.056, 2.906, 4.02, 5.466, 7.276, 9.48",\
                 "0.586, 0.686, 0.974, 1.428, 2.056, 2.902, 4.02, 5.476, 7.282, 9.474",\
                 "0.586, 0.686, 0.974, 1.428, 2.056, 2.902, 4.02, 5.476, 7.284, 9.476");
        }

        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.004998, 0.007565, 0.01658, 0.03378, 0.06059, 0.09821, 0.1477, 0.2101, 0.2862, 0.3769");
          values("0.504, 0.6694, 1.22, 2.312, 4.067, 6.56, 9.828, 13.96, 19, 24.98",\
                 "0.5044, 0.6688, 1.222, 2.312, 4.067, 6.56, 9.829, 13.96, 19, 24.98",\
                 "0.5042, 0.6698, 1.224, 2.311, 4.066, 6.559, 9.828, 13.97, 19, 24.96",\
                 "0.5042, 0.6696, 1.222, 2.311, 4.068, 6.556, 9.818, 13.94, 18.99, 24.98",\
                 "0.5048, 0.6728, 1.222, 2.312, 4.066, 6.562, 9.83, 13.96, 19, 24.98",\
                 "0.5064, 0.6702, 1.225, 2.31, 4.066, 6.548, 9.818, 13.95, 18.97, 25.01",\
                 "0.51, 0.674, 1.224, 2.314, 4.066, 6.558, 9.83, 13.94, 18.97, 25.02",\
                 "0.512, 0.674, 1.226, 2.31, 4.062, 6.55, 9.826, 13.96, 18.98, 24.98",\
                 "0.516, 0.678, 1.23, 2.314, 4.066, 6.546, 9.812, 13.94, 19.01, 25.04",\
                 "0.518, 0.682, 1.234, 2.314, 4.068, 6.552, 9.82, 13.94, 18.98, 25");
        }
      }
    }
  }

