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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.2411, 0.2408, 0.2473, 0.2696, 0.3132, 0.3822, 0.4792, 0.605, \
                 0.7615, 0.9504");
        }

        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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.1698, 0.1693, 0.1736, 0.1886, 0.217, 0.2592, 0.3194, 0.4039, \
                 0.5129, 0.6469");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.1055, 0.1051, 0.1091, 0.1226, 0.1472, 0.1852, 0.237, 0.3037, \
                 0.386, 0.485");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.021, 0.02079, 0.02326, 0.03312, 0.05327, 0.08524, 0.1299, 0.188, \
                 0.2601, 0.347");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.002739 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.2162 ;
      max_transition : 4 ;
      min_capacitance : 0.003739 ;
      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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1966, 0.1957, 0.1938, 0.1922, 0.191, 0.1902, 0.1895, 0.1891, 0.1888, 0.1885",\
                 "0.1969, 0.196, 0.1942, 0.1926, 0.1913, 0.1905, 0.1899, 0.1895, 0.1891, 0.1888",\
                 "0.2039, 0.2031, 0.2013, 0.1999, 0.1989, 0.1981, 0.1975, 0.1971, 0.1968, 0.1966",\
                 "0.2219, 0.2212, 0.2201, 0.2193, 0.2186, 0.2181, 0.2178, 0.2176, 0.2174, 0.2173",\
                 "0.2539, 0.2537, 0.2532, 0.2529, 0.2526, 0.2525, 0.2525, 0.2524, 0.2523, 0.2522",\
                 "0.3038, 0.3037, 0.3035, 0.3034, 0.3034, 0.3034, 0.3034, 0.3034, 0.3034, 0.3034",\
                 "0.3721, 0.3722, 0.3721, 0.3718, 0.3718, 0.3721, 0.3721, 0.3721, 0.372, 0.372",\
                 "0.4585, 0.4586, 0.4585, 0.4583, 0.4582, 0.4583, 0.4584, 0.4584, 0.4584, 0.4583",\
                 "0.564, 0.5639, 0.5639, 0.5638, 0.5637, 0.5639, 0.564, 0.564, 0.564, 0.564",\
                 "0.6889, 0.689, 0.689, 0.689, 0.6888, 0.6888, 0.6889, 0.6889, 0.6889, 0.6889");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1092, 0.1091, 0.109, 0.1089, 0.1092, 0.1094, 0.1096, 0.1109, 0.1117, 0.1133",\
                 "0.1086, 0.1086, 0.1084, 0.1083, 0.1087, 0.1089, 0.1091, 0.11, 0.111, 0.1128",\
                 "0.1128, 0.1127, 0.1128, 0.1127, 0.1128, 0.1133, 0.1136, 0.1142, 0.1155, 0.1163",\
                 "0.1305, 0.1306, 0.1306, 0.1307, 0.1309, 0.1311, 0.132, 0.1325, 0.1335, 0.1353",\
                 "0.1682, 0.168, 0.1681, 0.1687, 0.1687, 0.1689, 0.1696, 0.1704, 0.1714, 0.1733",\
                 "0.229, 0.2287, 0.2286, 0.2286, 0.2299, 0.23, 0.2296, 0.2309, 0.2316, 0.2328",\
                 "0.3146, 0.3145, 0.3144, 0.314, 0.3146, 0.3162, 0.3166, 0.3168, 0.3174, 0.3188",\
                 "0.4263, 0.4264, 0.4264, 0.4264, 0.4261, 0.4271, 0.4289, 0.4297, 0.43, 0.4298",\
                 "0.5655, 0.566, 0.5659, 0.5657, 0.5659, 0.566, 0.5671, 0.5697, 0.5705, 0.5716",\
                 "0.7338, 0.7339, 0.7341, 0.7342, 0.734, 0.734, 0.7346, 0.7363, 0.7398, 0.7411");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.3262, 0.3235, 0.3179, 0.3131, 0.3099, 0.3077, 0.3061, 0.3051, 0.3043, 0.3038",\
                 "0.3259, 0.3233, 0.3177, 0.3128, 0.3096, 0.3074, 0.3059, 0.3049, 0.3041, 0.3036",\
                 "0.3285, 0.3258, 0.32, 0.3154, 0.3121, 0.3098, 0.3084, 0.3074, 0.3066, 0.3061",\
                 "0.3392, 0.3365, 0.3308, 0.326, 0.3227, 0.3205, 0.3191, 0.318, 0.3173, 0.3167",\
                 "0.3615, 0.3588, 0.3529, 0.348, 0.3448, 0.3427, 0.3411, 0.34, 0.3392, 0.3386",\
                 "0.3972, 0.3944, 0.3886, 0.3835, 0.38, 0.3776, 0.3761, 0.3749, 0.3741, 0.3735",\
                 "0.4473, 0.4444, 0.4382, 0.4328, 0.429, 0.4266, 0.4249, 0.4238, 0.4228, 0.4222",\
                 "0.5123, 0.5093, 0.5026, 0.4969, 0.4929, 0.4902, 0.4884, 0.4871, 0.4862, 0.4854",\
                 "0.5922, 0.5894, 0.5821, 0.5759, 0.5716, 0.5687, 0.5667, 0.5653, 0.5644, 0.5637",\
                 "0.6887, 0.6854, 0.6783, 0.6713, 0.6668, 0.6635, 0.6615, 0.6601, 0.659, 0.6582");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.2671, 0.2662, 0.2642, 0.2637, 0.2639, 0.2647, 0.266, 0.2671, 0.2696, 0.27",\
                 "0.267, 0.2659, 0.2641, 0.2634, 0.2637, 0.2644, 0.2656, 0.2671, 0.2685, 0.2705",\
                 "0.2708, 0.2697, 0.2679, 0.267, 0.2676, 0.2683, 0.2695, 0.2711, 0.2723, 0.2745",\
                 "0.2853, 0.2841, 0.2824, 0.2815, 0.2817, 0.2826, 0.2832, 0.2852, 0.286, 0.2885",\
                 "0.3124, 0.3114, 0.3092, 0.3081, 0.3082, 0.3088, 0.3101, 0.3115, 0.3123, 0.3145",\
                 "0.3544, 0.3534, 0.3513, 0.35, 0.3495, 0.3499, 0.3513, 0.3525, 0.3534, 0.355",\
                 "0.4122, 0.4111, 0.4082, 0.4064, 0.4064, 0.4062, 0.4069, 0.4085, 0.409, 0.4105",\
                 "0.4865, 0.4851, 0.4816, 0.4788, 0.4784, 0.4792, 0.4799, 0.4803, 0.4811, 0.4835",\
                 "0.5779, 0.5762, 0.5729, 0.5694, 0.5674, 0.5676, 0.5695, 0.5703, 0.5711, 0.5715",\
                 "0.6869, 0.6851, 0.6811, 0.6775, 0.6755, 0.6739, 0.6747, 0.6777, 0.6783, 0.68");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.165, 0.173, 0.201, 0.258, 0.336, 0.43, 0.534, 0.651, 0.782, \
                 0.924");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.253, 0.26, 0.288, 0.345, 0.424, 0.52, 0.63, 0.753, 0.893, 1.047");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1906, 0.2113, 0.2703, 0.3598, 0.4753, 0.618, 0.7929, 1.006, 1.263, 1.569",\
                 "0.196, 0.2166, 0.2755, 0.365, 0.4806, 0.6234, 0.7983, 1.012, 1.269, 1.574",\
                 "0.219, 0.2394, 0.298, 0.3873, 0.5026, 0.6452, 0.8201, 1.033, 1.291, 1.596",\
                 "0.2575, 0.2778, 0.3359, 0.4245, 0.5393, 0.6815, 0.8563, 1.07, 1.327, 1.632",\
                 "0.2881, 0.31, 0.371, 0.4603, 0.5744, 0.7162, 0.8908, 1.104, 1.361, 1.667",\
                 "0.3034, 0.3259, 0.3866, 0.4747, 0.5879, 0.729, 0.903, 1.116, 1.373, 1.679",\
                 "0.3043, 0.3271, 0.3877, 0.4744, 0.5861, 0.7261, 0.899, 1.112, 1.368, 1.674",\
                 "0.2901, 0.3132, 0.3739, 0.4601, 0.5705, 0.7091, 0.8814, 1.093, 1.35, 1.655",\
                 "0.2603, 0.284, 0.3454, 0.4317, 0.5421, 0.6802, 0.8521, 1.064, 1.32, 1.625",\
                 "0.2144, 0.2389, 0.3013, 0.3881, 0.4983, 0.6363, 0.808, 1.02, 1.276, 1.581");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1743, 0.1966, 0.2634, 0.3739, 0.5355, 0.7589, 1.052, 1.423, 1.874, 2.412",\
                 "0.1788, 0.2011, 0.2679, 0.3783, 0.5398, 0.7633, 1.057, 1.426, 1.878, 2.417",\
                 "0.1962, 0.2185, 0.2854, 0.3959, 0.5574, 0.7809, 1.075, 1.445, 1.895, 2.434",\
                 "0.2209, 0.2443, 0.3128, 0.424, 0.5858, 0.8094, 1.103, 1.473, 1.924, 2.462",\
                 "0.239, 0.2647, 0.3367, 0.4502, 0.613, 0.8366, 1.13, 1.5, 1.952, 2.489",\
                 "0.2447, 0.2745, 0.3535, 0.4712, 0.6356, 0.8601, 1.154, 1.523, 1.975, 2.513",\
                 "0.2356, 0.2706, 0.3594, 0.4843, 0.6532, 0.879, 1.173, 1.543, 1.994, 2.533",\
                 "0.2103, 0.2506, 0.3517, 0.4863, 0.6614, 0.8918, 1.188, 1.558, 2.009, 2.547",\
                 "0.1675, 0.2134, 0.3286, 0.4755, 0.6581, 0.8947, 1.196, 1.569, 2.02, 2.558",\
                 "0.1065, 0.1587, 0.2882, 0.4499, 0.6416, 0.8849, 1.193, 1.571, 2.026, 2.564");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1051, 0.1255, 0.188, 0.2905, 0.4302, 0.6203, 0.8781, 1.212, 1.629, 2.132",\
                 "0.1048, 0.1252, 0.1879, 0.29, 0.4302, 0.6215, 0.8776, 1.211, 1.628, 2.133",\
                 "0.1031, 0.1239, 0.1868, 0.2896, 0.4293, 0.6209, 0.8778, 1.211, 1.628, 2.132",\
                 "0.1022, 0.1218, 0.184, 0.2867, 0.4263, 0.6185, 0.8764, 1.212, 1.629, 2.131",\
                 "0.1099, 0.1295, 0.1891, 0.2853, 0.4238, 0.617, 0.8768, 1.211, 1.628, 2.131",\
                 "0.1137, 0.132, 0.188, 0.2824, 0.4212, 0.613, 0.8724, 1.21, 1.628, 2.131",\
                 "0.1164, 0.1332, 0.1862, 0.2786, 0.4168, 0.6092, 0.8692, 1.205, 1.625, 2.13",\
                 "0.1198, 0.1356, 0.1862, 0.2766, 0.413, 0.6052, 0.8652, 1.204, 1.621, 2.126",\
                 "0.1242, 0.1392, 0.1874, 0.2766, 0.4116, 0.6042, 0.864, 1.201, 1.621, 2.125",\
                 "0.1292, 0.1434, 0.1896, 0.2774, 0.4104, 0.6024, 0.8646, 1.201, 1.621, 2.125");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1114, 0.1385, 0.2276, 0.3958, 0.6681, 1.06, 1.581, 2.24, 3.038, 3.993",\
                 "0.1115, 0.1384, 0.2276, 0.3958, 0.6675, 1.061, 1.58, 2.238, 3.038, 3.995",\
                 "0.1116, 0.1385, 0.2276, 0.3959, 0.668, 1.06, 1.581, 2.239, 3.041, 3.995",\
                 "0.1174, 0.1434, 0.2312, 0.3971, 0.6684, 1.06, 1.581, 2.24, 3.038, 3.993",\
                 "0.1321, 0.1558, 0.2387, 0.4022, 0.6705, 1.062, 1.58, 2.238, 3.041, 3.994",\
                 "0.1539, 0.177, 0.2547, 0.4111, 0.6748, 1.064, 1.583, 2.239, 3.037, 3.994",\
                 "0.1792, 0.2034, 0.2784, 0.4288, 0.6866, 1.067, 1.584, 2.241, 3.042, 3.999",\
                 "0.209, 0.235, 0.3094, 0.4514, 0.7044, 1.081, 1.59, 2.239, 3.043, 3.996",\
                 "0.2396, 0.2688, 0.345, 0.48, 0.7276, 1.105, 1.608, 2.249, 3.042, 3.996",\
                 "0.2758, 0.3038, 0.3858, 0.5154, 0.7534, 1.131, 1.637, 2.272, 3.056, 3.998");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.3949, 0.4157, 0.4757, 0.5667, 0.6837, 0.8273, 1.002, 1.216, 1.473, 1.778",\
                 "0.3997, 0.4204, 0.4804, 0.5713, 0.6886, 0.8319, 1.007, 1.22, 1.478, 1.783",\
                 "0.4175, 0.4382, 0.4981, 0.5889, 0.7061, 0.8495, 1.025, 1.238, 1.495, 1.8",\
                 "0.4396, 0.4604, 0.5203, 0.6113, 0.7283, 0.8718, 1.047, 1.26, 1.517, 1.823",\
                 "0.4554, 0.4762, 0.5359, 0.627, 0.7441, 0.8875, 1.063, 1.276, 1.533, 1.838",\
                 "0.4627, 0.4836, 0.5435, 0.6343, 0.7516, 0.8951, 1.07, 1.284, 1.541, 1.846",\
                 "0.459, 0.4797, 0.5398, 0.6309, 0.7483, 0.8918, 1.067, 1.28, 1.537, 1.843",\
                 "0.4422, 0.4631, 0.5232, 0.6144, 0.7322, 0.876, 1.051, 1.265, 1.522, 1.827",\
                 "0.4106, 0.4317, 0.4919, 0.5833, 0.7012, 0.8453, 1.021, 1.234, 1.492, 1.797",\
                 "0.3638, 0.3846, 0.4456, 0.537, 0.6553, 0.7996, 0.9754, 1.189, 1.446, 1.751");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.4291, 0.451, 0.5173, 0.628, 0.7897, 1.014, 1.307, 1.678, 2.129, 2.669",\
                 "0.4356, 0.4575, 0.5238, 0.6344, 0.7963, 1.02, 1.314, 1.685, 2.136, 2.674",\
                 "0.464, 0.4858, 0.5524, 0.6628, 0.8246, 1.048, 1.343, 1.713, 2.165, 2.704",\
                 "0.5203, 0.5422, 0.6086, 0.719, 0.8807, 1.105, 1.399, 1.769, 2.221, 2.76",\
                 "0.5974, 0.6191, 0.6853, 0.7956, 0.9571, 1.181, 1.475, 1.845, 2.298, 2.835",\
                 "0.6923, 0.7141, 0.7802, 0.8904, 1.052, 1.276, 1.569, 1.94, 2.391, 2.931",\
                 "0.8033, 0.8253, 0.8914, 1.001, 1.162, 1.386, 1.679, 2.05, 2.502, 3.04",\
                 "0.9296, 0.9515, 1.017, 1.127, 1.288, 1.511, 1.805, 2.175, 2.626, 3.164",\
                 "1.072, 1.094, 1.159, 1.269, 1.43, 1.653, 1.946, 2.316, 2.767, 3.305",\
                 "1.23, 1.252, 1.318, 1.428, 1.588, 1.811, 2.105, 2.474, 2.925, 3.462");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1203, 0.1405, 0.2013, 0.3009, 0.4379, 0.6263, 0.8811, 1.214, 1.629, 2.134",\
                 "0.1203, 0.1407, 0.2014, 0.301, 0.4379, 0.6258, 0.8812, 1.213, 1.628, 2.134",\
                 "0.1198, 0.1405, 0.201, 0.3008, 0.438, 0.6258, 0.8807, 1.213, 1.628, 2.133",\
                 "0.1204, 0.1407, 0.2014, 0.3012, 0.4385, 0.626, 0.88, 1.214, 1.63, 2.133",\
                 "0.1204, 0.1405, 0.2012, 0.3014, 0.4388, 0.6258, 0.8804, 1.214, 1.629, 2.132",\
                 "0.121, 0.141, 0.2022, 0.3016, 0.4386, 0.6258, 0.8818, 1.213, 1.629, 2.131",\
                 "0.1222, 0.1432, 0.2034, 0.3032, 0.44, 0.6274, 0.8804, 1.212, 1.629, 2.133",\
                 "0.124, 0.1444, 0.2048, 0.3044, 0.4416, 0.6276, 0.8816, 1.212, 1.628, 2.13",\
                 "0.1256, 0.1462, 0.2064, 0.3062, 0.4428, 0.63, 0.8824, 1.214, 1.628, 2.129",\
                 "0.127, 0.1478, 0.2082, 0.3078, 0.4448, 0.6302, 0.8838, 1.215, 1.629, 2.131");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003739, 0.005205, 0.01035, 0.02018, 0.03549, 0.05698, 0.08525, 0.1209, 0.1643, 0.2162");
          values("0.1159, 0.1426, 0.2309, 0.3974, 0.668, 1.06, 1.581, 2.24, 3.038, 4.002",\
                 "0.116, 0.1427, 0.2312, 0.3975, 0.6685, 1.059, 1.581, 2.24, 3.038, 3.994",\
                 "0.1154, 0.1426, 0.2308, 0.3975, 0.6682, 1.06, 1.582, 2.236, 3.043, 3.995",\
                 "0.1161, 0.1427, 0.2311, 0.3973, 0.668, 1.061, 1.581, 2.236, 3.043, 3.995",\
                 "0.1155, 0.143, 0.2314, 0.3976, 0.6682, 1.061, 1.582, 2.235, 3.041, 3.995",\
                 "0.1164, 0.143, 0.2318, 0.3976, 0.6688, 1.06, 1.581, 2.24, 3.042, 4.002",\
                 "0.1172, 0.144, 0.2328, 0.3986, 0.669, 1.061, 1.582, 2.236, 3.042, 3.995",\
                 "0.119, 0.145, 0.234, 0.3992, 0.6694, 1.06, 1.581, 2.237, 3.042, 3.993",\
                 "0.1198, 0.1464, 0.2354, 0.4004, 0.6696, 1.061, 1.58, 2.236, 3.042, 3.992",\
                 "0.1214, 0.148, 0.2366, 0.4022, 0.6712, 1.061, 1.581, 2.236, 3.036, 3.991");
        }
      }
    }
  }

