/*
 * 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_3) {
    area : 43.904000 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!EN&!I" ;
      value : "8.55936e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!EN&I" ;
      value : "8.55936e-05" ;
    }

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1142, 0.1136, 0.1196, 0.1365, 0.1658, 0.2095, 0.2734, 0.361, \
                  0.4726, 0.6092");
        }

        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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1801, 0.179, 0.1865, 0.2117, 0.2594, 0.3335, 0.4363, 0.5693, \
                  0.7345, 0.9336");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.03324, 0.03327, 0.03319, 0.03313, 0.03318, 0.03312, 0.03319, \
                  0.03324, 0.03323, 0.03321");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.0331, -0.03309, -0.03312, -0.033, -0.033, -0.03304, -0.0331, \
                  -0.03314, -0.03316, -0.03316");
        }
      }
    }

    pin(Z) {
      capacitance : 0.006155 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 1.036 ;
      max_transition : 5.2 ;
      min_capacitance : 0.007155 ;
      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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.1886, 0.1885, 0.1885, 0.1884, 0.1884, 0.1885, 0.1885, 0.1885, 0.1885, 0.1885",\
                 "0.1898, 0.1897, 0.1897, 0.1896, 0.1897, 0.1898, 0.1898, 0.1898, 0.1898, 0.1898",\
                 "0.1996, 0.1996, 0.1994, 0.1993, 0.1994, 0.1995, 0.1995, 0.1995, 0.1996, 0.1996",\
                 "0.2214, 0.2214, 0.2214, 0.2213, 0.2214, 0.2214, 0.2214, 0.2214, 0.2214, 0.2214",\
                 "0.2575, 0.2575, 0.2574, 0.2574, 0.2574, 0.2574, 0.2574, 0.2574, 0.2575, 0.2575",\
                 "0.3092, 0.3092, 0.309, 0.3089, 0.309, 0.3091, 0.3091, 0.3091, 0.3091, 0.3091",\
                 "0.3775, 0.3775, 0.3773, 0.3772, 0.3772, 0.3774, 0.3774, 0.3774, 0.3774, 0.3774",\
                 "0.463, 0.4631, 0.463, 0.4627, 0.4627, 0.4628, 0.463, 0.463, 0.463, 0.463",\
                 "0.5671, 0.5671, 0.5669, 0.5668, 0.5669, 0.5669, 0.5669, 0.567, 0.5669, 0.567",\
                 "0.69, 0.69, 0.6899, 0.6898, 0.6899, 0.6899, 0.6899, 0.6899, 0.69, 0.6899");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.1364, 0.1365, 0.1364, 0.1367, 0.1369, 0.1374, 0.1399, 0.1437, 0.147, 0.148",\
                 "0.1359, 0.1361, 0.136, 0.1363, 0.1364, 0.1377, 0.1403, 0.1419, 0.1441, 0.1484",\
                 "0.142, 0.1419, 0.1421, 0.1423, 0.1429, 0.1438, 0.1468, 0.148, 0.1524, 0.1548",\
                 "0.1634, 0.163, 0.1642, 0.164, 0.1641, 0.1657, 0.1677, 0.17, 0.1744, 0.1754",\
                 "0.2056, 0.2055, 0.205, 0.2067, 0.207, 0.2071, 0.2105, 0.2117, 0.2161, 0.2186",\
                 "0.2709, 0.2714, 0.2709, 0.2706, 0.2734, 0.2748, 0.2735, 0.2762, 0.2795, 0.2823",\
                 "0.3613, 0.3616, 0.3618, 0.3615, 0.3617, 0.3651, 0.3667, 0.3665, 0.3688, 0.3708",\
                 "0.4781, 0.4783, 0.4787, 0.4787, 0.4779, 0.4796, 0.4848, 0.4871, 0.4879, 0.4889",\
                 "0.6228, 0.6229, 0.6235, 0.6236, 0.6232, 0.6232, 0.6252, 0.6326, 0.6337, 0.6373",\
                 "0.797, 0.7972, 0.798, 0.798, 0.7981, 0.7978, 0.7984, 0.8021, 0.8116, 0.8129");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.3172, 0.3158, 0.3156, 0.3162, 0.317, 0.3175, 0.3178, 0.3179, 0.318, 0.318",\
                 "0.3159, 0.3144, 0.3143, 0.3149, 0.3158, 0.3162, 0.3165, 0.3166, 0.3167, 0.3168",\
                 "0.3215, 0.3194, 0.3184, 0.3186, 0.3194, 0.3199, 0.3203, 0.3204, 0.3205, 0.3206",\
                 "0.3523, 0.348, 0.3426, 0.3404, 0.3401, 0.3402, 0.3402, 0.3403, 0.3404, 0.3405",\
                 "0.4067, 0.4, 0.3907, 0.3853, 0.3827, 0.3818, 0.3814, 0.3812, 0.3811, 0.381",\
                 "0.4875, 0.4788, 0.4648, 0.4559, 0.4508, 0.4486, 0.4473, 0.4466, 0.4463, 0.446",\
                 "0.5968, 0.5858, 0.5676, 0.5546, 0.5469, 0.5426, 0.5401, 0.5387, 0.5378, 0.5372",\
                 "0.737, 0.7238, 0.7007, 0.6838, 0.6723, 0.6655, 0.6616, 0.6593, 0.6577, 0.6566",\
                 "0.9078, 0.8924, 0.8656, 0.8437, 0.8284, 0.8192, 0.8135, 0.81, 0.8073, 0.8057",\
                 "1.111, 1.095, 1.063, 1.037, 1.018, 1.005, 0.9967, 0.9913, 0.9882, 0.9858");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.1385, 0.1404, 0.1457, 0.1507, 0.1539, 0.1556, 0.159, 0.1624, 0.1671, 0.1689",\
                 "0.137, 0.1388, 0.1442, 0.1488, 0.1522, 0.1541, 0.1586, 0.1606, 0.1653, 0.1681",\
                 "0.1383, 0.1396, 0.1432, 0.1475, 0.1508, 0.154, 0.1579, 0.1606, 0.1646, 0.1689",\
                 "0.1553, 0.1547, 0.1561, 0.1586, 0.1616, 0.165, 0.1683, 0.1721, 0.1754, 0.1807",\
                 "0.1944, 0.1914, 0.1883, 0.1907, 0.1917, 0.1941, 0.1979, 0.2009, 0.2064, 0.2099",\
                 "0.2589, 0.2536, 0.2474, 0.2447, 0.2471, 0.2474, 0.2504, 0.2527, 0.2564, 0.2617",\
                 "0.3511, 0.3436, 0.3341, 0.3268, 0.3245, 0.3276, 0.3289, 0.3309, 0.332, 0.3359",\
                 "0.4714, 0.462, 0.4487, 0.4388, 0.433, 0.4306, 0.4344, 0.4363, 0.4371, 0.4382",\
                 "0.6216, 0.6096, 0.5911, 0.5779, 0.5682, 0.5634, 0.5633, 0.5695, 0.5689, 0.5717",\
                 "0.8023, 0.7876, 0.7655, 0.7484, 0.7371, 0.7269, 0.7231, 0.7269, 0.7331, 0.7348");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.174, 0.184, 0.22, 0.298, 0.403, 0.533, 0.686, 0.863, 1.064, \
                  1.29");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.188, 0.197, 0.237, 0.308, 0.403, 0.523, 0.666, 0.832, 1.023, \
                  1.24");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.1202, 0.1489, 0.2204, 0.3198, 0.4496, 0.6194, 0.8383, 1.113, 1.448, 1.847",\
                 "0.1286, 0.1573, 0.2288, 0.3281, 0.4579, 0.6277, 0.8466, 1.121, 1.456, 1.856",\
                 "0.1586, 0.1869, 0.2577, 0.3567, 0.4862, 0.656, 0.8748, 1.149, 1.485, 1.884",\
                 "0.1865, 0.2184, 0.2913, 0.3902, 0.5197, 0.6893, 0.9082, 1.183, 1.518, 1.917",\
                 "0.1912, 0.2235, 0.2962, 0.3949, 0.5241, 0.6934, 0.9121, 1.187, 1.522, 1.921",\
                 "0.1727, 0.2052, 0.278, 0.3764, 0.5052, 0.6744, 0.8928, 1.167, 1.502, 1.901",\
                 "0.1316, 0.1646, 0.2378, 0.3362, 0.4649, 0.634, 0.8525, 1.127, 1.461, 1.86",\
                 "0.0669, 0.1004, 0.1744, 0.273, 0.4017, 0.5708, 0.7894, 1.064, 1.399, 1.797",\
                 "-0.0237, 0.0108, 0.0858, 0.1847, 0.3137, 0.4828, 0.7014, 0.9758, 1.31, 1.71",\
                 "-0.1408, -0.1052, -0.0292, 0.0703, 0.1996, 0.3686, 0.5872, 0.8616, 1.197, 1.596");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.1191, 0.1495, 0.2315, 0.3709, 0.5852, 0.8855, 1.281, 1.778, 2.385, 3.111",\
                 "0.1264, 0.1567, 0.2387, 0.3782, 0.5923, 0.8923, 1.288, 1.787, 2.395, 3.12",\
                 "0.1494, 0.1807, 0.2632, 0.4028, 0.6169, 0.9175, 1.313, 1.81, 2.418, 3.141",\
                 "0.1665, 0.202, 0.2883, 0.4291, 0.6433, 0.9433, 1.339, 1.836, 2.444, 3.17",\
                 "0.166, 0.2083, 0.3016, 0.444, 0.6588, 0.959, 1.354, 1.852, 2.46, 3.183",\
                 "0.1438, 0.1943, 0.2991, 0.4458, 0.661, 0.9616, 1.357, 1.854, 2.463, 3.187",\
                 "0.0978, 0.1567, 0.2765, 0.4302, 0.6487, 0.95, 1.345, 1.843, 2.45, 3.176",\
                 "0.0269, 0.0945, 0.231, 0.3944, 0.6177, 0.9228, 1.319, 1.817, 2.424, 3.148",\
                 "-0.0716, 0.0051, 0.1603, 0.3358, 0.5643, 0.8748, 1.275, 1.774, 2.382, 3.106",\
                 "-0.1987, -0.1125, 0.0622, 0.2534, 0.488, 0.8035, 1.21, 1.714, 2.323, 3.047");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.06226, 0.09152, 0.1678, 0.2833, 0.4614, 0.7224, 1.077, 1.531, 2.085, 2.751",\
                 "0.0621, 0.09118, 0.1675, 0.2833, 0.4617, 0.7223, 1.077, 1.531, 2.086, 2.751",\
                 "0.06158, 0.09018, 0.1665, 0.282, 0.4611, 0.7225, 1.077, 1.531, 2.085, 2.751",\
                 "0.07246, 0.09956, 0.1682, 0.2824, 0.461, 0.723, 1.078, 1.531, 2.085, 2.748",\
                 "0.07618, 0.1011, 0.1682, 0.2822, 0.4591, 0.7202, 1.076, 1.531, 2.085, 2.751",\
                 "0.07764, 0.1026, 0.168, 0.2808, 0.4586, 0.719, 1.073, 1.527, 2.086, 2.751",\
                 "0.0798, 0.1034, 0.1686, 0.2812, 0.459, 0.7204, 1.074, 1.527, 2.081, 2.746",\
                 "0.082, 0.1058, 0.1702, 0.2816, 0.4586, 0.7206, 1.075, 1.528, 2.082, 2.743",\
                 "0.085, 0.1086, 0.1716, 0.2824, 0.4594, 0.7192, 1.075, 1.527, 2.082, 2.744",\
                 "0.0886, 0.1112, 0.1736, 0.284, 0.4602, 0.7216, 1.074, 1.529, 2.082, 2.743");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.06572, 0.1006, 0.2149, 0.4451, 0.8171, 1.338, 2.029, 2.896, 3.954, 5.222",\
                 "0.06592, 0.1006, 0.2148, 0.4449, 0.8158, 1.338, 2.025, 2.892, 3.951, 5.21",\
                 "0.06888, 0.1023, 0.2153, 0.4452, 0.8157, 1.34, 2.03, 2.894, 3.951, 5.218",\
                 "0.08176, 0.1125, 0.2205, 0.4467, 0.8156, 1.339, 2.029, 2.894, 3.953, 5.213",\
                 "0.09966, 0.1302, 0.2291, 0.4495, 0.8174, 1.338, 2.027, 2.89, 3.949, 5.217",\
                 "0.1187, 0.1538, 0.2462, 0.4566, 0.8196, 1.339, 2.026, 2.891, 3.954, 5.218",\
                 "0.1402, 0.18, 0.2708, 0.4698, 0.8268, 1.342, 2.025, 2.892, 3.951, 5.217",\
                 "0.1628, 0.2072, 0.3006, 0.4872, 0.8418, 1.352, 2.03, 2.891, 3.952, 5.214",\
                 "0.1894, 0.2374, 0.3366, 0.5098, 0.8588, 1.371, 2.044, 2.896, 3.947, 5.212",\
                 "0.2168, 0.2674, 0.377, 0.5386, 0.8762, 1.395, 2.07, 2.917, 3.955, 5.206");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.1828, 0.212, 0.2865, 0.388, 0.5186, 0.6886, 0.9077, 1.182, 1.517, 1.917",\
                 "0.1913, 0.2205, 0.2949, 0.3965, 0.5271, 0.6971, 0.9161, 1.191, 1.526, 1.925",\
                 "0.2269, 0.2559, 0.3302, 0.4318, 0.5625, 0.7326, 0.9515, 1.226, 1.561, 1.961",\
                 "0.2915, 0.3206, 0.396, 0.4985, 0.6297, 0.7998, 1.019, 1.293, 1.628, 2.028",\
                 "0.375, 0.4052, 0.4826, 0.5887, 0.7217, 0.8923, 1.111, 1.386, 1.721, 2.12",\
                 "0.4754, 0.5085, 0.5911, 0.7028, 0.8388, 1.011, 1.23, 1.504, 1.839, 2.238",\
                 "0.59, 0.6258, 0.7156, 0.8382, 0.9829, 1.158, 1.378, 1.653, 1.988, 2.387",\
                 "0.7192, 0.7586, 0.8551, 0.9893, 1.147, 1.334, 1.559, 1.834, 2.169, 2.568",\
                 "0.8633, 0.9057, 1.01, 1.154, 1.327, 1.528, 1.766, 2.048, 2.384, 2.783",\
                 "1.023, 1.068, 1.18, 1.334, 1.522, 1.738, 1.993, 2.291, 2.635, 3.035");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.1834, 0.215, 0.2992, 0.4407, 0.6561, 0.9573, 1.353, 1.85, 2.459, 3.182",\
                 "0.1897, 0.2213, 0.3054, 0.447, 0.6623, 0.9636, 1.359, 1.857, 2.466, 3.19",\
                 "0.2129, 0.2442, 0.3278, 0.469, 0.6846, 0.9855, 1.381, 1.881, 2.489, 3.215",\
                 "0.2416, 0.2734, 0.3576, 0.4986, 0.7139, 1.015, 1.411, 1.91, 2.519, 3.244",\
                 "0.2655, 0.2981, 0.3843, 0.5256, 0.7405, 1.041, 1.437, 1.936, 2.545, 3.271",\
                 "0.2796, 0.3139, 0.4042, 0.5474, 0.7618, 1.062, 1.458, 1.957, 2.564, 3.29",\
                 "0.2799, 0.3165, 0.4118, 0.5599, 0.7767, 1.077, 1.472, 1.97, 2.578, 3.303",\
                 "0.2649, 0.3045, 0.405, 0.559, 0.7817, 1.086, 1.481, 1.978, 2.585, 3.309",\
                 "0.2341, 0.2765, 0.3823, 0.5426, 0.7716, 1.083, 1.483, 1.98, 2.587, 3.311",\
                 "0.1871, 0.2326, 0.3435, 0.51, 0.7456, 1.065, 1.473, 1.976, 2.583, 3.306");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.06596, 0.09642, 0.1734, 0.2866, 0.4629, 0.723, 1.078, 1.531, 2.085, 2.751",\
                 "0.06584, 0.09644, 0.1735, 0.2861, 0.4628, 0.7232, 1.077, 1.531, 2.085, 2.749",\
                 "0.06622, 0.09706, 0.1743, 0.2868, 0.4631, 0.7236, 1.077, 1.531, 2.086, 2.751",\
                 "0.07212, 0.1025, 0.1799, 0.2903, 0.4645, 0.7236, 1.077, 1.531, 2.085, 2.751",\
                 "0.08196, 0.1115, 0.1907, 0.3001, 0.4704, 0.7254, 1.078, 1.531, 2.087, 2.751",\
                 "0.0962, 0.1274, 0.2082, 0.3164, 0.4796, 0.7306, 1.08, 1.531, 2.085, 2.748",\
                 "0.1122, 0.1464, 0.2328, 0.348, 0.504, 0.742, 1.085, 1.532, 2.087, 2.748",\
                 "0.1296, 0.1658, 0.2582, 0.387, 0.5482, 0.7792, 1.103, 1.539, 2.087, 2.748",\
                 "0.1476, 0.1858, 0.2846, 0.4272, 0.6006, 0.8378, 1.155, 1.568, 2.099, 2.751",\
                 "0.1654, 0.2076, 0.3116, 0.4668, 0.6564, 0.9038, 1.23, 1.635, 2.138, 2.767");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007155, 0.01426, 0.03919, 0.0868, 0.161, 0.2651, 0.402, 0.5746, 0.7852, 1.036");
          values("0.06652, 0.1001, 0.2142, 0.4458, 0.8167, 1.34, 2.025, 2.894, 3.952, 5.221",\
                 "0.0666, 0.09998, 0.2141, 0.445, 0.8161, 1.338, 2.03, 2.892, 3.951, 5.215",\
                 "0.06696, 0.1009, 0.2145, 0.4449, 0.8157, 1.337, 2.026, 2.892, 3.951, 5.211",\
                 "0.07096, 0.1051, 0.2175, 0.4455, 0.8156, 1.338, 2.026, 2.893, 3.953, 5.212",\
                 "0.07684, 0.112, 0.223, 0.4479, 0.816, 1.339, 2.028, 2.891, 3.948, 5.209",\
                 "0.0882, 0.1232, 0.2344, 0.453, 0.8176, 1.339, 2.026, 2.895, 3.951, 5.209",\
                 "0.1002, 0.1358, 0.25, 0.4684, 0.8246, 1.34, 2.024, 2.892, 3.947, 5.214",\
                 "0.1152, 0.151, 0.2676, 0.4868, 0.8454, 1.353, 2.028, 2.891, 3.953, 5.205",\
                 "0.1294, 0.1678, 0.286, 0.5074, 0.8716, 1.379, 2.044, 2.895, 3.945, 5.212",\
                 "0.1452, 0.1848, 0.3038, 0.5292, 0.898, 1.416, 2.081, 2.916, 3.953, 5.204");
        }
      }
    }
  }

