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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.1434, 0.1415, 0.1415, 0.148, 0.1631, 0.1882, 0.2241, 0.2715, \
                  0.3313, 0.4039");
        }

        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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.08885, 0.08733, 0.08797, 0.09331, 0.1032, 0.1179, 0.1388, 0.1672, \
                  0.2043, 0.251");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.073, 0.07182, 0.07175, 0.07578, 0.08432, 0.09782, 0.1167, 0.1415, \
                  0.1725, 0.21");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.02311, 0.02266, 0.0228, 0.02565, 0.03254, 0.04419, 0.06088, \
                  0.08302, 0.1108, 0.1444");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.007116 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 1.032 ;
      max_transition : 15.6 ;
      min_capacitance : 0.008116 ;
      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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.1421, 0.142, 0.142, 0.1419, 0.142, 0.142, 0.142, 0.142, 0.1421, 0.1421",\
                 "0.1421, 0.1422, 0.1421, 0.142, 0.1421, 0.1421, 0.1421, 0.1422, 0.1422, 0.1422",\
                 "0.1459, 0.1459, 0.1459, 0.1458, 0.1459, 0.1459, 0.1459, 0.1459, 0.146, 0.146",\
                 "0.1538, 0.1538, 0.1537, 0.1537, 0.1537, 0.1538, 0.1538, 0.1538, 0.1538, 0.1538",\
                 "0.1673, 0.1672, 0.1672, 0.1672, 0.1672, 0.1671, 0.1671, 0.1671, 0.1672, 0.1672",\
                 "0.1869, 0.1869, 0.1868, 0.1869, 0.1868, 0.1869, 0.1869, 0.1869, 0.187, 0.1869",\
                 "0.2133, 0.2133, 0.2132, 0.2131, 0.2131, 0.2132, 0.2132, 0.2132, 0.2132, 0.2132",\
                 "0.2465, 0.2465, 0.2464, 0.2464, 0.2464, 0.2464, 0.2464, 0.2464, 0.2465, 0.2464",\
                 "0.2872, 0.2872, 0.287, 0.287, 0.287, 0.287, 0.287, 0.287, 0.287, 0.2869",\
                 "0.3354, 0.3354, 0.3354, 0.3352, 0.3352, 0.3353, 0.3353, 0.3353, 0.3353, 0.335");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.1041, 0.1043, 0.1041, 0.1044, 0.1051, 0.1058, 0.1068, 0.1137, 0.1774, 0.4853",\
                 "0.1031, 0.1032, 0.1033, 0.1034, 0.1039, 0.1049, 0.1062, 0.1128, 0.1777, 0.4902",\
                 "0.1033, 0.1032, 0.1032, 0.1034, 0.1042, 0.1052, 0.1059, 0.1136, 0.1833, 0.5134",\
                 "0.1087, 0.1089, 0.109, 0.1093, 0.11, 0.1107, 0.1119, 0.1208, 0.2009, 0.561",\
                 "0.1224, 0.1226, 0.1222, 0.1234, 0.1236, 0.1243, 0.1256, 0.1361, 0.2338, 0.6393",\
                 "0.1451, 0.1455, 0.1453, 0.1452, 0.1469, 0.148, 0.1483, 0.1623, 0.2848, 0.7567",\
                 "0.1779, 0.178, 0.1781, 0.1778, 0.1784, 0.1807, 0.1826, 0.204, 0.365, 0.9304",\
                 "0.2211, 0.2211, 0.2215, 0.2214, 0.2211, 0.2224, 0.2274, 0.2644, 0.4933, 1.179",\
                 "0.2754, 0.2754, 0.2758, 0.2758, 0.2755, 0.2757, 0.2819, 0.3511, 0.6945, 1.527",\
                 "0.3412, 0.3414, 0.3419, 0.3417, 0.3417, 0.3417, 0.3533, 0.4897, 1.01, 1.971");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.2345, 0.2354, 0.2381, 0.2402, 0.2414, 0.242, 0.2424, 0.2426, 0.2428, 0.2429",\
                 "0.2339, 0.235, 0.2376, 0.2397, 0.2408, 0.2415, 0.2419, 0.2421, 0.2423, 0.2424",\
                 "0.2336, 0.2347, 0.2373, 0.2393, 0.2405, 0.2412, 0.2416, 0.2418, 0.242, 0.2421",\
                 "0.2365, 0.2376, 0.24, 0.242, 0.2432, 0.2439, 0.2443, 0.2445, 0.2447, 0.2448",\
                 "0.2438, 0.2448, 0.2472, 0.2492, 0.2503, 0.2511, 0.2515, 0.2517, 0.2519, 0.252",\
                 "0.2566, 0.2574, 0.2595, 0.2616, 0.2628, 0.2636, 0.264, 0.2642, 0.2644, 0.2645",\
                 "0.2751, 0.2756, 0.2776, 0.2796, 0.2808, 0.2816, 0.2821, 0.2824, 0.2825, 0.2826",\
                 "0.2998, 0.3001, 0.3016, 0.3034, 0.3047, 0.3055, 0.3061, 0.3064, 0.3066, 0.3067",\
                 "0.3305, 0.3306, 0.3319, 0.3336, 0.3349, 0.3357, 0.3362, 0.3365, 0.3367, 0.3367",\
                 "0.3678, 0.3678, 0.3687, 0.3702, 0.3714, 0.3722, 0.3728, 0.3731, 0.3733, 0.3731");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.2021, 0.2035, 0.2066, 0.2097, 0.2122, 0.214, 0.2162, 0.2242, 0.301, 0.6447",\
                 "0.2009, 0.2024, 0.2054, 0.2084, 0.211, 0.2127, 0.2147, 0.2243, 0.3017, 0.6496",\
                 "0.2006, 0.2022, 0.2052, 0.2082, 0.2106, 0.2125, 0.2146, 0.2242, 0.309, 0.6764",\
                 "0.2048, 0.2062, 0.2091, 0.2121, 0.2145, 0.2168, 0.2182, 0.2301, 0.3273, 0.7375",\
                 "0.2135, 0.2148, 0.2178, 0.2206, 0.2232, 0.2258, 0.2283, 0.2428, 0.3658, 0.8361",\
                 "0.2279, 0.2291, 0.2315, 0.2349, 0.2373, 0.2392, 0.2418, 0.2647, 0.4272, 0.9919",\
                 "0.248, 0.2492, 0.2516, 0.2545, 0.2581, 0.2602, 0.2625, 0.3003, 0.533, 1.227",\
                 "0.2746, 0.2756, 0.2779, 0.2805, 0.2827, 0.2864, 0.2938, 0.3642, 0.7207, 1.567",\
                 "0.3081, 0.3089, 0.311, 0.3134, 0.3158, 0.3176, 0.3374, 0.4898, 1.043, 2.017",\
                 "0.3487, 0.3494, 0.3514, 0.3537, 0.3562, 0.3597, 0.4211, 0.7676, 1.545, 2.483");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.421, 0.46, 0.59, 0.837, 1.13, 1.464, 1.851, 2.293, 2.79, 3.344");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.556, 0.584, 0.713, 0.935, 1.2, 1.516, 1.894, 2.327, 2.823, 3.379");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.4579, 0.5512, 0.7711, 1.064, 1.434, 1.905, 2.502, 3.245, 4.149, 5.226",\
                 "0.4892, 0.5827, 0.8027, 1.095, 1.466, 1.937, 2.533, 3.277, 4.181, 5.258",\
                 "0.6027, 0.6947, 0.913, 1.205, 1.575, 2.046, 2.642, 3.385, 4.29, 5.368",\
                 "0.7572, 0.8495, 1.063, 1.353, 1.722, 2.193, 2.789, 3.532, 4.436, 5.515",\
                 "0.8321, 0.9229, 1.137, 1.424, 1.792, 2.261, 2.857, 3.6, 4.505, 5.583",\
                 "0.8427, 0.9335, 1.146, 1.434, 1.801, 2.271, 2.865, 3.607, 4.511, 5.589",\
                 "0.7988, 0.8896, 1.102, 1.389, 1.755, 2.224, 2.82, 3.561, 4.464, 5.54",\
                 "0.6995, 0.7913, 1.004, 1.29, 1.656, 2.125, 2.719, 3.461, 4.365, 5.441",\
                 "0.5429, 0.636, 0.8494, 1.136, 1.502, 1.97, 2.565, 3.306, 4.21, 5.286",\
                 "0.3246, 0.419, 0.6341, 0.9221, 1.288, 1.756, 2.351, 3.093, 3.997, 5.073");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.4287, 0.5218, 0.7723, 1.189, 1.822, 2.708, 3.875, 5.339, 7.133, 9.267",\
                 "0.4561, 0.5491, 0.7997, 1.216, 1.849, 2.735, 3.901, 5.37, 7.163, 9.295",\
                 "0.5529, 0.6462, 0.897, 1.314, 1.946, 2.832, 3.998, 5.464, 7.258, 9.391",\
                 "0.6706, 0.7719, 1.031, 1.45, 2.083, 2.969, 4.135, 5.6, 7.394, 9.527",\
                 "0.7492, 0.864, 1.137, 1.561, 2.196, 3.082, 4.248, 5.715, 7.51, 9.652",\
                 "0.7839, 0.9166, 1.21, 1.641, 2.277, 3.164, 4.329, 5.798, 7.586, 9.724",\
                 "0.7675, 0.9216, 1.245, 1.688, 2.326, 3.213, 4.379, 5.846, 7.637, 9.774",\
                 "0.6959, 0.8725, 1.234, 1.697, 2.342, 3.23, 4.396, 5.864, 7.655, 9.788",\
                 "0.5667, 0.7662, 1.17, 1.658, 2.314, 3.209, 4.377, 5.844, 7.635, 9.77",\
                 "0.3768, 0.6007, 1.049, 1.567, 2.238, 3.145, 4.32, 5.791, 7.581, 9.716");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.2374, 0.3231, 0.5302, 0.8544, 1.343, 2.049, 3.015, 4.263, 5.791, 7.626",\
                 "0.2375, 0.3234, 0.5306, 0.8546, 1.343, 2.048, 3.013, 4.26, 5.794, 7.628",\
                 "0.2328, 0.319, 0.527, 0.8526, 1.342, 2.05, 3.017, 4.262, 5.798, 7.635",\
                 "0.2434, 0.319, 0.52, 0.8474, 1.339, 2.049, 3.017, 4.263, 5.798, 7.635",\
                 "0.242, 0.3166, 0.5192, 0.8454, 1.333, 2.045, 3.013, 4.258, 5.794, 7.634",\
                 "0.241, 0.3156, 0.5176, 0.8436, 1.334, 2.042, 3.005, 4.251, 5.794, 7.633",\
                 "0.242, 0.316, 0.5158, 0.8416, 1.333, 2.041, 3.007, 4.248, 5.781, 7.625",\
                 "0.2452, 0.3182, 0.5158, 0.8402, 1.332, 2.039, 3.01, 4.253, 5.782, 7.614",\
                 "0.2504, 0.3218, 0.518, 0.8402, 1.331, 2.04, 3.007, 4.255, 5.782, 7.616",\
                 "0.256, 0.3276, 0.5202, 0.842, 1.332, 2.04, 3.008, 4.256, 5.788, 7.618");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.2268, 0.3314, 0.6733, 1.356, 2.461, 4.018, 6.078, 8.669, 11.83, 15.63",\
                 "0.2267, 0.3309, 0.6733, 1.357, 2.457, 4.025, 6.078, 8.674, 11.84, 15.61",\
                 "0.2292, 0.3313, 0.6738, 1.354, 2.461, 4.024, 6.078, 8.669, 11.83, 15.63",\
                 "0.2564, 0.3542, 0.6862, 1.357, 2.462, 4.018, 6.078, 8.669, 11.83, 15.62",\
                 "0.2998, 0.3924, 0.7062, 1.37, 2.463, 4.023, 6.074, 8.668, 11.84, 15.61",\
                 "0.3538, 0.446, 0.7378, 1.38, 2.472, 4.028, 6.079, 8.664, 11.83, 15.6",\
                 "0.4144, 0.51, 0.785, 1.399, 2.473, 4.03, 6.081, 8.663, 11.83, 15.59",\
                 "0.4782, 0.583, 0.85, 1.437, 2.492, 4.038, 6.083, 8.669, 11.83, 15.59",\
                 "0.544, 0.6602, 0.9272, 1.484, 2.524, 4.052, 6.088, 8.674, 11.83, 15.61",\
                 "0.613, 0.741, 1.016, 1.546, 2.568, 4.096, 6.124, 8.68, 11.83, 15.59");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.9048, 1.008, 1.241, 1.539, 1.912, 2.384, 2.981, 3.724, 4.629, 5.706",\
                 "0.9344, 1.037, 1.27, 1.568, 1.941, 2.413, 3.01, 3.753, 4.658, 5.735",\
                 "1.031, 1.134, 1.367, 1.665, 2.038, 2.51, 3.106, 3.85, 4.754, 5.831",\
                 "1.129, 1.232, 1.465, 1.764, 2.136, 2.608, 3.205, 3.949, 4.853, 5.931",\
                 "1.19, 1.294, 1.527, 1.826, 2.199, 2.671, 3.268, 4.011, 4.916, 5.994",\
                 "1.213, 1.316, 1.55, 1.849, 2.223, 2.695, 3.292, 4.035, 4.94, 6.018",\
                 "1.189, 1.292, 1.528, 1.828, 2.202, 2.675, 3.272, 4.015, 4.919, 5.997",\
                 "1.112, 1.217, 1.454, 1.755, 2.13, 2.603, 3.201, 3.944, 4.848, 5.925",\
                 "0.9785, 1.085, 1.324, 1.627, 2.002, 2.475, 3.073, 3.816, 4.721, 5.798",\
                 "0.7841, 0.8921, 1.133, 1.438, 1.814, 2.288, 2.886, 3.629, 4.534, 5.612");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("1.101, 1.197, 1.454, 1.875, 2.511, 3.4, 4.567, 6.032, 7.827, 9.972",\
                 "1.131, 1.227, 1.484, 1.905, 2.541, 3.428, 4.596, 6.067, 7.86, 10",\
                 "1.259, 1.355, 1.612, 2.034, 2.669, 3.557, 4.723, 6.195, 7.99, 10.13",\
                 "1.499, 1.596, 1.852, 2.274, 2.91, 3.798, 4.966, 6.431, 8.226, 10.36",\
                 "1.794, 1.892, 2.149, 2.57, 3.206, 4.095, 5.26, 6.734, 8.529, 10.67",\
                 "2.141, 2.239, 2.496, 2.918, 3.554, 4.442, 5.61, 7.076, 8.873, 11.01",\
                 "2.549, 2.647, 2.905, 3.328, 3.964, 4.851, 6.017, 7.488, 9.281, 11.42",\
                 "3.02, 3.12, 3.378, 3.801, 4.438, 5.327, 6.491, 7.959, 9.751, 11.89",\
                 "3.555, 3.656, 3.917, 4.34, 4.976, 5.865, 7.03, 8.498, 10.29, 12.42",\
                 "4.156, 4.259, 4.522, 4.946, 5.582, 6.47, 7.636, 9.103, 10.89, 13.03");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.2576, 0.3429, 0.5404, 0.8578, 1.346, 2.05, 3.016, 4.263, 5.794, 7.627",\
                 "0.2579, 0.3432, 0.5418, 0.8592, 1.344, 2.051, 3.016, 4.263, 5.793, 7.629",\
                 "0.2578, 0.343, 0.5416, 0.859, 1.344, 2.05, 3.016, 4.263, 5.791, 7.624",\
                 "0.2584, 0.344, 0.5422, 0.8582, 1.346, 2.052, 3.018, 4.261, 5.792, 7.626",\
                 "0.2594, 0.3448, 0.5424, 0.858, 1.344, 2.051, 3.015, 4.263, 5.798, 7.634",\
                 "0.2614, 0.3474, 0.544, 0.8604, 1.346, 2.05, 3.014, 4.263, 5.795, 7.633",\
                 "0.2646, 0.351, 0.548, 0.8618, 1.346, 2.053, 3.015, 4.256, 5.796, 7.628",\
                 "0.2684, 0.356, 0.5518, 0.865, 1.349, 2.053, 3.017, 4.255, 5.787, 7.618",\
                 "0.273, 0.3616, 0.557, 0.869, 1.352, 2.056, 3.019, 4.265, 5.788, 7.618",\
                 "0.278, 0.368, 0.562, 0.872, 1.354, 2.054, 3.018, 4.258, 5.794, 7.626");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.008116, 0.01518, 0.03998, 0.08733, 0.1611, 0.2646, 0.4009, 0.5725, 0.782, 1.032");
          values("0.2284, 0.3296, 0.6714, 1.356, 2.458, 4.018, 6.078, 8.667, 11.85, 15.61",\
                 "0.227, 0.3294, 0.6718, 1.354, 2.461, 4.022, 6.078, 8.672, 11.84, 15.62",\
                 "0.2274, 0.3304, 0.6716, 1.354, 2.457, 4.02, 6.078, 8.671, 11.83, 15.62",\
                 "0.2292, 0.3308, 0.6718, 1.355, 2.457, 4.024, 6.078, 8.669, 11.83, 15.61",\
                 "0.2298, 0.3326, 0.6738, 1.354, 2.46, 4.018, 6.076, 8.67, 11.84, 15.61",\
                 "0.2324, 0.3344, 0.6738, 1.356, 2.459, 4.02, 6.076, 8.667, 11.83, 15.6",\
                 "0.2354, 0.3372, 0.6768, 1.355, 2.459, 4.019, 6.08, 8.666, 11.83, 15.6",\
                 "0.2386, 0.3406, 0.6778, 1.356, 2.459, 4.021, 6.072, 8.664, 11.84, 15.6",\
                 "0.244, 0.344, 0.682, 1.358, 2.46, 4.022, 6.07, 8.658, 11.83, 15.58",\
                 "0.25, 0.35, 0.688, 1.36, 2.458, 4.018, 6.072, 8.66, 11.82, 15.58");
        }
      }
    }
  }

