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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.199, 0.1983, 0.2003, 0.2106, 0.2321, 0.2669, 0.3165, 0.3816, \
                  0.4628, 0.5615");
        }

        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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.1354, 0.1348, 0.136, 0.1431, 0.1571, 0.1781, 0.2069, 0.2461, \
                  0.2984, 0.3641");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.08655, 0.08595, 0.08718, 0.0936, 0.1061, 0.1255, 0.1522, 0.1868, \
                  0.2297, 0.2814");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.01625, 0.01579, 0.01637, 0.02058, 0.03034, 0.04636, 0.06909, \
                  0.09901, 0.1365, 0.1817");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.002756 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.2274 ;
      max_transition : 5 ;
      min_capacitance : 0.003756 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.154, 0.154, 0.1538, 0.1537, 0.1536, 0.1536, 0.1536, 0.1537, 0.1537, 0.1536",\
                 "0.1538, 0.1538, 0.1537, 0.1535, 0.1535, 0.1535, 0.1535, 0.1535, 0.1535, 0.1535",\
                 "0.1575, 0.1575, 0.1574, 0.1573, 0.1571, 0.1571, 0.1572, 0.1572, 0.1571, 0.1572",\
                 "0.1687, 0.1686, 0.1686, 0.1685, 0.1685, 0.1685, 0.1686, 0.1687, 0.1687, 0.1687",\
                 "0.1877, 0.1877, 0.1877, 0.1876, 0.1875, 0.1877, 0.1875, 0.1876, 0.1876, 0.1876",\
                 "0.2155, 0.2155, 0.2155, 0.2154, 0.2154, 0.2154, 0.2154, 0.2154, 0.2154, 0.2154",\
                 "0.2527, 0.2527, 0.2527, 0.2526, 0.2526, 0.2526, 0.2526, 0.2526, 0.2526, 0.2527",\
                 "0.2996, 0.2996, 0.2996, 0.2995, 0.2994, 0.2995, 0.2995, 0.2996, 0.2996, 0.2996",\
                 "0.3567, 0.3568, 0.3567, 0.3565, 0.3565, 0.3565, 0.3566, 0.3566, 0.3566, 0.3566",\
                 "0.4243, 0.4243, 0.4243, 0.4242, 0.4241, 0.4241, 0.4241, 0.4241, 0.4241, 0.4241");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.08802, 0.08808, 0.08796, 0.08799, 0.08816, 0.08849, 0.08908, 0.08977, 0.09064, 0.09236",\
                 "0.08741, 0.08738, 0.08724, 0.08727, 0.08735, 0.08754, 0.08823, 0.0891, 0.08997, 0.09146",\
                 "0.08804, 0.08808, 0.08812, 0.08808, 0.08816, 0.08858, 0.08913, 0.08982, 0.09051, 0.09236",\
                 "0.09576, 0.09585, 0.09577, 0.0956, 0.09594, 0.09605, 0.09709, 0.09778, 0.09829, 0.1",\
                 "0.1136, 0.1137, 0.1137, 0.1139, 0.1139, 0.1143, 0.115, 0.1156, 0.1163, 0.118",\
                 "0.144, 0.1439, 0.1438, 0.1438, 0.1445, 0.1446, 0.1454, 0.1457, 0.1468, 0.1482",\
                 "0.1873, 0.1875, 0.1873, 0.1872, 0.1874, 0.1887, 0.189, 0.1896, 0.1898, 0.1918",\
                 "0.2449, 0.2449, 0.245, 0.2449, 0.2446, 0.2453, 0.2473, 0.2478, 0.2474, 0.2481",\
                 "0.317, 0.3171, 0.3171, 0.3172, 0.3173, 0.3169, 0.3181, 0.3206, 0.3206, 0.321",\
                 "0.4047, 0.4049, 0.4049, 0.4049, 0.4049, 0.4048, 0.4051, 0.4068, 0.4095, 0.4101");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.2528, 0.2518, 0.2499, 0.2487, 0.2482, 0.248, 0.2479, 0.2477, 0.2477, 0.2477",\
                 "0.2525, 0.2513, 0.2495, 0.2483, 0.2478, 0.2475, 0.2475, 0.2473, 0.2473, 0.2473",\
                 "0.2528, 0.2517, 0.2498, 0.2486, 0.2481, 0.248, 0.2478, 0.2477, 0.2477, 0.2477",\
                 "0.2572, 0.2562, 0.2544, 0.2531, 0.2525, 0.2523, 0.2522, 0.2521, 0.2521, 0.2521",\
                 "0.2677, 0.2666, 0.2647, 0.2635, 0.263, 0.2627, 0.2625, 0.2625, 0.2624, 0.2624",\
                 "0.2847, 0.2837, 0.2817, 0.2803, 0.2797, 0.2795, 0.2794, 0.2793, 0.2794, 0.2793",\
                 "0.3091, 0.3081, 0.306, 0.3046, 0.304, 0.3038, 0.3036, 0.3034, 0.3034, 0.3034",\
                 "0.3414, 0.3402, 0.338, 0.3364, 0.3358, 0.3355, 0.3353, 0.3352, 0.3351, 0.3351",\
                 "0.3819, 0.3806, 0.3782, 0.3765, 0.3756, 0.3752, 0.375, 0.3748, 0.3748, 0.3747",\
                 "0.4306, 0.4292, 0.4266, 0.4247, 0.4236, 0.4232, 0.423, 0.4228, 0.4227, 0.4227");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.2072, 0.2073, 0.2073, 0.2082, 0.2097, 0.2111, 0.2128, 0.2144, 0.2153, 0.2169",\
                 "0.2067, 0.2067, 0.2069, 0.2077, 0.2091, 0.2104, 0.2119, 0.2137, 0.2154, 0.2169",\
                 "0.2078, 0.2078, 0.2079, 0.2088, 0.2102, 0.2115, 0.213, 0.2148, 0.2165, 0.2178",\
                 "0.2143, 0.2144, 0.2146, 0.2153, 0.2167, 0.2182, 0.2196, 0.2215, 0.2227, 0.2241",\
                 "0.2277, 0.2275, 0.2274, 0.2283, 0.2296, 0.2308, 0.2328, 0.2341, 0.2353, 0.2376",\
                 "0.2482, 0.248, 0.2481, 0.2487, 0.25, 0.2512, 0.2533, 0.2546, 0.2557, 0.2578",\
                 "0.2767, 0.2764, 0.2761, 0.2769, 0.278, 0.279, 0.2807, 0.2821, 0.2833, 0.2848",\
                 "0.3137, 0.3134, 0.3128, 0.3129, 0.3142, 0.3164, 0.317, 0.3183, 0.3192, 0.3206",\
                 "0.3598, 0.3594, 0.359, 0.3585, 0.3589, 0.3603, 0.3629, 0.364, 0.3644, 0.3656",\
                 "0.4151, 0.4148, 0.414, 0.4137, 0.4133, 0.4138, 0.4158, 0.4189, 0.4197, 0.4205");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.192, 0.202, 0.239, 0.315, 0.412, 0.526, 0.655, 0.798, 0.955, \
                  1.125");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.323, 0.331, 0.369, 0.444, 0.542, 0.66, 0.797, 0.95, 1.12, 1.31");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.2689, 0.2971, 0.3774, 0.4947, 0.6431, 0.8279, 1.056, 1.337, 1.677, 2.081",\
                 "0.2762, 0.3044, 0.3846, 0.5018, 0.6506, 0.8353, 1.064, 1.345, 1.685, 2.089",\
                 "0.3068, 0.3349, 0.4148, 0.532, 0.6804, 0.8651, 1.094, 1.374, 1.714, 2.118",\
                 "0.3647, 0.3922, 0.4705, 0.5862, 0.7338, 0.9183, 1.147, 1.427, 1.767, 2.171",\
                 "0.4225, 0.4515, 0.5305, 0.6448, 0.7915, 0.9751, 1.203, 1.484, 1.824, 2.228",\
                 "0.4591, 0.4881, 0.5658, 0.6795, 0.8255, 1.009, 1.236, 1.517, 1.857, 2.26",\
                 "0.4767, 0.505, 0.5821, 0.6946, 0.8398, 1.023, 1.25, 1.53, 1.869, 2.274",\
                 "0.4775, 0.5058, 0.5825, 0.6936, 0.8376, 1.019, 1.246, 1.526, 1.865, 2.269",\
                 "0.4615, 0.4901, 0.5662, 0.6764, 0.8193, 0.9997, 1.226, 1.505, 1.845, 2.248",\
                 "0.4278, 0.4565, 0.5331, 0.6428, 0.785, 0.9648, 1.191, 1.47, 1.809, 2.213");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.2363, 0.2652, 0.3508, 0.4917, 0.6993, 0.9873, 1.366, 1.843, 2.427, 3.121",\
                 "0.2429, 0.2718, 0.3572, 0.4981, 0.7057, 0.9938, 1.372, 1.849, 2.433, 3.127",\
                 "0.2681, 0.2969, 0.3824, 0.5233, 0.7307, 1.019, 1.397, 1.875, 2.457, 3.152",\
                 "0.3097, 0.3393, 0.4259, 0.5673, 0.7749, 1.063, 1.442, 1.919, 2.501, 3.196",\
                 "0.3454, 0.3773, 0.4669, 0.6105, 0.8189, 1.107, 1.486, 1.963, 2.546, 3.24",\
                 "0.3717, 0.4071, 0.502, 0.648, 0.8575, 1.146, 1.525, 2.002, 2.585, 3.279",\
                 "0.3847, 0.4248, 0.5283, 0.6793, 0.8901, 1.179, 1.558, 2.035, 2.618, 3.313",\
                 "0.3824, 0.4277, 0.5423, 0.7008, 0.9158, 1.206, 1.585, 2.062, 2.645, 3.339",\
                 "0.3635, 0.4146, 0.542, 0.7106, 0.9314, 1.225, 1.605, 2.083, 2.665, 3.359",\
                 "0.3274, 0.3843, 0.5251, 0.706, 0.9336, 1.233, 1.618, 2.096, 2.678, 3.373");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.1309, 0.1589, 0.2413, 0.3653, 0.5409, 0.7884, 1.127, 1.563, 2.109, 2.766",\
                 "0.1308, 0.1589, 0.2413, 0.3651, 0.5407, 0.7893, 1.126, 1.563, 2.109, 2.766",\
                 "0.1297, 0.158, 0.2407, 0.3646, 0.5408, 0.7895, 1.125, 1.565, 2.109, 2.77",\
                 "0.127, 0.1547, 0.2363, 0.3611, 0.5386, 0.7873, 1.124, 1.564, 2.111, 2.765",\
                 "0.1361, 0.1613, 0.2358, 0.357, 0.5356, 0.7858, 1.124, 1.563, 2.109, 2.769",\
                 "0.1378, 0.1612, 0.2338, 0.3556, 0.5334, 0.7828, 1.122, 1.561, 2.108, 2.765",\
                 "0.1366, 0.1596, 0.231, 0.353, 0.532, 0.782, 1.12, 1.56, 2.109, 2.768",\
                 "0.1368, 0.159, 0.229, 0.3492, 0.5272, 0.7792, 1.118, 1.558, 2.105, 2.763",\
                 "0.1382, 0.1598, 0.2282, 0.3462, 0.5228, 0.7744, 1.115, 1.558, 2.105, 2.762",\
                 "0.1398, 0.1612, 0.2278, 0.3448, 0.5214, 0.7728, 1.113, 1.558, 2.104, 2.762");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.1343, 0.1677, 0.2778, 0.4871, 0.8294, 1.323, 1.973, 2.797, 3.803, 5.009",\
                 "0.1342, 0.1676, 0.2775, 0.4872, 0.8296, 1.321, 1.974, 2.798, 3.809, 5.01",\
                 "0.134, 0.1676, 0.2779, 0.4873, 0.8297, 1.324, 1.976, 2.801, 3.802, 5",\
                 "0.1394, 0.1714, 0.2799, 0.4885, 0.8296, 1.324, 1.977, 2.801, 3.8, 4.999",\
                 "0.1524, 0.1829, 0.2872, 0.493, 0.8312, 1.322, 1.975, 2.799, 3.809, 5.009",\
                 "0.1712, 0.2, 0.2988, 0.498, 0.8348, 1.326, 1.976, 2.796, 3.808, 5.008",\
                 "0.195, 0.2248, 0.3174, 0.5084, 0.8384, 1.325, 1.976, 2.796, 3.799, 5.004",\
                 "0.2222, 0.2526, 0.3436, 0.526, 0.848, 1.328, 1.977, 2.798, 3.806, 5.001",\
                 "0.251, 0.2842, 0.3748, 0.55, 0.8658, 1.342, 1.981, 2.8, 3.801, 4.995",\
                 "0.2802, 0.3168, 0.4112, 0.5776, 0.887, 1.36, 1.996, 2.805, 3.803, 4.995");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.5324, 0.5616, 0.6449, 0.7673, 0.9187, 1.105, 1.334, 1.615, 1.955, 2.359",\
                 "0.5394, 0.5684, 0.6518, 0.7739, 0.9256, 1.112, 1.341, 1.622, 1.961, 2.365",\
                 "0.5651, 0.5942, 0.6776, 0.7999, 0.9513, 1.137, 1.366, 1.647, 1.987, 2.391",\
                 "0.602, 0.6309, 0.7143, 0.8367, 0.9882, 1.174, 1.403, 1.684, 2.024, 2.428",\
                 "0.631, 0.6601, 0.7436, 0.8658, 1.017, 1.204, 1.433, 1.714, 2.053, 2.457",\
                 "0.6519, 0.6813, 0.7645, 0.8865, 1.038, 1.224, 1.453, 1.734, 2.074, 2.478",\
                 "0.6621, 0.6911, 0.7743, 0.897, 1.049, 1.235, 1.464, 1.745, 2.085, 2.489",\
                 "0.6579, 0.687, 0.7704, 0.8931, 1.045, 1.231, 1.461, 1.741, 2.081, 2.485",\
                 "0.6392, 0.6684, 0.7522, 0.8749, 1.027, 1.214, 1.443, 1.724, 2.064, 2.468",\
                 "0.6035, 0.6326, 0.7166, 0.8398, 0.9924, 1.179, 1.408, 1.69, 2.029, 2.433");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.5676, 0.5978, 0.6854, 0.8283, 1.037, 1.327, 1.707, 2.184, 2.769, 3.464",\
                 "0.5764, 0.6065, 0.6941, 0.8369, 1.046, 1.335, 1.715, 2.194, 2.776, 3.471",\
                 "0.6135, 0.6436, 0.7312, 0.874, 1.083, 1.373, 1.752, 2.231, 2.813, 3.508",\
                 "0.6861, 0.7164, 0.804, 0.9467, 1.156, 1.445, 1.825, 2.303, 2.887, 3.582",\
                 "0.7828, 0.8128, 0.9006, 1.043, 1.253, 1.542, 1.922, 2.4, 2.982, 3.676",\
                 "0.8995, 0.9293, 1.017, 1.16, 1.369, 1.658, 2.038, 2.516, 3.098, 3.793",\
                 "1.036, 1.066, 1.154, 1.296, 1.505, 1.794, 2.174, 2.652, 3.235, 3.931",\
                 "1.191, 1.221, 1.309, 1.451, 1.66, 1.949, 2.329, 2.806, 3.39, 4.083",\
                 "1.364, 1.394, 1.482, 1.625, 1.833, 2.122, 2.502, 2.979, 3.562, 4.256",\
                 "1.557, 1.587, 1.676, 1.818, 2.026, 2.315, 2.694, 3.171, 3.754, 4.448");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.1463, 0.1746, 0.2581, 0.3795, 0.5503, 0.7934, 1.128, 1.564, 2.109, 2.766",\
                 "0.146, 0.1748, 0.2583, 0.3791, 0.55, 0.7927, 1.127, 1.564, 2.109, 2.765",\
                 "0.1462, 0.1748, 0.2582, 0.3794, 0.55, 0.7934, 1.127, 1.564, 2.11, 2.766",\
                 "0.146, 0.1746, 0.2583, 0.3798, 0.55, 0.7928, 1.127, 1.564, 2.109, 2.766",\
                 "0.146, 0.1748, 0.2584, 0.3798, 0.5502, 0.7934, 1.128, 1.565, 2.109, 2.766",\
                 "0.1466, 0.175, 0.2584, 0.3796, 0.5498, 0.7932, 1.128, 1.564, 2.11, 2.766",\
                 "0.1468, 0.1754, 0.2592, 0.3802, 0.5504, 0.7934, 1.127, 1.564, 2.109, 2.769",\
                 "0.1478, 0.1766, 0.2606, 0.3816, 0.5512, 0.7954, 1.129, 1.564, 2.109, 2.768",\
                 "0.1492, 0.1776, 0.2618, 0.3832, 0.5526, 0.795, 1.129, 1.565, 2.11, 2.765",\
                 "0.1502, 0.1792, 0.2628, 0.3856, 0.554, 0.7964, 1.13, 1.566, 2.11, 2.766");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.003756, 0.0053, 0.01072, 0.02107, 0.03719, 0.05981, 0.08957, 0.1271, 0.1728, 0.2274");
          values("0.1417, 0.1748, 0.2818, 0.4891, 0.8296, 1.323, 1.976, 2.798, 3.803, 5.008",\
                 "0.1423, 0.1747, 0.2817, 0.4886, 0.8293, 1.323, 1.977, 2.802, 3.807, 5.008",\
                 "0.1423, 0.1748, 0.2815, 0.4885, 0.8298, 1.323, 1.977, 2.802, 3.807, 5.008",\
                 "0.1419, 0.1751, 0.2818, 0.4888, 0.83, 1.323, 1.976, 2.799, 3.809, 5.009",\
                 "0.143, 0.1752, 0.282, 0.489, 0.8298, 1.324, 1.977, 2.802, 3.804, 5.005",\
                 "0.1426, 0.1756, 0.282, 0.4886, 0.8298, 1.324, 1.977, 2.802, 3.803, 5.006",\
                 "0.1428, 0.1754, 0.2826, 0.4892, 0.8294, 1.322, 1.976, 2.8, 3.803, 5.001",\
                 "0.144, 0.1774, 0.2838, 0.4898, 0.831, 1.321, 1.973, 2.796, 3.807, 4.995",\
                 "0.1452, 0.178, 0.2852, 0.4914, 0.8318, 1.323, 1.972, 2.793, 3.798, 5.002",\
                 "0.1468, 0.1798, 0.2868, 0.4926, 0.8318, 1.322, 1.975, 2.794, 3.797, 5.001");
        }
      }
    }
  }

