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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.2048, 0.2042, 0.207, 0.2195, 0.2457, 0.2883, 0.3491, 0.4288, \
                  0.5285, 0.6493");
        }

        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.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1399, 0.1392, 0.1408, 0.1496, 0.167, 0.1934, 0.23, 0.2809, 0.3481, \
                  0.4318");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.08865, 0.08801, 0.08963, 0.09747, 0.1127, 0.1366, 0.1696, 0.2123, \
                  0.2653, 0.329");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.01749, 0.0171, 0.01813, 0.02353, 0.03567, 0.05544, 0.08348, \
                  0.1204, 0.1664, 0.2222");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.002942 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.2222 ;
      max_transition : 7 ;
      min_capacitance : 0.003942 ;
      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.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.1607, 0.1604, 0.1597, 0.1591, 0.1587, 0.1584, 0.1582, 0.158, 0.1579, 0.1578",\
                 "0.1607, 0.1603, 0.1597, 0.159, 0.1586, 0.1583, 0.1581, 0.158, 0.1578, 0.1578",\
                 "0.1651, 0.1648, 0.1641, 0.1636, 0.1632, 0.1629, 0.1627, 0.1626, 0.1625, 0.1624",\
                 "0.177, 0.1768, 0.1764, 0.1761, 0.1759, 0.1758, 0.1757, 0.1756, 0.1755, 0.1755",\
                 "0.1978, 0.1977, 0.1976, 0.1975, 0.1974, 0.1974, 0.1975, 0.1975, 0.1974, 0.1974",\
                 "0.2299, 0.2298, 0.2299, 0.2297, 0.2297, 0.2297, 0.2297, 0.2297, 0.2297, 0.2297",\
                 "0.2735, 0.2735, 0.2734, 0.2734, 0.2734, 0.2734, 0.2734, 0.2734, 0.2734, 0.2734",\
                 "0.3288, 0.3287, 0.3286, 0.3286, 0.3285, 0.3286, 0.3286, 0.3286, 0.3286, 0.3286",\
                 "0.3963, 0.3963, 0.3962, 0.3962, 0.3961, 0.3962, 0.3962, 0.3962, 0.3962, 0.3962",\
                 "0.4766, 0.4766, 0.4766, 0.4765, 0.4765, 0.4765, 0.4765, 0.4765, 0.4765, 0.4765");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.0943, 0.09432, 0.09433, 0.09424, 0.09457, 0.09507, 0.09589, 0.0958, 0.09677, 0.09848",\
                 "0.09368, 0.09363, 0.09362, 0.09366, 0.09385, 0.09444, 0.09486, 0.0953, 0.09641, 0.09803",\
                 "0.09509, 0.09509, 0.09508, 0.0951, 0.09538, 0.09579, 0.09616, 0.09737, 0.09785, 0.09983",\
                 "0.1048, 0.1049, 0.1049, 0.1049, 0.1051, 0.1057, 0.106, 0.1066, 0.1073, 0.109",\
                 "0.127, 0.1269, 0.127, 0.1273, 0.1275, 0.128, 0.1284, 0.1289, 0.13, 0.1319",\
                 "0.164, 0.1641, 0.1639, 0.1641, 0.165, 0.1653, 0.1657, 0.1662, 0.1667, 0.169",\
                 "0.2175, 0.2176, 0.2175, 0.2173, 0.2176, 0.2191, 0.2197, 0.2197, 0.2199, 0.2224",\
                 "0.2879, 0.2881, 0.288, 0.2878, 0.2878, 0.2885, 0.2904, 0.2911, 0.2915, 0.294",\
                 "0.3765, 0.3766, 0.3767, 0.3768, 0.3765, 0.3766, 0.378, 0.3799, 0.3811, 0.3844",\
                 "0.4838, 0.4838, 0.4841, 0.484, 0.484, 0.484, 0.4843, 0.486, 0.4888, 0.4943");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.2677, 0.2663, 0.2636, 0.2615, 0.2602, 0.2593, 0.2588, 0.2585, 0.2582, 0.2579",\
                 "0.2673, 0.2659, 0.2632, 0.2612, 0.2598, 0.259, 0.2585, 0.2581, 0.2579, 0.2576",\
                 "0.2682, 0.2668, 0.2641, 0.262, 0.2607, 0.2599, 0.2594, 0.259, 0.2587, 0.2585",\
                 "0.274, 0.2726, 0.2699, 0.2678, 0.2664, 0.2656, 0.2651, 0.2648, 0.2645, 0.2643",\
                 "0.2871, 0.2856, 0.2829, 0.2808, 0.2794, 0.2786, 0.278, 0.2777, 0.2774, 0.2772",\
                 "0.3086, 0.3072, 0.3042, 0.302, 0.3005, 0.2996, 0.2991, 0.2987, 0.2984, 0.2982",\
                 "0.3395, 0.3379, 0.3349, 0.3325, 0.331, 0.33, 0.3293, 0.3289, 0.3286, 0.3284",\
                 "0.3801, 0.3784, 0.3751, 0.3725, 0.3708, 0.3697, 0.369, 0.3686, 0.3682, 0.368",\
                 "0.4308, 0.429, 0.4254, 0.4225, 0.4207, 0.4195, 0.4187, 0.4182, 0.4178, 0.4176",\
                 "0.4917, 0.4898, 0.4859, 0.4827, 0.4805, 0.4792, 0.4785, 0.4779, 0.4775, 0.4772");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.2195, 0.2192, 0.2188, 0.2193, 0.2204, 0.2219, 0.223, 0.2245, 0.2255, 0.2279",\
                 "0.219, 0.2186, 0.2182, 0.2186, 0.2198, 0.2212, 0.2222, 0.224, 0.2249, 0.2279",\
                 "0.2205, 0.2201, 0.2197, 0.2202, 0.2213, 0.2226, 0.2238, 0.225, 0.2265, 0.2285",\
                 "0.2285, 0.2283, 0.2279, 0.2283, 0.2294, 0.2308, 0.2323, 0.2332, 0.2342, 0.2366",\
                 "0.245, 0.2447, 0.2441, 0.2443, 0.2453, 0.2466, 0.2478, 0.249, 0.2504, 0.2527",\
                 "0.2708, 0.2703, 0.2698, 0.2698, 0.2708, 0.272, 0.2733, 0.2743, 0.2756, 0.2785",\
                 "0.3067, 0.3061, 0.3052, 0.3053, 0.306, 0.307, 0.3081, 0.3092, 0.3103, 0.314",\
                 "0.3535, 0.3527, 0.3516, 0.3508, 0.3513, 0.353, 0.354, 0.3548, 0.3559, 0.3602",\
                 "0.4111, 0.4102, 0.4091, 0.4075, 0.4078, 0.409, 0.4111, 0.4122, 0.4133, 0.419",\
                 "0.4807, 0.4797, 0.478, 0.4767, 0.476, 0.4763, 0.4779, 0.4806, 0.4824, 0.4923");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.276, 0.293, 0.346, 0.452, 0.595, 0.76, 0.946, 1.152, 1.381, \
                  1.628");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.449, 0.461, 0.515, 0.62, 0.763, 0.934, 1.13, 1.352, 1.602, 1.88");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          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.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.359, 0.3971, 0.5056, 0.6677, 0.8723, 1.121, 1.422, 1.785, 2.221, 2.736",\
                 "0.3695, 0.4077, 0.5163, 0.6784, 0.8826, 1.131, 1.432, 1.796, 2.231, 2.747",\
                 "0.413, 0.4506, 0.5589, 0.7206, 0.9247, 1.173, 1.474, 1.838, 2.273, 2.789",\
                 "0.4907, 0.5282, 0.6347, 0.795, 0.9979, 1.246, 1.547, 1.91, 2.345, 2.861",\
                 "0.5617, 0.6015, 0.7118, 0.8713, 1.073, 1.32, 1.62, 1.983, 2.418, 2.934",\
                 "0.6001, 0.6409, 0.7502, 0.908, 1.108, 1.353, 1.653, 2.015, 2.45, 2.966",\
                 "0.6101, 0.6503, 0.7583, 0.9137, 1.112, 1.356, 1.654, 2.016, 2.45, 2.965",\
                 "0.5923, 0.6326, 0.7402, 0.8941, 1.09, 1.331, 1.628, 1.989, 2.423, 2.937",\
                 "0.5472, 0.5879, 0.6961, 0.8495, 1.044, 1.284, 1.579, 1.939, 2.373, 2.887",\
                 "0.4739, 0.515, 0.6242, 0.7776, 0.9716, 1.211, 1.506, 1.866, 2.299, 2.813");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.3375, 0.3788, 0.5007, 0.6978, 0.9802, 1.367, 1.874, 2.514, 3.294, 4.222",\
                 "0.3461, 0.3875, 0.5094, 0.7063, 0.9887, 1.376, 1.883, 2.521, 3.302, 4.231",\
                 "0.3794, 0.4207, 0.5425, 0.7394, 1.022, 1.409, 1.916, 2.554, 3.334, 4.266",\
                 "0.4325, 0.475, 0.5985, 0.7962, 1.079, 1.466, 1.973, 2.612, 3.393, 4.32",\
                 "0.4755, 0.5214, 0.6502, 0.8517, 1.136, 1.524, 2.031, 2.67, 3.449, 4.382",\
                 "0.5002, 0.5517, 0.6906, 0.898, 1.185, 1.575, 2.082, 2.721, 3.502, 4.43",\
                 "0.5011, 0.5604, 0.7142, 0.9328, 1.226, 1.617, 2.125, 2.764, 3.544, 4.474",\
                 "0.4757, 0.544, 0.7167, 0.9503, 1.254, 1.651, 2.16, 2.8, 3.58, 4.51",\
                 "0.4217, 0.4998, 0.6949, 0.9471, 1.263, 1.67, 2.187, 2.829, 3.609, 4.539",\
                 "0.3381, 0.4263, 0.6461, 0.9208, 1.251, 1.67, 2.197, 2.847, 3.63, 4.56");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.1954, 0.2328, 0.3477, 0.5245, 0.7647, 1.091, 1.526, 2.093, 2.798, 3.657",\
                 "0.1957, 0.2328, 0.3474, 0.5257, 0.764, 1.09, 1.527, 2.093, 2.8, 3.656",\
                 "0.1931, 0.2314, 0.3459, 0.5247, 0.7636, 1.089, 1.527, 2.093, 2.799, 3.655",\
                 "0.1894, 0.2265, 0.3402, 0.5178, 0.7594, 1.087, 1.525, 2.092, 2.798, 3.657",\
                 "0.2042, 0.2398, 0.346, 0.5142, 0.7556, 1.085, 1.523, 2.091, 2.799, 3.657",\
                 "0.2094, 0.243, 0.3438, 0.5108, 0.7494, 1.078, 1.52, 2.088, 2.798, 3.657",\
                 "0.2102, 0.2414, 0.3388, 0.5044, 0.7438, 1.074, 1.514, 2.082, 2.791, 3.655",\
                 "0.212, 0.2422, 0.337, 0.4986, 0.737, 1.064, 1.508, 2.076, 2.786, 3.645",\
                 "0.2164, 0.2448, 0.337, 0.4972, 0.732, 1.061, 1.501, 2.074, 2.787, 3.647",\
                 "0.2208, 0.249, 0.3386, 0.4966, 0.7306, 1.058, 1.5, 2.073, 2.783, 3.642");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.2114, 0.2597, 0.4171, 0.7087, 1.181, 1.86, 2.771, 3.914, 5.324, 6.992",\
                 "0.2118, 0.2595, 0.4169, 0.7091, 1.18, 1.862, 2.771, 3.915, 5.317, 6.99",\
                 "0.2103, 0.2593, 0.4164, 0.7086, 1.179, 1.863, 2.769, 3.92, 5.316, 6.989",\
                 "0.218, 0.2658, 0.4206, 0.7118, 1.18, 1.861, 2.772, 3.916, 5.318, 6.987",\
                 "0.2386, 0.2834, 0.433, 0.7192, 1.184, 1.863, 2.767, 3.917, 5.316, 6.987",\
                 "0.273, 0.3148, 0.4564, 0.732, 1.192, 1.868, 2.773, 3.922, 5.325, 6.989",\
                 "0.315, 0.3574, 0.493, 0.7572, 1.205, 1.872, 2.776, 3.925, 5.317, 6.983",\
                 "0.3628, 0.4072, 0.539, 0.7938, 1.235, 1.89, 2.782, 3.923, 5.328, 6.996",\
                 "0.416, 0.4636, 0.5958, 0.8386, 1.273, 1.923, 2.803, 3.935, 5.324, 7",\
                 "0.4718, 0.5234, 0.6624, 0.8934, 1.317, 1.967, 2.846, 3.962, 5.338, 6.995");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.7385, 0.7775, 0.8895, 1.057, 1.265, 1.516, 1.818, 2.182, 2.617, 3.133",\
                 "0.7479, 0.787, 0.8988, 1.066, 1.274, 1.525, 1.827, 2.191, 2.627, 3.142",\
                 "0.7827, 0.8218, 0.9338, 1.101, 1.309, 1.56, 1.862, 2.226, 2.662, 3.177",\
                 "0.8292, 0.8683, 0.9803, 1.147, 1.356, 1.607, 1.909, 2.273, 2.708, 3.224",\
                 "0.8626, 0.9015, 1.014, 1.181, 1.39, 1.64, 1.943, 2.306, 2.742, 3.257",\
                 "0.8806, 0.9196, 1.031, 1.198, 1.407, 1.658, 1.96, 2.324, 2.76, 3.275",\
                 "0.8793, 0.9184, 1.031, 1.198, 1.407, 1.658, 1.96, 2.325, 2.76, 3.275",\
                 "0.8547, 0.894, 1.007, 1.174, 1.384, 1.636, 1.938, 2.302, 2.738, 3.253",\
                 "0.8044, 0.8436, 0.9566, 1.125, 1.336, 1.588, 1.891, 2.256, 2.691, 3.207",\
                 "0.7269, 0.766, 0.8793, 1.048, 1.26, 1.512, 1.816, 2.18, 2.616, 3.131");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.8041, 0.8461, 0.9697, 1.169, 1.453, 1.842, 2.35, 2.989, 3.77, 4.702",\
                 "0.8163, 0.8583, 0.9818, 1.181, 1.465, 1.854, 2.363, 3.002, 3.782, 4.714",\
                 "0.8687, 0.9106, 1.034, 1.233, 1.518, 1.906, 2.415, 3.055, 3.835, 4.767",\
                 "0.9718, 1.014, 1.137, 1.336, 1.621, 2.01, 2.517, 3.158, 3.937, 4.867",\
                 "1.112, 1.154, 1.277, 1.476, 1.76, 2.149, 2.657, 3.297, 4.078, 5.009",\
                 "1.281, 1.323, 1.446, 1.645, 1.929, 2.318, 2.826, 3.465, 4.247, 5.175",\
                 "1.48, 1.522, 1.645, 1.844, 2.127, 2.516, 3.024, 3.664, 4.443, 5.375",\
                 "1.706, 1.748, 1.872, 2.071, 2.355, 2.743, 3.251, 3.89, 4.671, 5.602",\
                 "1.96, 2.002, 2.127, 2.325, 2.609, 2.997, 3.505, 4.144, 4.924, 5.853",\
                 "2.244, 2.286, 2.41, 2.609, 2.893, 3.281, 3.788, 4.428, 5.207, 6.136");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.219, 0.2567, 0.3698, 0.5449, 0.7804, 1.099, 1.532, 2.096, 2.8, 3.658",\
                 "0.219, 0.2568, 0.3696, 0.5457, 0.7796, 1.099, 1.532, 2.096, 2.8, 3.658",\
                 "0.219, 0.2566, 0.3699, 0.5452, 0.7794, 1.101, 1.533, 2.096, 2.801, 3.655",\
                 "0.219, 0.257, 0.3696, 0.5448, 0.7796, 1.1, 1.533, 2.096, 2.799, 3.655",\
                 "0.2192, 0.257, 0.3704, 0.5456, 0.7794, 1.101, 1.533, 2.096, 2.801, 3.658",\
                 "0.2198, 0.2582, 0.3712, 0.5464, 0.7792, 1.1, 1.534, 2.096, 2.801, 3.656",\
                 "0.222, 0.2604, 0.3732, 0.5476, 0.7812, 1.101, 1.531, 2.094, 2.799, 3.658",\
                 "0.2248, 0.2626, 0.3754, 0.5516, 0.785, 1.104, 1.533, 2.094, 2.797, 3.652",\
                 "0.2276, 0.266, 0.3782, 0.5548, 0.788, 1.106, 1.537, 2.095, 2.801, 3.652",\
                 "0.2308, 0.2682, 0.3818, 0.5576, 0.791, 1.109, 1.538, 2.098, 2.801, 3.654");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.003942, 0.005449, 0.01074, 0.02084, 0.03657, 0.05865, 0.0877, 0.1243, 0.169, 0.2222");
          values("0.22, 0.2678, 0.4226, 0.711, 1.181, 1.862, 2.77, 3.919, 5.316, 6.989",\
                 "0.2202, 0.2677, 0.4227, 0.7114, 1.18, 1.863, 2.768, 3.92, 5.316, 6.988",\
                 "0.2202, 0.2677, 0.4228, 0.7114, 1.18, 1.863, 2.769, 3.921, 5.324, 6.99",\
                 "0.2202, 0.2684, 0.4226, 0.713, 1.181, 1.862, 2.771, 3.92, 5.317, 6.987",\
                 "0.22, 0.269, 0.4236, 0.7114, 1.18, 1.863, 2.77, 3.922, 5.326, 6.991",\
                 "0.2212, 0.2694, 0.4238, 0.712, 1.179, 1.862, 2.772, 3.916, 5.317, 6.987",\
                 "0.223, 0.2708, 0.4256, 0.7142, 1.18, 1.861, 2.771, 3.921, 5.314, 6.99",\
                 "0.224, 0.2728, 0.4288, 0.7158, 1.182, 1.862, 2.77, 3.921, 5.32, 7.001",\
                 "0.226, 0.2756, 0.431, 0.7172, 1.184, 1.863, 2.769, 3.916, 5.322, 6.997",\
                 "0.2282, 0.2772, 0.4334, 0.7202, 1.185, 1.862, 2.773, 3.914, 5.314, 6.998");
        }
      }
    }
  }

