/*
 * 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_mcu9t5v0__invz_8) {
    area : 104.428800 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.09532, 0.09437, 0.09379, 0.09596, 0.1019, 0.1123, 0.1278, 0.1492, \
                  0.1769, 0.211");
        }

        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.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.05775, 0.05699, 0.05682, 0.05883, 0.06308, 0.06987, 0.07942, \
                  0.09224, 0.1091, 0.1307");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.07945, 0.07811, 0.07737, 0.08046, 0.08785, 0.1002, 0.1179, 0.1415, \
                  0.1713, 0.2077");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.03178, 0.03113, 0.03096, 0.03289, 0.03889, 0.04956, 0.06513, \
                  0.08619, 0.1128, 0.1452");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.02289 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 2.61 ;
      max_transition : 8.4 ;
      min_capacitance : 0.02389 ;
      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.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.1732, 0.1732, 0.1732, 0.1731, 0.1731, 0.1731, 0.1732, 0.1732, 0.1732, 0.1732",\
                 "0.1732, 0.1732, 0.1732, 0.1731, 0.1731, 0.1731, 0.1732, 0.1732, 0.1732, 0.1733",\
                 "0.1749, 0.1748, 0.1748, 0.1747, 0.1747, 0.1747, 0.1748, 0.1748, 0.1748, 0.1748",\
                 "0.1783, 0.1782, 0.1782, 0.1782, 0.1781, 0.1781, 0.1781, 0.1782, 0.1782, 0.1782",\
                 "0.1845, 0.1844, 0.1844, 0.1843, 0.1843, 0.1843, 0.1843, 0.1843, 0.1844, 0.1844",\
                 "0.1938, 0.1936, 0.1936, 0.1936, 0.1936, 0.1935, 0.1935, 0.1936, 0.1936, 0.1936",\
                 "0.2062, 0.2062, 0.2062, 0.2062, 0.2061, 0.2062, 0.2062, 0.2062, 0.2062, 0.2062",\
                 "0.2224, 0.2224, 0.2224, 0.2223, 0.2222, 0.2223, 0.2223, 0.2224, 0.2224, 0.2224",\
                 "0.2422, 0.2422, 0.2421, 0.2421, 0.242, 0.242, 0.242, 0.2421, 0.2421, 0.2421",\
                 "0.2659, 0.2658, 0.2658, 0.2657, 0.2657, 0.2656, 0.2657, 0.2657, 0.2657, 0.2657");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.1548, 0.1549, 0.1547, 0.155, 0.1557, 0.1566, 0.1583, 0.1593, 0.1624, 0.1726",\
                 "0.1544, 0.1545, 0.1543, 0.1544, 0.155, 0.1564, 0.1575, 0.1597, 0.1616, 0.1724",\
                 "0.154, 0.1542, 0.1542, 0.1541, 0.155, 0.156, 0.1573, 0.1583, 0.1614, 0.172",\
                 "0.1559, 0.1559, 0.1557, 0.156, 0.1568, 0.1575, 0.1595, 0.1605, 0.1639, 0.1761",\
                 "0.1608, 0.1612, 0.1615, 0.1618, 0.1625, 0.1631, 0.1642, 0.1654, 0.1683, 0.183",\
                 "0.1702, 0.1704, 0.1703, 0.1703, 0.1722, 0.1726, 0.1737, 0.1751, 0.179, 0.1951",\
                 "0.1847, 0.1848, 0.1851, 0.1845, 0.1853, 0.1884, 0.189, 0.1892, 0.1924, 0.2134",\
                 "0.2043, 0.2044, 0.205, 0.2047, 0.2044, 0.2059, 0.21, 0.2119, 0.2139, 0.2411",\
                 "0.2294, 0.2295, 0.2297, 0.2302, 0.2294, 0.2298, 0.2323, 0.2373, 0.2416, 0.2813",\
                 "0.2604, 0.2605, 0.2607, 0.2613, 0.2607, 0.2607, 0.2616, 0.2654, 0.2777, 0.3364");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.2687, 0.2716, 0.2772, 0.2815, 0.2837, 0.2849, 0.2856, 0.2861, 0.2864, 0.2866",\
                 "0.2681, 0.2709, 0.2767, 0.2809, 0.2831, 0.2843, 0.2851, 0.2855, 0.2858, 0.286",\
                 "0.2672, 0.2699, 0.2757, 0.2799, 0.2822, 0.2834, 0.2841, 0.2845, 0.2848, 0.285",\
                 "0.2687, 0.2714, 0.2771, 0.2813, 0.2836, 0.2849, 0.2857, 0.2861, 0.2864, 0.2866",\
                 "0.2749, 0.2774, 0.2828, 0.2869, 0.2894, 0.2907, 0.2915, 0.292, 0.2924, 0.2926",\
                 "0.2863, 0.2885, 0.2936, 0.2979, 0.3005, 0.3019, 0.3027, 0.3032, 0.3036, 0.3038",\
                 "0.3037, 0.3056, 0.3105, 0.3146, 0.3172, 0.3188, 0.3198, 0.3203, 0.3207, 0.3209",\
                 "0.327, 0.3289, 0.3332, 0.3373, 0.3402, 0.3418, 0.3428, 0.3434, 0.3439, 0.3441",\
                 "0.3568, 0.3584, 0.3625, 0.3665, 0.3692, 0.371, 0.372, 0.3728, 0.3732, 0.3736",\
                 "0.3933, 0.3947, 0.3984, 0.4023, 0.405, 0.4069, 0.408, 0.4087, 0.4092, 0.4096");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.266, 0.2692, 0.2739, 0.2788, 0.2824, 0.2855, 0.2879, 0.2908, 0.2935, 0.3057",\
                 "0.2649, 0.2676, 0.2731, 0.2775, 0.2811, 0.2839, 0.2863, 0.2883, 0.2923, 0.3047",\
                 "0.2638, 0.2665, 0.272, 0.2765, 0.2804, 0.2828, 0.2851, 0.2873, 0.2907, 0.3043",\
                 "0.2665, 0.2693, 0.2744, 0.2789, 0.2826, 0.2857, 0.2879, 0.2908, 0.2933, 0.3082",\
                 "0.2738, 0.2763, 0.2811, 0.2856, 0.2894, 0.2925, 0.2948, 0.2988, 0.302, 0.3199",\
                 "0.2868, 0.289, 0.2936, 0.2986, 0.3022, 0.3059, 0.3079, 0.312, 0.3154, 0.336",\
                 "0.3055, 0.3077, 0.3117, 0.3162, 0.321, 0.3241, 0.3267, 0.3304, 0.3344, 0.3622",\
                 "0.331, 0.3329, 0.3369, 0.3407, 0.3445, 0.3501, 0.3528, 0.356, 0.3609, 0.4011",\
                 "0.3635, 0.3654, 0.369, 0.3731, 0.376, 0.3798, 0.3857, 0.3892, 0.3974, 0.4551",\
                 "0.4033, 0.4051, 0.4088, 0.4125, 0.4158, 0.4192, 0.4223, 0.4294, 0.4442, 0.5405");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.547, 0.568, 0.636, 0.772, 0.989, 1.247, 1.528, 1.838, 2.183, \
                  2.565");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.531, 0.547, 0.613, 0.74, 0.899, 1.086, 1.302, 1.554, 1.836, \
                  2.157");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.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.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.3727, 0.4331, 0.5804, 0.7706, 0.9944, 1.256, 1.566, 1.933, 2.37, 2.885",\
                 "0.3895, 0.4498, 0.5971, 0.7876, 1.011, 1.273, 1.582, 1.95, 2.387, 2.902",\
                 "0.4503, 0.5105, 0.6576, 0.848, 1.071, 1.333, 1.642, 2.01, 2.447, 2.962",\
                 "0.5517, 0.6125, 0.7594, 0.9499, 1.173, 1.435, 1.744, 2.112, 2.549, 3.064",\
                 "0.6365, 0.7019, 0.8527, 1.043, 1.267, 1.528, 1.837, 2.205, 2.642, 3.157",\
                 "0.6718, 0.737, 0.8877, 1.078, 1.302, 1.563, 1.871, 2.239, 2.676, 3.19",\
                 "0.6681, 0.7334, 0.885, 1.076, 1.299, 1.561, 1.87, 2.237, 2.673, 3.187",\
                 "0.6311, 0.6974, 0.8495, 1.041, 1.265, 1.527, 1.836, 2.203, 2.639, 3.154",\
                 "0.56, 0.6273, 0.7809, 0.9735, 1.198, 1.46, 1.769, 2.136, 2.573, 3.087",\
                 "0.4549, 0.5232, 0.6784, 0.8721, 1.097, 1.36, 1.67, 2.037, 2.474, 2.988");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.3849, 0.4458, 0.6001, 0.8344, 1.173, 1.642, 2.257, 3.031, 3.98, 5.109",\
                 "0.4002, 0.4611, 0.6152, 0.8497, 1.188, 1.657, 2.272, 3.048, 3.994, 5.123",\
                 "0.4547, 0.5157, 0.6698, 0.9043, 1.243, 1.711, 2.327, 3.102, 4.049, 5.178",\
                 "0.5481, 0.6115, 0.768, 1.003, 1.342, 1.81, 2.425, 3.199, 4.149, 5.277",\
                 "0.6302, 0.7041, 0.8749, 1.116, 1.456, 1.925, 2.54, 3.316, 4.26, 5.387",\
                 "0.6823, 0.7675, 0.9573, 1.21, 1.553, 2.022, 2.637, 3.411, 4.359, 5.488",\
                 "0.7042, 0.8017, 1.013, 1.279, 1.627, 2.097, 2.712, 3.486, 4.432, 5.56",\
                 "0.693, 0.8038, 1.04, 1.323, 1.678, 2.149, 2.764, 3.538, 4.483, 5.609",\
                 "0.6463, 0.7704, 1.035, 1.339, 1.704, 2.177, 2.792, 3.566, 4.512, 5.638",\
                 "0.5617, 0.6997, 0.9922, 1.323, 1.701, 2.18, 2.797, 3.571, 4.516, 5.643");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.1949, 0.2525, 0.3933, 0.5817, 0.8298, 1.163, 1.606, 2.18, 2.903, 3.774",\
                 "0.1948, 0.2526, 0.3933, 0.581, 0.8298, 1.163, 1.606, 2.178, 2.898, 3.779",\
                 "0.1941, 0.2522, 0.3922, 0.5812, 0.8298, 1.162, 1.607, 2.18, 2.903, 3.778",\
                 "0.1985, 0.254, 0.3922, 0.5806, 0.8288, 1.163, 1.607, 2.179, 2.899, 3.779",\
                 "0.2242, 0.2762, 0.4024, 0.5822, 0.8298, 1.163, 1.607, 2.181, 2.901, 3.779",\
                 "0.2288, 0.279, 0.4034, 0.5854, 0.8304, 1.161, 1.604, 2.177, 2.899, 3.774",\
                 "0.231, 0.2806, 0.4048, 0.5852, 0.8314, 1.163, 1.603, 2.175, 2.898, 3.776",\
                 "0.2334, 0.2834, 0.4072, 0.5878, 0.8312, 1.164, 1.605, 2.177, 2.896, 3.769",\
                 "0.2382, 0.2876, 0.4098, 0.5898, 0.8342, 1.165, 1.605, 2.179, 2.9, 3.769",\
                 "0.243, 0.2918, 0.4146, 0.5928, 0.838, 1.168, 1.608, 2.179, 2.9, 3.773");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.1811, 0.24, 0.4237, 0.774, 1.354, 2.184, 3.287, 4.675, 6.378, 8.39",\
                 "0.1807, 0.2396, 0.4231, 0.7741, 1.35, 2.186, 3.288, 4.678, 6.37, 8.397",\
                 "0.1804, 0.2396, 0.4227, 0.7742, 1.353, 2.186, 3.288, 4.673, 6.369, 8.396",\
                 "0.1929, 0.2478, 0.4266, 0.7754, 1.354, 2.184, 3.287, 4.675, 6.378, 8.389",\
                 "0.2298, 0.2858, 0.4522, 0.7864, 1.356, 2.185, 3.289, 4.671, 6.368, 8.387",\
                 "0.2688, 0.3272, 0.4894, 0.8088, 1.364, 2.185, 3.284, 4.671, 6.377, 8.391",\
                 "0.3106, 0.3738, 0.5342, 0.8368, 1.377, 2.192, 3.286, 4.674, 6.367, 8.393",\
                 "0.356, 0.4244, 0.588, 0.8728, 1.394, 2.202, 3.291, 4.679, 6.366, 8.381",\
                 "0.4024, 0.4798, 0.6468, 0.9196, 1.42, 2.209, 3.296, 4.68, 6.37, 8.404",\
                 "0.4504, 0.535, 0.714, 0.9806, 1.455, 2.228, 3.306, 4.682, 6.375, 8.389");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.6646, 0.7293, 0.8817, 1.074, 1.297, 1.559, 1.868, 2.235, 2.672, 3.187",\
                 "0.6799, 0.7447, 0.8971, 1.089, 1.312, 1.574, 1.883, 2.25, 2.687, 3.202",\
                 "0.7318, 0.7963, 0.9489, 1.141, 1.364, 1.626, 1.935, 2.303, 2.739, 3.254",\
                 "0.7905, 0.855, 1.008, 1.2, 1.424, 1.685, 1.994, 2.362, 2.799, 3.314",\
                 "0.828, 0.8928, 1.045, 1.238, 1.462, 1.724, 2.033, 2.4, 2.837, 3.352",\
                 "0.8436, 0.9085, 1.062, 1.254, 1.479, 1.741, 2.05, 2.418, 2.855, 3.37",\
                 "0.8351, 0.9002, 1.054, 1.247, 1.472, 1.734, 2.043, 2.411, 2.848, 3.363",\
                 "0.7977, 0.863, 1.018, 1.212, 1.438, 1.7, 2.01, 2.378, 2.815, 3.33",\
                 "0.7297, 0.7957, 0.9515, 1.147, 1.373, 1.636, 1.946, 2.314, 2.751, 3.266",\
                 "0.6287, 0.6952, 0.8522, 1.049, 1.276, 1.539, 1.849, 2.218, 2.655, 3.17");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.7692, 0.832, 0.9888, 1.226, 1.567, 2.037, 2.654, 3.43, 4.374, 5.504",\
                 "0.7846, 0.847, 1.004, 1.241, 1.582, 2.052, 2.668, 3.445, 4.391, 5.519",\
                 "0.8505, 0.9129, 1.07, 1.307, 1.648, 2.118, 2.734, 3.51, 4.458, 5.586",\
                 "0.9788, 1.041, 1.198, 1.435, 1.776, 2.246, 2.863, 3.639, 4.584, 5.715",\
                 "1.141, 1.203, 1.361, 1.598, 1.939, 2.41, 3.026, 3.801, 4.75, 5.879",\
                 "1.329, 1.392, 1.549, 1.787, 2.129, 2.599, 3.215, 3.991, 4.94, 6.069",\
                 "1.549, 1.612, 1.77, 2.008, 2.349, 2.82, 3.436, 4.212, 5.16, 6.29",\
                 "1.802, 1.865, 2.024, 2.262, 2.604, 3.075, 3.691, 4.466, 5.412, 6.542",\
                 "2.09, 2.154, 2.313, 2.552, 2.893, 3.364, 3.982, 4.756, 5.702, 6.829",\
                 "2.412, 2.476, 2.637, 2.876, 3.219, 3.69, 4.308, 5.082, 6.029, 7.154");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.1956, 0.2516, 0.3884, 0.5765, 0.8252, 1.159, 1.604, 2.177, 2.898, 3.779",\
                 "0.1956, 0.2516, 0.3887, 0.5769, 0.826, 1.161, 1.605, 2.178, 2.899, 3.779",\
                 "0.1957, 0.2518, 0.3888, 0.576, 0.8254, 1.16, 1.605, 2.177, 2.9, 3.778",\
                 "0.1968, 0.2526, 0.3896, 0.5774, 0.8266, 1.161, 1.605, 2.179, 2.901, 3.779",\
                 "0.1974, 0.2534, 0.39, 0.5774, 0.826, 1.16, 1.605, 2.179, 2.901, 3.779",\
                 "0.1988, 0.255, 0.3912, 0.5782, 0.8256, 1.16, 1.604, 2.179, 2.902, 3.778",\
                 "0.2014, 0.2572, 0.3938, 0.5788, 0.828, 1.16, 1.603, 2.177, 2.901, 3.777",\
                 "0.2044, 0.2606, 0.397, 0.5822, 0.829, 1.163, 1.606, 2.179, 2.898, 3.773",\
                 "0.2082, 0.2644, 0.4004, 0.585, 0.83, 1.164, 1.608, 2.18, 2.898, 3.774",\
                 "0.2126, 0.269, 0.404, 0.5874, 0.8342, 1.165, 1.609, 2.183, 2.902, 3.778");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.02389, 0.04175, 0.1044, 0.2241, 0.4105, 0.6721, 1.016, 1.45, 1.979, 2.61");
          values("0.1723, 0.2317, 0.4173, 0.7708, 1.349, 2.186, 3.289, 4.679, 6.369, 8.395",\
                 "0.1719, 0.2311, 0.4175, 0.7712, 1.35, 2.186, 3.283, 4.672, 6.372, 8.393",\
                 "0.1721, 0.2306, 0.4176, 0.7712, 1.352, 2.185, 3.288, 4.673, 6.373, 8.395",\
                 "0.1722, 0.2312, 0.4176, 0.771, 1.352, 2.186, 3.283, 4.679, 6.366, 8.397",\
                 "0.173, 0.2326, 0.418, 0.7714, 1.35, 2.183, 3.282, 4.673, 6.377, 8.403",\
                 "0.1752, 0.2348, 0.419, 0.7728, 1.351, 2.186, 3.287, 4.673, 6.378, 8.39",\
                 "0.1764, 0.2364, 0.4206, 0.773, 1.352, 2.183, 3.286, 4.673, 6.37, 8.397",\
                 "0.1784, 0.238, 0.4232, 0.7738, 1.352, 2.182, 3.285, 4.676, 6.375, 8.401",\
                 "0.1806, 0.2406, 0.4244, 0.7766, 1.352, 2.185, 3.282, 4.671, 6.367, 8.385",\
                 "0.1834, 0.243, 0.4268, 0.7772, 1.353, 2.183, 3.286, 4.68, 6.365, 8.4");
        }
      }
    }
  }

