/*
 * 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.0019723968" ;
    }

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.008609 ;
      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.05842, 0.05779, 0.05741, 0.05898, 0.06322, 0.07071, 0.08186, \
                  0.09699, 0.1163, 0.14");
        }

        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.03798, 0.03746, 0.03738, 0.03886, 0.04186, 0.04655, 0.05324, \
                  0.0624, 0.07455, 0.08996");
        }

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

    pin(I) {
      capacitance : 0.004446 ;
      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.03006, 0.02966, 0.02941, 0.03041, 0.03282, 0.03694, 0.04286, \
                  0.05077, 0.06081, 0.07308");
        }

        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.0104, 0.01027, 0.01025, 0.01092, 0.0129, 0.01639, 0.02159, 0.02862, \
                  0.03756, 0.04847");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.007105 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.6834 ;
      max_transition : 8.9 ;
      min_capacitance : 0.008105 ;
      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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.05992, 0.0599, 0.05993, 0.0599, 0.0599, 0.05991, 0.05993, 0.05994, 0.05995, 0.05995",\
                 "0.05999, 0.05997, 0.05995, 0.05994, 0.05994, 0.05993, 0.05995, 0.05997, 0.05997, 0.05997",\
                 "0.06115, 0.06116, 0.06113, 0.06111, 0.06112, 0.06114, 0.06115, 0.06116, 0.06117, 0.06117",\
                 "0.06355, 0.06351, 0.0635, 0.06347, 0.06347, 0.06349, 0.0635, 0.06351, 0.06351, 0.06352",\
                 "0.06771, 0.06771, 0.0677, 0.06768, 0.06766, 0.06767, 0.06768, 0.06769, 0.0677, 0.06769",\
                 "0.07392, 0.07394, 0.07392, 0.07392, 0.07393, 0.07391, 0.07391, 0.07391, 0.07392, 0.07393",\
                 "0.08241, 0.08241, 0.08239, 0.08236, 0.08237, 0.08239, 0.0824, 0.0824, 0.08239, 0.0824",\
                 "0.09334, 0.09328, 0.09324, 0.09322, 0.09321, 0.09323, 0.09324, 0.09326, 0.09327, 0.09326",\
                 "0.1066, 0.1066, 0.1066, 0.1065, 0.1065, 0.1065, 0.1066, 0.1066, 0.1066, 0.1066",\
                 "0.1225, 0.1226, 0.1225, 0.1225, 0.1225, 0.1225, 0.1225, 0.1225, 0.1225, 0.1225");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.04551, 0.04555, 0.04545, 0.04557, 0.04566, 0.04596, 0.0463, 0.0466, 0.04751, 0.05167",\
                 "0.04518, 0.04523, 0.04525, 0.04527, 0.04536, 0.04571, 0.04599, 0.04646, 0.04712, 0.05128",\
                 "0.04505, 0.04503, 0.045, 0.04508, 0.04518, 0.04553, 0.04593, 0.04636, 0.04692, 0.05168",\
                 "0.04648, 0.04643, 0.04645, 0.04658, 0.04671, 0.04695, 0.04727, 0.04763, 0.0489, 0.05367",\
                 "0.05023, 0.05029, 0.05023, 0.0505, 0.05057, 0.05087, 0.05121, 0.05177, 0.05247, 0.05805",\
                 "0.05713, 0.05718, 0.05711, 0.05709, 0.05764, 0.05784, 0.05798, 0.05849, 0.05941, 0.0654",\
                 "0.0674, 0.06736, 0.06737, 0.06725, 0.0675, 0.06816, 0.06858, 0.06884, 0.06971, 0.07753",\
                 "0.08106, 0.08111, 0.08115, 0.08103, 0.081, 0.08143, 0.08244, 0.08296, 0.08398, 0.09501",\
                 "0.09851, 0.09858, 0.09873, 0.0986, 0.09854, 0.09861, 0.09923, 0.1008, 0.1024, 0.1173",\
                 "0.1199, 0.1199, 0.1199, 0.12, 0.12, 0.12, 0.1201, 0.1211, 0.1254, 0.1476");
        }
      }

      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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.0981, 0.09837, 0.09918, 0.09996, 0.1005, 0.1008, 0.101, 0.1011, 0.1012, 0.1012",\
                 "0.09794, 0.0982, 0.099, 0.09978, 0.1003, 0.1006, 0.1008, 0.1009, 0.101, 0.1011",\
                 "0.09773, 0.098, 0.09881, 0.09958, 0.1001, 0.1004, 0.1006, 0.1007, 0.1008, 0.1009",\
                 "0.09835, 0.09863, 0.09939, 0.1002, 0.1007, 0.101, 0.1012, 0.1013, 0.1014, 0.1015",\
                 "0.1005, 0.1007, 0.1014, 0.1021, 0.1027, 0.103, 0.1032, 0.1033, 0.1034, 0.1035",\
                 "0.1043, 0.1045, 0.1051, 0.1059, 0.1064, 0.1067, 0.107, 0.1071, 0.1072, 0.1072",\
                 "0.1101, 0.1103, 0.1108, 0.1115, 0.112, 0.1124, 0.1126, 0.1127, 0.1128, 0.1129",\
                 "0.1181, 0.1181, 0.1185, 0.1192, 0.1197, 0.1201, 0.1203, 0.1204, 0.1205, 0.1206",\
                 "0.1281, 0.1281, 0.1285, 0.129, 0.1295, 0.1298, 0.1301, 0.1302, 0.1303, 0.1304",\
                 "0.1404, 0.1404, 0.1405, 0.141, 0.1415, 0.1418, 0.142, 0.1422, 0.1423, 0.1424");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.08677, 0.08723, 0.08837, 0.08954, 0.0905, 0.09142, 0.09205, 0.09275, 0.09354, 0.09871",\
                 "0.08635, 0.0868, 0.08788, 0.08913, 0.0902, 0.09104, 0.09166, 0.09227, 0.09315, 0.09852",\
                 "0.0861, 0.08652, 0.08766, 0.08883, 0.08981, 0.09071, 0.09134, 0.09203, 0.09295, 0.09833",\
                 "0.08708, 0.08749, 0.0885, 0.08972, 0.09076, 0.09162, 0.09239, 0.09288, 0.09415, 0.1003",\
                 "0.08966, 0.09009, 0.0911, 0.09219, 0.09317, 0.09401, 0.09477, 0.09557, 0.09692, 0.1043",\
                 "0.09401, 0.09439, 0.09542, 0.09661, 0.09751, 0.09847, 0.09918, 0.09992, 0.1019, 0.1105",\
                 "0.1004, 0.1008, 0.1016, 0.1027, 0.1039, 0.1048, 0.1055, 0.1063, 0.1076, 0.1201",\
                 "0.109, 0.1094, 0.1101, 0.111, 0.112, 0.1135, 0.1143, 0.1149, 0.117, 0.1335",\
                 "0.12, 0.1203, 0.121, 0.1219, 0.1227, 0.1239, 0.1252, 0.1261, 0.1297, 0.1544",\
                 "0.1335, 0.1338, 0.1344, 0.1354, 0.136, 0.1367, 0.1379, 0.1402, 0.1469, 0.1878");
        }
      }

      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.345, 0.367, 0.44, 0.583, 0.776, 0.99, 1.234, 1.511, 1.824, 2.171");
        }

        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.441, 0.457, 0.529, 0.663, 0.834, 1.031, 1.267, 1.535, 1.844, \
                  2.187");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.347, 0.3987, 0.5314, 0.7087, 0.9249, 1.186, 1.504, 1.89, 2.355, 2.906",\
                 "0.3649, 0.4166, 0.5491, 0.7263, 0.9426, 1.204, 1.522, 1.908, 2.372, 2.923",\
                 "0.4298, 0.481, 0.6126, 0.7897, 1.005, 1.267, 1.584, 1.97, 2.435, 2.986",\
                 "0.535, 0.5857, 0.7151, 0.8899, 1.105, 1.365, 1.683, 2.069, 2.533, 3.084",\
                 "0.6061, 0.6576, 0.7857, 0.9592, 1.172, 1.432, 1.75, 2.135, 2.6, 3.151",\
                 "0.6265, 0.6778, 0.8056, 0.9787, 1.192, 1.451, 1.767, 2.152, 2.616, 3.167",\
                 "0.6095, 0.6606, 0.788, 0.9603, 1.173, 1.433, 1.749, 2.134, 2.597, 3.147",\
                 "0.5576, 0.6085, 0.7361, 0.9084, 1.121, 1.38, 1.696, 2.081, 2.545, 3.095",\
                 "0.4684, 0.5205, 0.649, 0.8211, 1.034, 1.292, 1.608, 1.993, 2.457, 3.007",\
                 "0.3417, 0.3949, 0.5245, 0.6975, 0.9099, 1.169, 1.485, 1.87, 2.333, 2.883");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.3353, 0.3876, 0.5347, 0.7744, 1.13, 1.626, 2.277, 3.097, 4.102, 5.296",\
                 "0.3503, 0.4028, 0.5497, 0.7893, 1.145, 1.64, 2.292, 3.113, 4.117, 5.313",\
                 "0.4046, 0.4568, 0.6038, 0.8436, 1.199, 1.695, 2.347, 3.169, 4.17, 5.365",\
                 "0.4825, 0.5377, 0.6883, 0.9293, 1.285, 1.781, 2.433, 3.254, 4.255, 5.45",\
                 "0.5385, 0.5996, 0.7587, 1.005, 1.363, 1.858, 2.51, 3.332, 4.331, 5.527",\
                 "0.567, 0.6364, 0.8068, 1.058, 1.418, 1.915, 2.567, 3.388, 4.389, 5.586",\
                 "0.5644, 0.6436, 0.8306, 1.09, 1.452, 1.949, 2.602, 3.423, 4.424, 5.62",\
                 "0.5265, 0.6174, 0.8254, 1.098, 1.465, 1.963, 2.615, 3.437, 4.439, 5.632",\
                 "0.4517, 0.554, 0.7868, 1.077, 1.452, 1.954, 2.608, 3.429, 4.431, 5.625",\
                 "0.339, 0.4527, 0.7111, 1.022, 1.409, 1.917, 2.575, 3.397, 4.401, 5.595");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.1962, 0.2455, 0.3709, 0.5536, 0.8132, 1.173, 1.657, 2.291, 3.081, 4.034",\
                 "0.1961, 0.2455, 0.3706, 0.5538, 0.8132, 1.173, 1.657, 2.291, 3.079, 4.035",\
                 "0.1934, 0.2439, 0.3697, 0.5513, 0.8125, 1.172, 1.657, 2.29, 3.078, 4.035",\
                 "0.1965, 0.2421, 0.3638, 0.548, 0.8086, 1.169, 1.657, 2.289, 3.075, 4.035",\
                 "0.205, 0.2464, 0.3626, 0.5428, 0.803, 1.167, 1.654, 2.29, 3.081, 4.033",\
                 "0.2036, 0.2454, 0.3612, 0.543, 0.8032, 1.163, 1.65, 2.283, 3.079, 4.034",\
                 "0.2038, 0.2446, 0.3602, 0.5428, 0.8046, 1.165, 1.653, 2.279, 3.069, 4.022",\
                 "0.206, 0.247, 0.3606, 0.5412, 0.8024, 1.161, 1.65, 2.28, 3.068, 4.019",\
                 "0.2094, 0.2498, 0.3624, 0.5426, 0.8006, 1.163, 1.648, 2.281, 3.07, 4.023",\
                 "0.2148, 0.2538, 0.3646, 0.5434, 0.8006, 1.162, 1.65, 2.28, 3.071, 4.022");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.1883, 0.2486, 0.4441, 0.8234, 1.442, 2.332, 3.496, 4.968, 6.768, 8.913",\
                 "0.1881, 0.2485, 0.4434, 0.8236, 1.442, 2.327, 3.495, 4.965, 6.77, 8.916",\
                 "0.1881, 0.2484, 0.4438, 0.8236, 1.442, 2.332, 3.501, 4.976, 6.766, 8.911",\
                 "0.2029, 0.2591, 0.4492, 0.8254, 1.444, 2.325, 3.494, 4.969, 6.767, 8.913",\
                 "0.2294, 0.2834, 0.4674, 0.836, 1.448, 2.333, 3.502, 4.97, 6.764, 8.911",\
                 "0.2638, 0.3172, 0.4892, 0.8464, 1.454, 2.337, 3.497, 4.967, 6.766, 8.914",\
                 "0.3052, 0.3578, 0.5218, 0.863, 1.459, 2.336, 3.502, 4.975, 6.778, 8.911",\
                 "0.3492, 0.4072, 0.5672, 0.8892, 1.471, 2.339, 3.504, 4.973, 6.769, 8.903",\
                 "0.3962, 0.461, 0.6214, 0.9292, 1.496, 2.356, 3.507, 4.976, 6.77, 8.914",\
                 "0.4452, 0.5142, 0.6832, 0.9748, 1.527, 2.38, 3.529, 4.98, 6.774, 8.91");
        }
      }

      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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.7048, 0.7621, 0.9048, 1.088, 1.307, 1.57, 1.888, 2.275, 2.739, 3.291",\
                 "0.721, 0.7785, 0.9212, 1.105, 1.324, 1.586, 1.905, 2.291, 2.756, 3.307",\
                 "0.777, 0.8345, 0.9771, 1.161, 1.379, 1.642, 1.961, 2.347, 2.812, 3.363",\
                 "0.8448, 0.902, 1.045, 1.228, 1.447, 1.71, 2.028, 2.415, 2.88, 3.431",\
                 "0.8893, 0.9467, 1.09, 1.274, 1.492, 1.756, 2.074, 2.46, 2.925, 3.476",\
                 "0.9088, 0.9662, 1.109, 1.294, 1.513, 1.776, 2.095, 2.482, 2.946, 3.498",\
                 "0.9011, 0.9589, 1.102, 1.287, 1.507, 1.77, 2.089, 2.475, 2.94, 3.491",\
                 "0.8619, 0.9199, 1.064, 1.25, 1.47, 1.734, 2.053, 2.44, 2.904, 3.455",\
                 "0.7868, 0.845, 0.9911, 1.178, 1.399, 1.663, 1.982, 2.369, 2.834, 3.385",\
                 "0.675, 0.7337, 0.881, 1.069, 1.291, 1.556, 1.876, 2.262, 2.727, 3.279");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.8614, 0.9163, 1.068, 1.311, 1.67, 2.167, 2.82, 3.642, 4.646, 5.842",\
                 "0.8778, 0.9326, 1.084, 1.328, 1.687, 2.184, 2.836, 3.659, 4.663, 5.86",\
                 "0.9477, 1.002, 1.154, 1.397, 1.756, 2.254, 2.906, 3.728, 4.732, 5.928",\
                 "1.089, 1.144, 1.295, 1.539, 1.898, 2.396, 3.049, 3.871, 4.872, 6.066",\
                 "1.278, 1.333, 1.485, 1.728, 2.087, 2.585, 3.239, 4.06, 5.065, 6.262",\
                 "1.496, 1.551, 1.703, 1.947, 2.306, 2.804, 3.456, 4.278, 5.284, 6.481",\
                 "1.748, 1.804, 1.956, 2.201, 2.56, 3.057, 3.711, 4.532, 5.536, 6.732",\
                 "2.039, 2.096, 2.249, 2.494, 2.853, 3.35, 4.003, 4.824, 5.828, 7.022",\
                 "2.37, 2.426, 2.581, 2.826, 3.186, 3.684, 4.336, 5.157, 6.159, 7.354",\
                 "2.74, 2.798, 2.954, 3.2, 3.559, 4.057, 4.712, 5.532, 6.534, 7.728");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.2137, 0.2645, 0.3861, 0.5625, 0.8172, 1.174, 1.66, 2.291, 3.078, 4.035",\
                 "0.2137, 0.2645, 0.3857, 0.5624, 0.8174, 1.173, 1.659, 2.289, 3.079, 4.034",\
                 "0.2143, 0.2645, 0.3862, 0.5628, 0.817, 1.176, 1.66, 2.288, 3.079, 4.034",\
                 "0.2142, 0.2648, 0.3868, 0.5628, 0.817, 1.176, 1.66, 2.29, 3.08, 4.034",\
                 "0.2148, 0.2658, 0.3868, 0.5624, 0.816, 1.176, 1.658, 2.292, 3.081, 4.034",\
                 "0.2162, 0.2668, 0.388, 0.5626, 0.8158, 1.173, 1.66, 2.289, 3.08, 4.032",\
                 "0.2182, 0.27, 0.3898, 0.5646, 0.8172, 1.174, 1.658, 2.287, 3.078, 4.028",\
                 "0.2208, 0.273, 0.3948, 0.567, 0.8198, 1.176, 1.661, 2.288, 3.079, 4.027",\
                 "0.2246, 0.277, 0.399, 0.5708, 0.8226, 1.178, 1.66, 2.29, 3.076, 4.027",\
                 "0.2284, 0.2816, 0.4048, 0.5744, 0.8256, 1.18, 1.663, 2.291, 3.076, 4.029");
        }

        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.008105, 0.01277, 0.02913, 0.06037, 0.109, 0.1773, 0.2672, 0.3804, 0.5186, 0.6834");
          values("0.189, 0.2474, 0.4429, 0.8228, 1.442, 2.327, 3.495, 4.967, 6.77, 8.916",\
                 "0.1889, 0.2479, 0.4432, 0.8226, 1.446, 2.326, 3.495, 4.97, 6.77, 8.911",\
                 "0.189, 0.2476, 0.4422, 0.8228, 1.442, 2.327, 3.495, 4.966, 6.77, 8.916",\
                 "0.19, 0.2488, 0.4432, 0.8226, 1.446, 2.332, 3.502, 4.97, 6.763, 8.906",\
                 "0.191, 0.25, 0.4432, 0.8234, 1.442, 2.327, 3.495, 4.97, 6.778, 8.917",\
                 "0.193, 0.2512, 0.4454, 0.8246, 1.442, 2.327, 3.495, 4.967, 6.776, 8.914",\
                 "0.1952, 0.2532, 0.4464, 0.8256, 1.445, 2.326, 3.493, 4.964, 6.768, 8.915",\
                 "0.1978, 0.2564, 0.4486, 0.8262, 1.443, 2.327, 3.495, 4.965, 6.759, 8.909",\
                 "0.2012, 0.2596, 0.4516, 0.8276, 1.444, 2.33, 3.493, 4.965, 6.773, 8.905",\
                 "0.2052, 0.2638, 0.4546, 0.8312, 1.445, 2.326, 3.494, 4.963, 6.76, 8.918");
        }
      }
    }
  }

