/*
 * 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__bufz_1) {
    area : 30.732800 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.1673, 0.1669, 0.1713, 0.1866, 0.2151, 0.2575, 0.3178, 0.4026, \
                 0.5116, 0.6459");
        }

        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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.2343, 0.2342, 0.2408, 0.2634, 0.3069, 0.3762, 0.4732, 0.5991, \
                 0.7559, 0.9446");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.01986, 0.01989, 0.01984, 0.01983, 0.01977, 0.01977, 0.01982, \
                 0.01984, 0.01982, 0.01982");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("-0.01978, -0.01977, -0.01977, -0.01972, -0.01974, -0.01974, -0.01979, \
                 -0.0198, -0.01976, -0.01979");
        }
      }
    }

    pin(Z) {
      capacitance : 0.002869 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.2417 ;
      max_transition : 4 ;
      min_capacitance : 0.003869 ;
      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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.1977, 0.1967, 0.1944, 0.1926, 0.1912, 0.1902, 0.1896, 0.1891, 0.1887, 0.1884",\
                 "0.198, 0.1971, 0.1947, 0.1929, 0.1915, 0.1905, 0.1899, 0.1894, 0.189, 0.1887",\
                 "0.2051, 0.2041, 0.2022, 0.2005, 0.1992, 0.1982, 0.1977, 0.1972, 0.1969, 0.1967",\
                 "0.2225, 0.2218, 0.2205, 0.2195, 0.2187, 0.2182, 0.2179, 0.2176, 0.2174, 0.2173",\
                 "0.2541, 0.2538, 0.2533, 0.2529, 0.2527, 0.2525, 0.2525, 0.2524, 0.2523, 0.2523",\
                 "0.3039, 0.3038, 0.3037, 0.3036, 0.3036, 0.3035, 0.3035, 0.3036, 0.3036, 0.3036",\
                 "0.3721, 0.3721, 0.3722, 0.3719, 0.3719, 0.372, 0.372, 0.372, 0.372, 0.372",\
                 "0.4586, 0.4585, 0.4585, 0.4584, 0.4583, 0.4584, 0.4584, 0.4585, 0.4584, 0.4584",\
                 "0.5637, 0.5637, 0.5637, 0.5635, 0.5635, 0.5636, 0.5636, 0.5637, 0.5637, 0.5637",\
                 "0.6886, 0.6887, 0.6887, 0.6886, 0.6885, 0.6886, 0.6887, 0.6887, 0.6887, 0.6887");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.1122, 0.1123, 0.112, 0.1121, 0.1122, 0.1127, 0.1133, 0.1144, 0.1152, 0.1164",\
                 "0.1118, 0.1117, 0.1117, 0.1117, 0.1117, 0.1122, 0.1127, 0.1136, 0.1149, 0.1159",\
                 "0.1161, 0.1159, 0.1158, 0.1157, 0.1161, 0.1164, 0.1173, 0.1179, 0.1189, 0.1204",\
                 "0.1338, 0.134, 0.1339, 0.1342, 0.1342, 0.1345, 0.1354, 0.1358, 0.1369, 0.1379",\
                 "0.1718, 0.1718, 0.1718, 0.1726, 0.1725, 0.1729, 0.1736, 0.1741, 0.1751, 0.1769",\
                 "0.2329, 0.2329, 0.2327, 0.2327, 0.2341, 0.2342, 0.2338, 0.2359, 0.2362, 0.2379",\
                 "0.3188, 0.319, 0.3188, 0.3187, 0.3192, 0.3205, 0.3216, 0.3216, 0.3219, 0.3249",\
                 "0.4308, 0.431, 0.4308, 0.4307, 0.4305, 0.4317, 0.4336, 0.4345, 0.4351, 0.4357",\
                 "0.5702, 0.5703, 0.5704, 0.5705, 0.5701, 0.5703, 0.5716, 0.5748, 0.5755, 0.5764",\
                 "0.7387, 0.7387, 0.7389, 0.7391, 0.7391, 0.7385, 0.7391, 0.7414, 0.7455, 0.7467");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.3276, 0.3244, 0.3183, 0.3131, 0.3096, 0.3074, 0.3058, 0.3048, 0.3041, 0.3035",\
                 "0.327, 0.3238, 0.3176, 0.3124, 0.309, 0.3067, 0.3052, 0.3042, 0.3034, 0.3029",\
                 "0.3279, 0.3248, 0.3186, 0.3133, 0.3098, 0.3075, 0.3061, 0.305, 0.3043, 0.3037",\
                 "0.3376, 0.3342, 0.3275, 0.3219, 0.318, 0.3155, 0.3139, 0.3129, 0.312, 0.3115",\
                 "0.3653, 0.3613, 0.3528, 0.3452, 0.3399, 0.3363, 0.3342, 0.3326, 0.3314, 0.3306",\
                 "0.4115, 0.4067, 0.3959, 0.3854, 0.3775, 0.3722, 0.3687, 0.3661, 0.3644, 0.3632",\
                 "0.475, 0.4696, 0.4561, 0.4426, 0.432, 0.4245, 0.4192, 0.4155, 0.4128, 0.4109",\
                 "0.5566, 0.5503, 0.5345, 0.5178, 0.5043, 0.4942, 0.4865, 0.4813, 0.4776, 0.4749",\
                 "0.6565, 0.6494, 0.6318, 0.6117, 0.5948, 0.5817, 0.572, 0.565, 0.5599, 0.5562",\
                 "0.7756, 0.768, 0.7483, 0.7252, 0.7047, 0.6885, 0.6766, 0.6674, 0.6606, 0.6555");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.1472, 0.1461, 0.1445, 0.1442, 0.1449, 0.1458, 0.1469, 0.1484, 0.1496, 0.151",\
                 "0.1469, 0.1457, 0.1444, 0.1437, 0.1445, 0.1455, 0.1466, 0.148, 0.1491, 0.1505",\
                 "0.1471, 0.1459, 0.1445, 0.1439, 0.1444, 0.1454, 0.1463, 0.148, 0.1499, 0.1505",\
                 "0.155, 0.1536, 0.1511, 0.1491, 0.1491, 0.1495, 0.1504, 0.1515, 0.1529, 0.1545",\
                 "0.1771, 0.1751, 0.1708, 0.1668, 0.1651, 0.1643, 0.1644, 0.1651, 0.1663, 0.168",\
                 "0.2123, 0.2094, 0.203, 0.1976, 0.1937, 0.1911, 0.1899, 0.1896, 0.1903, 0.1915",\
                 "0.2626, 0.2591, 0.251, 0.2426, 0.2366, 0.233, 0.2301, 0.2286, 0.2286, 0.2285",\
                 "0.3294, 0.325, 0.3147, 0.3041, 0.2947, 0.2897, 0.2862, 0.2837, 0.2815, 0.282",\
                 "0.4133, 0.4081, 0.3962, 0.3829, 0.3708, 0.3627, 0.3574, 0.3562, 0.3519, 0.35",\
                 "0.5149, 0.5092, 0.495, 0.4799, 0.4662, 0.4541, 0.4463, 0.4417, 0.4409, 0.4375");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.165, 0.173, 0.201, 0.258, 0.336, 0.43, 0.535, 0.651, 0.782, \
                 0.924");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.249, 0.257, 0.286, 0.342, 0.42, 0.515, 0.624, 0.745, 0.884, \
                 1.038");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.1925, 0.2152, 0.2796, 0.3771, 0.5034, 0.6603, 0.8541, 1.092, 1.379, 1.721",\
                 "0.1978, 0.2205, 0.2849, 0.3823, 0.5086, 0.6654, 0.8594, 1.097, 1.385, 1.726",\
                 "0.2206, 0.2431, 0.3072, 0.4045, 0.5305, 0.6873, 0.8812, 1.119, 1.406, 1.748",\
                 "0.2576, 0.2801, 0.3438, 0.4406, 0.5661, 0.7226, 0.9165, 1.154, 1.442, 1.784",\
                 "0.2865, 0.3107, 0.377, 0.4744, 0.5993, 0.7556, 0.9493, 1.187, 1.474, 1.816",\
                 "0.3003, 0.325, 0.3915, 0.4875, 0.6116, 0.7672, 0.9603, 1.198, 1.485, 1.827",\
                 "0.2996, 0.3246, 0.3901, 0.4849, 0.6075, 0.7615, 0.954, 1.191, 1.478, 1.82",\
                 "0.284, 0.3092, 0.3753, 0.4693, 0.5906, 0.7437, 0.9353, 1.172, 1.459, 1.8",\
                 "0.253, 0.2788, 0.3453, 0.439, 0.5598, 0.7124, 0.9035, 1.14, 1.426, 1.768",\
                 "0.2057, 0.2322, 0.2998, 0.394, 0.5148, 0.6672, 0.8581, 1.094, 1.381, 1.723");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.1691, 0.1921, 0.2601, 0.3714, 0.5334, 0.7578, 1.052, 1.424, 1.876, 2.417",\
                 "0.1736, 0.1966, 0.2645, 0.3757, 0.5379, 0.7621, 1.056, 1.428, 1.88, 2.422",\
                 "0.191, 0.214, 0.282, 0.3931, 0.5554, 0.7797, 1.074, 1.445, 1.899, 2.437",\
                 "0.2154, 0.2396, 0.3093, 0.4214, 0.5838, 0.8079, 1.103, 1.474, 1.927, 2.467",\
                 "0.2327, 0.2597, 0.3331, 0.4475, 0.611, 0.8354, 1.13, 1.5, 1.955, 2.493",\
                 "0.2375, 0.2688, 0.3499, 0.4687, 0.6338, 0.8591, 1.154, 1.525, 1.979, 2.518",\
                 "0.2272, 0.2637, 0.3553, 0.4817, 0.6514, 0.878, 1.173, 1.544, 1.997, 2.537",\
                 "0.2008, 0.2429, 0.3473, 0.4837, 0.6598, 0.8912, 1.188, 1.56, 2.012, 2.552",\
                 "0.1565, 0.2045, 0.3236, 0.4728, 0.6562, 0.894, 1.196, 1.57, 2.023, 2.563",\
                 "0.0943, 0.1489, 0.2825, 0.4471, 0.64, 0.8841, 1.193, 1.573, 2.029, 2.569");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.108, 0.1303, 0.1995, 0.3119, 0.4667, 0.6809, 0.9706, 1.348, 1.817, 2.383",\
                 "0.1075, 0.1301, 0.1993, 0.3114, 0.4661, 0.6815, 0.9719, 1.348, 1.817, 2.383",\
                 "0.1061, 0.1286, 0.1984, 0.3113, 0.4656, 0.6813, 0.9709, 1.347, 1.817, 2.382",\
                 "0.1049, 0.1268, 0.1954, 0.3084, 0.463, 0.6799, 0.9692, 1.348, 1.817, 2.382",\
                 "0.1123, 0.1346, 0.2006, 0.3067, 0.4611, 0.6776, 0.97, 1.347, 1.816, 2.383",\
                 "0.1159, 0.1365, 0.1987, 0.3044, 0.459, 0.6736, 0.9672, 1.346, 1.814, 2.382",\
                 "0.1186, 0.1368, 0.1966, 0.2996, 0.453, 0.67, 0.9622, 1.341, 1.813, 2.38",\
                 "0.122, 0.1392, 0.196, 0.2974, 0.4496, 0.6658, 0.9592, 1.339, 1.809, 2.376",\
                 "0.1256, 0.1424, 0.1972, 0.2968, 0.4474, 0.6636, 0.9592, 1.339, 1.81, 2.374",\
                 "0.1306, 0.1464, 0.1992, 0.2974, 0.448, 0.6634, 0.9584, 1.339, 1.81, 2.375");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.107, 0.1342, 0.2238, 0.3925, 0.6648, 1.057, 1.581, 2.24, 3.046, 4.008",\
                 "0.1069, 0.134, 0.2239, 0.3924, 0.6651, 1.058, 1.581, 2.24, 3.043, 4.007",\
                 "0.1074, 0.1342, 0.224, 0.3924, 0.6649, 1.058, 1.579, 2.24, 3.042, 3.998",\
                 "0.1135, 0.1397, 0.2269, 0.3936, 0.6652, 1.058, 1.58, 2.239, 3.045, 4.001",\
                 "0.1288, 0.1528, 0.2354, 0.3989, 0.6674, 1.059, 1.58, 2.24, 3.042, 3.998",\
                 "0.1507, 0.1742, 0.2519, 0.4081, 0.672, 1.061, 1.58, 2.239, 3.044, 3.999",\
                 "0.176, 0.2016, 0.2766, 0.4258, 0.683, 1.066, 1.583, 2.241, 3.041, 3.997",\
                 "0.205, 0.2326, 0.3078, 0.449, 0.702, 1.079, 1.59, 2.241, 3.046, 4.003",\
                 "0.2356, 0.2644, 0.3444, 0.478, 0.7246, 1.103, 1.607, 2.25, 3.045, 4.002",\
                 "0.272, 0.3014, 0.3848, 0.5152, 0.7514, 1.128, 1.635, 2.273, 3.058, 4.003");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.3173, 0.3399, 0.4046, 0.5033, 0.6306, 0.788, 0.9821, 1.22, 1.507, 1.849",\
                 "0.3233, 0.3458, 0.4106, 0.5093, 0.6366, 0.794, 0.988, 1.226, 1.513, 1.854",\
                 "0.3484, 0.3709, 0.4357, 0.5341, 0.6616, 0.819, 1.013, 1.251, 1.538, 1.879",\
                 "0.4042, 0.4265, 0.491, 0.5894, 0.7167, 0.8741, 1.068, 1.306, 1.593, 1.934",\
                 "0.4926, 0.5151, 0.5795, 0.6778, 0.8054, 0.9627, 1.157, 1.394, 1.681, 2.023",\
                 "0.6033, 0.6267, 0.6933, 0.7934, 0.9224, 1.081, 1.275, 1.512, 1.798, 2.14",\
                 "0.7325, 0.7575, 0.8276, 0.9307, 1.063, 1.223, 1.418, 1.655, 1.942, 2.283",\
                 "0.8775, 0.9044, 0.9791, 1.088, 1.226, 1.391, 1.588, 1.826, 2.112, 2.453",\
                 "1.038, 1.067, 1.147, 1.262, 1.407, 1.58, 1.783, 2.023, 2.31, 2.651",\
                 "1.215, 1.246, 1.331, 1.453, 1.605, 1.787, 1.999, 2.247, 2.538, 2.878");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.296, 0.3185, 0.3864, 0.4983, 0.661, 0.8856, 1.18, 1.552, 2.005, 2.546",\
                 "0.3005, 0.323, 0.3911, 0.5027, 0.6654, 0.8901, 1.185, 1.557, 2.01, 2.551",\
                 "0.3175, 0.34, 0.408, 0.5196, 0.6821, 0.9068, 1.202, 1.574, 2.026, 2.567",\
                 "0.3524, 0.3747, 0.442, 0.5528, 0.7148, 0.9394, 1.234, 1.605, 2.059, 2.598",\
                 "0.3944, 0.4169, 0.4839, 0.5942, 0.7555, 0.9787, 1.273, 1.644, 2.097, 2.636",\
                 "0.4289, 0.452, 0.5202, 0.6311, 0.7919, 1.015, 1.308, 1.678, 2.131, 2.672",\
                 "0.4518, 0.4762, 0.5469, 0.6604, 0.8217, 1.043, 1.336, 1.705, 2.158, 2.697",\
                 "0.4601, 0.4862, 0.5601, 0.6772, 0.8413, 1.064, 1.356, 1.724, 2.175, 2.714",\
                 "0.4532, 0.4809, 0.5585, 0.6788, 0.8471, 1.073, 1.367, 1.735, 2.185, 2.723",\
                 "0.4293, 0.4591, 0.541, 0.6659, 0.8387, 1.069, 1.367, 1.738, 2.189, 2.725");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.1211, 0.1437, 0.211, 0.3212, 0.4745, 0.685, 0.9745, 1.349, 1.818, 2.381",\
                 "0.1215, 0.1438, 0.211, 0.3212, 0.474, 0.6859, 0.9744, 1.349, 1.818, 2.381",\
                 "0.1215, 0.144, 0.2115, 0.3215, 0.4741, 0.6854, 0.9727, 1.349, 1.817, 2.381",\
                 "0.1218, 0.1444, 0.2117, 0.3219, 0.4749, 0.6858, 0.974, 1.349, 1.816, 2.382",\
                 "0.1283, 0.1508, 0.2173, 0.3262, 0.4778, 0.6882, 0.9756, 1.348, 1.818, 2.381",\
                 "0.1418, 0.164, 0.2302, 0.3382, 0.4866, 0.6936, 0.9786, 1.351, 1.819, 2.382",\
                 "0.1606, 0.1842, 0.2496, 0.3554, 0.5028, 0.7048, 0.985, 1.354, 1.819, 2.383",\
                 "0.1808, 0.2068, 0.2752, 0.3822, 0.53, 0.7264, 0.9972, 1.361, 1.821, 2.384",\
                 "0.2026, 0.2294, 0.302, 0.4138, 0.5656, 0.7634, 1.025, 1.376, 1.828, 2.386",\
                 "0.2254, 0.254, 0.3316, 0.4462, 0.6046, 0.8086, 1.073, 1.414, 1.852, 2.394");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.003869, 0.005511, 0.01127, 0.02228, 0.03942, 0.06348, 0.09513, 0.135, 0.1837, 0.2417");
          values("0.1124, 0.1385, 0.2274, 0.3939, 0.6652, 1.058, 1.581, 2.239, 3.046, 4.007",\
                 "0.1122, 0.1384, 0.2272, 0.3938, 0.6651, 1.058, 1.581, 2.24, 3.045, 4.007",\
                 "0.1123, 0.1386, 0.2272, 0.3938, 0.665, 1.058, 1.581, 2.239, 3.04, 4.005",\
                 "0.1121, 0.1389, 0.228, 0.3945, 0.6654, 1.058, 1.581, 2.239, 3.043, 4",\
                 "0.1182, 0.1442, 0.2321, 0.3969, 0.666, 1.059, 1.579, 2.24, 3.041, 3.998",\
                 "0.1274, 0.1526, 0.2402, 0.4038, 0.6696, 1.06, 1.582, 2.24, 3.043, 4.008",\
                 "0.14, 0.1662, 0.2526, 0.414, 0.6752, 1.061, 1.583, 2.24, 3.04, 4.005",\
                 "0.156, 0.1816, 0.268, 0.4306, 0.6892, 1.069, 1.583, 2.238, 3.046, 3.996",\
                 "0.17, 0.1986, 0.285, 0.4492, 0.7084, 1.088, 1.594, 2.243, 3.042, 4.004",\
                 "0.188, 0.2176, 0.3046, 0.4682, 0.7296, 1.113, 1.618, 2.261, 3.051, 4");
        }
      }
    }
  }

