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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.009088 ;
      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.3152, 0.3128, 0.316, 0.3349, 0.3747, 0.4381, 0.5282, 0.6461, \
                  0.7934, 0.9713");
        }

        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.1963, 0.1941, 0.1973, 0.2113, 0.2367, 0.2744, 0.326, 0.3958, \
                  0.4887, 0.6048");
        }

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

    pin(I) {
      capacitance : 0.004786 ;
      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.161, 0.1594, 0.1607, 0.1721, 0.1939, 0.228, 0.2756, 0.3368, \
                  0.4132, 0.5053");
        }

        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.05041, 0.04954, 0.05046, 0.05788, 0.07514, 0.1039, 0.1445, 0.1982, \
                  0.2658, 0.3472");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.006474 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.7362 ;
      max_transition : 5 ;
      min_capacitance : 0.007474 ;
      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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.3145, 0.3145, 0.3144, 0.3142, 0.3143, 0.3144, 0.3144, 0.3145, 0.3145, 0.3146",\
                 "0.3142, 0.3141, 0.314, 0.3139, 0.314, 0.3142, 0.3141, 0.3142, 0.3142, 0.3142",\
                 "0.3216, 0.3217, 0.3216, 0.3214, 0.3215, 0.3216, 0.3217, 0.3217, 0.3217, 0.3217",\
                 "0.3412, 0.3412, 0.341, 0.3408, 0.3409, 0.341, 0.3411, 0.3412, 0.3412, 0.3412",\
                 "0.375, 0.3751, 0.375, 0.3749, 0.3748, 0.3749, 0.375, 0.375, 0.375, 0.375",\
                 "0.4248, 0.4247, 0.4248, 0.4246, 0.4248, 0.4247, 0.4247, 0.4248, 0.4248, 0.4248",\
                 "0.4911, 0.4907, 0.4907, 0.4904, 0.4906, 0.4906, 0.4907, 0.4907, 0.4907, 0.4907",\
                 "0.5739, 0.5738, 0.5735, 0.5734, 0.5735, 0.5735, 0.5736, 0.5737, 0.5737, 0.5736",\
                 "0.6753, 0.6751, 0.6751, 0.6747, 0.6747, 0.6749, 0.6749, 0.6749, 0.6749, 0.6749",\
                 "0.7951, 0.7951, 0.7949, 0.7947, 0.7947, 0.7947, 0.7947, 0.7947, 0.795, 0.795");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.2194, 0.2197, 0.2193, 0.2191, 0.2196, 0.2209, 0.2237, 0.226, 0.2285, 0.2345",\
                 "0.2177, 0.2177, 0.2176, 0.2177, 0.2179, 0.2188, 0.2219, 0.2242, 0.2285, 0.2305",\
                 "0.2191, 0.2191, 0.2186, 0.2192, 0.2197, 0.2207, 0.2232, 0.2256, 0.2285, 0.2309",\
                 "0.234, 0.2345, 0.2344, 0.2345, 0.2352, 0.2366, 0.2385, 0.2409, 0.2452, 0.2507",\
                 "0.2681, 0.268, 0.2677, 0.2695, 0.2693, 0.2703, 0.2732, 0.2755, 0.2771, 0.2827",\
                 "0.3243, 0.3246, 0.3242, 0.3237, 0.3267, 0.327, 0.3285, 0.3309, 0.3343, 0.3376",\
                 "0.4047, 0.4049, 0.4052, 0.4045, 0.4045, 0.4092, 0.4104, 0.4105, 0.413, 0.4163",\
                 "0.5103, 0.5102, 0.5109, 0.5104, 0.5093, 0.512, 0.518, 0.5194, 0.5188, 0.5219",\
                 "0.6424, 0.6427, 0.6431, 0.6426, 0.6423, 0.6435, 0.6458, 0.6531, 0.6574, 0.6555",\
                 "0.8024, 0.8028, 0.8032, 0.8037, 0.8034, 0.8037, 0.8037, 0.8088, 0.8198, 0.8202");
        }
      }

      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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.5228, 0.5223, 0.5236, 0.526, 0.5284, 0.53, 0.531, 0.5318, 0.5322, 0.5325",\
                 "0.522, 0.5215, 0.5226, 0.5251, 0.5275, 0.5292, 0.5303, 0.531, 0.5314, 0.5316",\
                 "0.5226, 0.5219, 0.523, 0.5255, 0.528, 0.5296, 0.5306, 0.5313, 0.5318, 0.5321",\
                 "0.5314, 0.5307, 0.5316, 0.534, 0.5365, 0.5382, 0.5392, 0.5398, 0.5403, 0.5406",\
                 "0.5515, 0.5506, 0.5509, 0.5534, 0.5561, 0.5575, 0.5586, 0.5593, 0.5598, 0.5602",\
                 "0.5845, 0.5834, 0.5834, 0.5859, 0.5879, 0.5895, 0.5905, 0.5912, 0.5917, 0.5921",\
                 "0.6323, 0.6308, 0.63, 0.6319, 0.6337, 0.6353, 0.6363, 0.6371, 0.6376, 0.638",\
                 "0.6939, 0.6925, 0.6912, 0.692, 0.6938, 0.6956, 0.6965, 0.6974, 0.6978, 0.6983",\
                 "0.7725, 0.7702, 0.7677, 0.768, 0.7694, 0.7709, 0.7721, 0.7728, 0.7734, 0.7738",\
                 "0.8654, 0.8628, 0.8597, 0.8591, 0.8602, 0.8614, 0.8623, 0.863, 0.8635, 0.8639");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.4396, 0.4408, 0.4442, 0.4504, 0.4555, 0.4604, 0.4654, 0.4704, 0.4734, 0.4803",\
                 "0.4377, 0.439, 0.4424, 0.4483, 0.4549, 0.4587, 0.4631, 0.4682, 0.4738, 0.4781",\
                 "0.4389, 0.4401, 0.4443, 0.4497, 0.4549, 0.46, 0.4649, 0.4691, 0.4738, 0.4785",\
                 "0.4513, 0.4521, 0.4559, 0.4616, 0.4667, 0.472, 0.4766, 0.4808, 0.4846, 0.4925",\
                 "0.4752, 0.4761, 0.4795, 0.4846, 0.4896, 0.4941, 0.5, 0.5051, 0.508, 0.5159",\
                 "0.5127, 0.5136, 0.5166, 0.522, 0.5268, 0.5318, 0.5369, 0.5411, 0.5449, 0.5501",\
                 "0.5654, 0.5661, 0.5676, 0.5724, 0.5788, 0.5821, 0.5869, 0.5919, 0.5958, 0.6",\
                 "0.6336, 0.6337, 0.6353, 0.6385, 0.6429, 0.6511, 0.6557, 0.659, 0.6619, 0.6659",\
                 "0.7187, 0.7182, 0.7196, 0.7218, 0.7259, 0.7304, 0.7394, 0.744, 0.7443, 0.7478",\
                 "0.8213, 0.8209, 0.8213, 0.8234, 0.8259, 0.8289, 0.8348, 0.8453, 0.8487, 0.85");
        }
      }

      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.21, 0.22, 0.256, 0.331, 0.432, 0.551, 0.69, 0.845, 1.018, 1.209");
        }

        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.273, 0.281, 0.318, 0.389, 0.479, 0.59, 0.719, 0.866, 1.033, \
                  1.219");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.2027, 0.2342, 0.3164, 0.4317, 0.5801, 0.7706, 1.013, 1.316, 1.685, 2.124",\
                 "0.2104, 0.2421, 0.3244, 0.4394, 0.5879, 0.7783, 1.021, 1.324, 1.692, 2.132",\
                 "0.2414, 0.2728, 0.3547, 0.4696, 0.6179, 0.8084, 1.051, 1.354, 1.722, 2.162",\
                 "0.2924, 0.3243, 0.4058, 0.5202, 0.6682, 0.8586, 1.101, 1.404, 1.773, 2.212",\
                 "0.331, 0.3643, 0.4465, 0.5603, 0.7079, 0.898, 1.14, 1.443, 1.812, 2.252",\
                 "0.3487, 0.3818, 0.4636, 0.5774, 0.7249, 0.9147, 1.157, 1.459, 1.828, 2.268",\
                 "0.3481, 0.3811, 0.4629, 0.5763, 0.7233, 0.9129, 1.155, 1.457, 1.826, 2.265",\
                 "0.3304, 0.3637, 0.4451, 0.5583, 0.7049, 0.8941, 1.136, 1.438, 1.807, 2.246",\
                 "0.295, 0.3287, 0.4104, 0.5237, 0.6698, 0.859, 1.101, 1.403, 1.772, 2.211",\
                 "0.2409, 0.275, 0.3576, 0.4708, 0.6173, 0.8063, 1.048, 1.35, 1.719, 2.158");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.1892, 0.2203, 0.3053, 0.4435, 0.6503, 0.9393, 1.319, 1.799, 2.382, 3.079",\
                 "0.1963, 0.2274, 0.3124, 0.4506, 0.6574, 0.9464, 1.327, 1.806, 2.39, 3.087",\
                 "0.2232, 0.2544, 0.3394, 0.4776, 0.6844, 0.9733, 1.354, 1.833, 2.418, 3.116",\
                 "0.262, 0.2956, 0.3831, 0.522, 0.7289, 1.018, 1.398, 1.877, 2.461, 3.158",\
                 "0.291, 0.3291, 0.4218, 0.5631, 0.7706, 1.059, 1.439, 1.919, 2.504, 3.199",\
                 "0.307, 0.3511, 0.4522, 0.5964, 0.8045, 1.094, 1.474, 1.952, 2.538, 3.236",\
                 "0.3072, 0.3579, 0.471, 0.6207, 0.8299, 1.119, 1.5, 1.978, 2.563, 3.261",\
                 "0.2901, 0.3476, 0.475, 0.6331, 0.8456, 1.136, 1.516, 1.995, 2.579, 3.276",\
                 "0.2548, 0.3191, 0.4619, 0.6312, 0.8482, 1.141, 1.522, 2.001, 2.586, 3.282",\
                 "0.2006, 0.2715, 0.4299, 0.6128, 0.8357, 1.133, 1.517, 1.997, 2.582, 3.278");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.0949, 0.1261, 0.2093, 0.3362, 0.5274, 0.8047, 1.184, 1.674, 2.274, 2.99",\
                 "0.09498, 0.1261, 0.2093, 0.3361, 0.528, 0.8048, 1.184, 1.673, 2.272, 2.991",\
                 "0.09414, 0.1253, 0.2086, 0.3356, 0.5269, 0.8047, 1.184, 1.671, 2.273, 2.992",\
                 "0.09742, 0.1265, 0.2074, 0.3344, 0.5266, 0.8043, 1.183, 1.673, 2.273, 2.991",\
                 "0.1047, 0.1319, 0.2081, 0.3334, 0.5252, 0.8038, 1.184, 1.674, 2.272, 2.993",\
                 "0.1054, 0.1318, 0.2076, 0.3332, 0.525, 0.8018, 1.183, 1.671, 2.273, 2.992",\
                 "0.1056, 0.1316, 0.2068, 0.3318, 0.5244, 0.802, 1.181, 1.669, 2.273, 2.989",\
                 "0.1066, 0.1326, 0.2068, 0.3316, 0.5228, 0.8008, 1.182, 1.669, 2.269, 2.987",\
                 "0.109, 0.1344, 0.2074, 0.3312, 0.5222, 0.8004, 1.18, 1.669, 2.269, 2.986",\
                 "0.1108, 0.136, 0.208, 0.332, 0.5224, 0.8008, 1.181, 1.669, 2.269, 2.987");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.0959, 0.1292, 0.2368, 0.4496, 0.7982, 1.297, 1.95, 2.781, 3.789, 4.996",\
                 "0.09556, 0.129, 0.2368, 0.45, 0.7981, 1.297, 1.952, 2.782, 3.791, 4.997",\
                 "0.09616, 0.1292, 0.2369, 0.4496, 0.7975, 1.295, 1.953, 2.777, 3.791, 4.988",\
                 "0.1059, 0.1362, 0.2402, 0.4511, 0.7978, 1.296, 1.95, 2.781, 3.79, 4.996",\
                 "0.1219, 0.1516, 0.2496, 0.4552, 0.801, 1.296, 1.949, 2.78, 3.784, 4.992",\
                 "0.142, 0.1734, 0.263, 0.4604, 0.802, 1.298, 1.95, 2.776, 3.791, 4.995",\
                 "0.164, 0.198, 0.2854, 0.4698, 0.8054, 1.298, 1.952, 2.777, 3.781, 4.992",\
                 "0.1868, 0.2254, 0.3138, 0.4858, 0.8122, 1.3, 1.952, 2.775, 3.788, 4.987",\
                 "0.2096, 0.2534, 0.3468, 0.508, 0.8258, 1.309, 1.956, 2.777, 3.782, 4.99",\
                 "0.2338, 0.2814, 0.3822, 0.5352, 0.8422, 1.325, 1.966, 2.782, 3.784, 4.982");
        }
      }

      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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.3932, 0.4264, 0.5134, 0.632, 0.782, 0.9732, 1.216, 1.519, 1.888, 2.328",\
                 "0.4008, 0.4337, 0.521, 0.6394, 0.7895, 0.9807, 1.223, 1.526, 1.895, 2.335",\
                 "0.4276, 0.4607, 0.5477, 0.6664, 0.8163, 1.008, 1.25, 1.553, 1.922, 2.362",\
                 "0.4643, 0.4974, 0.5845, 0.7031, 0.8532, 1.044, 1.287, 1.59, 1.959, 2.399",\
                 "0.4924, 0.5254, 0.6124, 0.7314, 0.8815, 1.073, 1.316, 1.618, 1.987, 2.427",\
                 "0.5105, 0.5435, 0.6301, 0.7493, 0.8995, 1.091, 1.334, 1.636, 2.005, 2.445",\
                 "0.5155, 0.5485, 0.6357, 0.7547, 0.9049, 1.096, 1.339, 1.642, 2.011, 2.451",\
                 "0.5055, 0.5385, 0.6257, 0.7448, 0.8955, 1.087, 1.33, 1.633, 2.002, 2.441",\
                 "0.4791, 0.512, 0.5995, 0.719, 0.8698, 1.061, 1.304, 1.607, 1.976, 2.416",\
                 "0.4342, 0.4671, 0.5548, 0.6749, 0.8259, 1.017, 1.26, 1.563, 1.932, 2.372");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.4847, 0.5172, 0.6045, 0.7449, 0.9535, 1.244, 1.625, 2.105, 2.69, 3.386",\
                 "0.4924, 0.525, 0.6122, 0.7525, 0.9613, 1.252, 1.633, 2.113, 2.698, 3.396",\
                 "0.5285, 0.561, 0.6483, 0.7886, 0.9973, 1.288, 1.669, 2.149, 2.735, 3.433",\
                 "0.6025, 0.6348, 0.7223, 0.8625, 1.071, 1.362, 1.743, 2.223, 2.809, 3.507",\
                 "0.7018, 0.7343, 0.8215, 0.9618, 1.17, 1.461, 1.842, 2.322, 2.907, 3.604",\
                 "0.8207, 0.8533, 0.9405, 1.081, 1.29, 1.58, 1.961, 2.44, 3.025, 3.725",\
                 "0.9614, 0.9941, 1.082, 1.222, 1.43, 1.72, 2.101, 2.581, 3.167, 3.865",\
                 "1.123, 1.156, 1.243, 1.383, 1.592, 1.882, 2.263, 2.742, 3.327, 4.025",\
                 "1.304, 1.337, 1.425, 1.566, 1.774, 2.064, 2.445, 2.924, 3.509, 4.206",\
                 "1.507, 1.54, 1.629, 1.769, 1.977, 2.267, 2.648, 3.128, 3.712, 4.409");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.1006, 0.1342, 0.2174, 0.3408, 0.5298, 0.8061, 1.184, 1.673, 2.272, 2.99",\
                 "0.1007, 0.1343, 0.2177, 0.341, 0.5291, 0.8057, 1.184, 1.673, 2.275, 2.992",\
                 "0.1008, 0.1341, 0.2178, 0.3409, 0.5292, 0.8059, 1.184, 1.671, 2.273, 2.991",\
                 "0.1006, 0.1343, 0.2183, 0.3412, 0.5296, 0.806, 1.184, 1.671, 2.274, 2.991",\
                 "0.1009, 0.1344, 0.218, 0.3412, 0.5294, 0.8058, 1.184, 1.671, 2.275, 2.99",\
                 "0.1012, 0.1348, 0.2188, 0.3414, 0.5296, 0.8058, 1.184, 1.674, 2.275, 2.992",\
                 "0.1018, 0.1358, 0.2192, 0.342, 0.5304, 0.806, 1.184, 1.672, 2.272, 2.993",\
                 "0.1026, 0.1368, 0.221, 0.3434, 0.5316, 0.8064, 1.184, 1.672, 2.271, 2.99",\
                 "0.1038, 0.1378, 0.2226, 0.3448, 0.5318, 0.8068, 1.185, 1.671, 2.273, 2.989",\
                 "0.105, 0.1394, 0.224, 0.3462, 0.5328, 0.808, 1.185, 1.671, 2.272, 2.99");
        }

        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.007474, 0.0125, 0.03016, 0.06387, 0.1164, 0.1901, 0.2871, 0.4092, 0.5584, 0.7362");
          values("0.0987, 0.1315, 0.2374, 0.4501, 0.7992, 1.294, 1.953, 2.775, 3.786, 4.997",\
                 "0.09908, 0.1306, 0.2374, 0.4494, 0.7979, 1.297, 1.952, 2.781, 3.792, 4.986",\
                 "0.0987, 0.131, 0.2376, 0.4495, 0.7986, 1.294, 1.954, 2.777, 3.786, 4.987",\
                 "0.09866, 0.1313, 0.2374, 0.4494, 0.7982, 1.297, 1.953, 2.778, 3.791, 4.988",\
                 "0.0994, 0.1316, 0.2378, 0.4496, 0.799, 1.295, 1.952, 2.782, 3.791, 4.997",\
                 "0.0996, 0.1324, 0.2382, 0.4502, 0.7982, 1.297, 1.952, 2.778, 3.786, 4.988",\
                 "0.1008, 0.1332, 0.2388, 0.4502, 0.7988, 1.294, 1.95, 2.778, 3.789, 4.986",\
                 "0.1018, 0.1346, 0.24, 0.4504, 0.7992, 1.294, 1.948, 2.776, 3.784, 4.988",\
                 "0.103, 0.1362, 0.2414, 0.4514, 0.7994, 1.295, 1.948, 2.773, 3.782, 4.986",\
                 "0.1044, 0.1372, 0.2424, 0.4514, 0.8002, 1.295, 1.95, 2.772, 3.78, 4.987");
        }
      }
    }
  }

