/*
 * 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_4) {
    area : 48.294400 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.07908, 0.07752, 0.07723, 0.07931, 0.08359, 0.09018, 0.09937, \
                  0.1115, 0.1271, 0.1469");
        }

        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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.1387, 0.1366, 0.1349, 0.1366, 0.1425, 0.1533, 0.1693, 0.191, \
                  0.2187, 0.253");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.02495, 0.02491, 0.02485, 0.02487, 0.02486, 0.02495, 0.02491, \
                  0.02493, 0.02494, 0.02492");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.02485, -0.02483, -0.02487, -0.0248, -0.02482, -0.02485, -0.02486, \
                  -0.02489, -0.02488, -0.02487");
        }
      }
    }

    pin(Z) {
      capacitance : 0.007447 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 1.384 ;
      max_transition : 11 ;
      min_capacitance : 0.008447 ;
      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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.1553, 0.1555, 0.1554, 0.1554, 0.1554, 0.1554, 0.1554, 0.1555, 0.1555, 0.1555",\
                 "0.1554, 0.1554, 0.1554, 0.1554, 0.1554, 0.1554, 0.1554, 0.1554, 0.1555, 0.1555",\
                 "0.1576, 0.1576, 0.1576, 0.1576, 0.1576, 0.1577, 0.1577, 0.1577, 0.1577, 0.1577",\
                 "0.1616, 0.1616, 0.1615, 0.1615, 0.1615, 0.1615, 0.1615, 0.1615, 0.1615, 0.1616",\
                 "0.1683, 0.1683, 0.1683, 0.1682, 0.1682, 0.1682, 0.1682, 0.1682, 0.1682, 0.1683",\
                 "0.1783, 0.1783, 0.1783, 0.1782, 0.1782, 0.1782, 0.1782, 0.1782, 0.1782, 0.1782",\
                 "0.1917, 0.1916, 0.1917, 0.1916, 0.1916, 0.1916, 0.1916, 0.1916, 0.1916, 0.1916",\
                 "0.2086, 0.2086, 0.2085, 0.2084, 0.2084, 0.2085, 0.2085, 0.2085, 0.2085, 0.2085",\
                 "0.2291, 0.2291, 0.2291, 0.229, 0.229, 0.229, 0.229, 0.2291, 0.2291, 0.2291",\
                 "0.2535, 0.2535, 0.2534, 0.2533, 0.2532, 0.2533, 0.2533, 0.2533, 0.2533, 0.2533");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.1171, 0.1171, 0.1171, 0.1173, 0.1183, 0.12, 0.121, 0.1236, 0.1273, 0.1681",\
                 "0.1162, 0.1163, 0.1162, 0.1165, 0.1174, 0.1194, 0.1201, 0.123, 0.1264, 0.1676",\
                 "0.1153, 0.1153, 0.1152, 0.1155, 0.1164, 0.1182, 0.1192, 0.1221, 0.1267, 0.1683",\
                 "0.1167, 0.1172, 0.1171, 0.1173, 0.1182, 0.1194, 0.1207, 0.1236, 0.1282, 0.1757",\
                 "0.1222, 0.1227, 0.1218, 0.1231, 0.1233, 0.1248, 0.1267, 0.129, 0.1361, 0.1903",\
                 "0.132, 0.1322, 0.1321, 0.1318, 0.1344, 0.1344, 0.1357, 0.138, 0.1455, 0.2156",\
                 "0.1467, 0.1467, 0.1468, 0.1466, 0.1466, 0.1506, 0.1519, 0.1519, 0.1611, 0.2534",\
                 "0.1666, 0.1667, 0.1674, 0.167, 0.1665, 0.168, 0.1729, 0.1737, 0.1858, 0.3138",\
                 "0.1921, 0.1921, 0.1925, 0.1926, 0.1924, 0.1923, 0.1948, 0.2032, 0.2246, 0.4114",\
                 "0.2233, 0.2234, 0.2239, 0.224, 0.2239, 0.2241, 0.2245, 0.2298, 0.2806, 0.5833");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.2519, 0.2544, 0.259, 0.2621, 0.2638, 0.2647, 0.2652, 0.2655, 0.2656, 0.2658",\
                 "0.2498, 0.2524, 0.257, 0.2602, 0.2618, 0.2627, 0.2631, 0.2634, 0.2636, 0.2637",\
                 "0.2478, 0.2502, 0.2546, 0.2577, 0.2595, 0.2604, 0.261, 0.2613, 0.2616, 0.2617",\
                 "0.2498, 0.2512, 0.2548, 0.258, 0.2601, 0.2614, 0.2622, 0.2626, 0.2629, 0.2631",\
                 "0.258, 0.2585, 0.2608, 0.2636, 0.2658, 0.2673, 0.2682, 0.2688, 0.2692, 0.2695",\
                 "0.2725, 0.2721, 0.273, 0.2753, 0.2773, 0.2788, 0.2798, 0.2806, 0.281, 0.2813",\
                 "0.2934, 0.2926, 0.2919, 0.2931, 0.2949, 0.2964, 0.2974, 0.2982, 0.2987, 0.2991",\
                 "0.3203, 0.3186, 0.3171, 0.3176, 0.319, 0.3203, 0.3215, 0.3222, 0.3227, 0.3232",\
                 "0.3541, 0.3519, 0.3492, 0.3491, 0.35, 0.3512, 0.3522, 0.353, 0.3537, 0.3541",\
                 "0.395, 0.3923, 0.3891, 0.388, 0.3885, 0.3895, 0.3904, 0.3912, 0.3918, 0.3923");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.1195, 0.1221, 0.1263, 0.1296, 0.1319, 0.1343, 0.1365, 0.1391, 0.144, 0.1827",\
                 "0.1181, 0.1208, 0.1251, 0.1283, 0.1306, 0.1328, 0.135, 0.1379, 0.1428, 0.1838",\
                 "0.1153, 0.1174, 0.1211, 0.1244, 0.1274, 0.1301, 0.132, 0.1352, 0.1398, 0.1831",\
                 "0.114, 0.1157, 0.1192, 0.1226, 0.1258, 0.1289, 0.1314, 0.1349, 0.1402, 0.1894",\
                 "0.117, 0.1185, 0.1209, 0.1249, 0.1279, 0.131, 0.1344, 0.1385, 0.1457, 0.2042",\
                 "0.1251, 0.1266, 0.1285, 0.1313, 0.136, 0.1379, 0.141, 0.1439, 0.1527, 0.2254",\
                 "0.1388, 0.1402, 0.1421, 0.1443, 0.1472, 0.1532, 0.1557, 0.1569, 0.1673, 0.2635",\
                 "0.1591, 0.1601, 0.1619, 0.1641, 0.1668, 0.1694, 0.1761, 0.1802, 0.1914, 0.3249",\
                 "0.1862, 0.187, 0.1887, 0.1903, 0.1929, 0.1946, 0.1995, 0.2074, 0.2321, 0.4252",\
                 "0.2203, 0.2209, 0.2226, 0.2238, 0.226, 0.2282, 0.2301, 0.2374, 0.2893, 0.5982");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.361, 0.39, 0.484, 0.672, 0.912, 1.174, 1.466, 1.796, 2.172, \
                  2.592");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.425, 0.448, 0.545, 0.711, 0.909, 1.134, 1.397, 1.705, 2.054, \
                  2.449");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.353, 0.4299, 0.5959, 0.8127, 1.09, 1.448, 1.906, 2.48, 3.18, 4.015",\
                 "0.3766, 0.4531, 0.6192, 0.8362, 1.113, 1.471, 1.929, 2.503, 3.204, 4.038",\
                 "0.4603, 0.5361, 0.7017, 0.9182, 1.195, 1.553, 2.011, 2.586, 3.285, 4.12",\
                 "0.5875, 0.6624, 0.8261, 1.042, 1.318, 1.676, 2.135, 2.709, 3.409, 4.243",\
                 "0.6558, 0.7305, 0.8939, 1.109, 1.385, 1.742, 2.2, 2.774, 3.475, 4.309",\
                 "0.6788, 0.7531, 0.9172, 1.132, 1.408, 1.765, 2.223, 2.796, 3.496, 4.331",\
                 "0.6647, 0.7392, 0.9031, 1.119, 1.395, 1.752, 2.21, 2.783, 3.482, 4.316",\
                 "0.6133, 0.6886, 0.8522, 1.068, 1.344, 1.701, 2.159, 2.732, 3.431, 4.265",\
                 "0.5241, 0.5995, 0.7635, 0.979, 1.255, 1.612, 2.07, 2.643, 3.343, 4.177",\
                 "0.3934, 0.4693, 0.6341, 0.8494, 1.125, 1.482, 1.94, 2.514, 3.213, 4.048");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.3027, 0.368, 0.5411, 0.8398, 1.3, 1.946, 2.797, 3.866, 5.173, 6.738",\
                 "0.3244, 0.3897, 0.5629, 0.8615, 1.322, 1.969, 2.818, 3.888, 5.194, 6.759",\
                 "0.4015, 0.467, 0.6402, 0.939, 1.399, 2.046, 2.897, 3.968, 5.277, 6.836",\
                 "0.5082, 0.5805, 0.7587, 1.058, 1.518, 2.164, 3.015, 4.084, 5.392, 6.954",\
                 "0.5874, 0.6708, 0.8599, 1.162, 1.623, 2.269, 3.119, 4.192, 5.5, 7.058",\
                 "0.6338, 0.7303, 0.934, 1.239, 1.701, 2.347, 3.196, 4.266, 5.576, 7.133",\
                 "0.648, 0.7574, 0.9792, 1.289, 1.75, 2.396, 3.246, 4.316, 5.623, 7.181",\
                 "0.6249, 0.7486, 0.9927, 1.31, 1.771, 2.417, 3.266, 4.337, 5.643, 7.2",\
                 "0.5621, 0.7003, 0.9698, 1.299, 1.762, 2.407, 3.256, 4.326, 5.633, 7.19",\
                 "0.4581, 0.6104, 0.9067, 1.252, 1.717, 2.364, 3.212, 4.283, 5.589, 7.146");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.1629, 0.2264, 0.3731, 0.6094, 0.9753, 1.509, 2.241, 3.18, 4.335, 5.711",\
                 "0.1631, 0.2265, 0.3734, 0.6092, 0.9735, 1.51, 2.241, 3.178, 4.333, 5.709",\
                 "0.1612, 0.2248, 0.3721, 0.609, 0.9742, 1.51, 2.242, 3.18, 4.33, 5.713",\
                 "0.1654, 0.223, 0.3696, 0.6076, 0.974, 1.509, 2.241, 3.18, 4.33, 5.714",\
                 "0.1644, 0.2228, 0.3694, 0.6054, 0.9702, 1.508, 2.24, 3.18, 4.334, 5.71",\
                 "0.1648, 0.2234, 0.37, 0.607, 0.9708, 1.505, 2.236, 3.176, 4.336, 5.716",\
                 "0.1648, 0.2236, 0.3702, 0.6064, 0.9716, 1.506, 2.236, 3.173, 4.326, 5.703",\
                 "0.1654, 0.2242, 0.3702, 0.6066, 0.9712, 1.507, 2.238, 3.174, 4.324, 5.696",\
                 "0.1668, 0.2252, 0.3696, 0.606, 0.9714, 1.507, 2.238, 3.178, 4.325, 5.696",\
                 "0.1688, 0.2268, 0.371, 0.6068, 0.9706, 1.506, 2.239, 3.175, 4.329, 5.699");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.1276, 0.1987, 0.4382, 0.9307, 1.715, 2.825, 4.282, 6.123, 8.363, 11.04",\
                 "0.1275, 0.1982, 0.4384, 0.9308, 1.717, 2.823, 4.283, 6.123, 8.364, 11.03",\
                 "0.1285, 0.1984, 0.4386, 0.9297, 1.717, 2.825, 4.279, 6.114, 8.359, 11.05",\
                 "0.1485, 0.2144, 0.4444, 0.9308, 1.715, 2.824, 4.283, 6.122, 8.361, 11.02",\
                 "0.1788, 0.2432, 0.4592, 0.9358, 1.717, 2.823, 4.281, 6.116, 8.368, 11.04",\
                 "0.2098, 0.2764, 0.4778, 0.942, 1.719, 2.823, 4.279, 6.114, 8.36, 11.04",\
                 "0.2418, 0.3134, 0.5046, 0.9486, 1.723, 2.823, 4.275, 6.108, 8.352, 11.03",\
                 "0.2762, 0.3538, 0.5396, 0.9588, 1.723, 2.823, 4.278, 6.104, 8.336, 11.01",\
                 "0.311, 0.3972, 0.584, 0.9758, 1.729, 2.825, 4.275, 6.108, 8.338, 11",\
                 "0.346, 0.44, 0.6356, 1.005, 1.738, 2.831, 4.278, 6.105, 8.342, 11");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.5101, 0.5927, 0.764, 0.9826, 1.26, 1.618, 2.077, 2.651, 3.351, 4.186",\
                 "0.5338, 0.6163, 0.7878, 1.006, 1.284, 1.642, 2.101, 2.675, 3.375, 4.209",\
                 "0.6272, 0.7097, 0.8814, 1.1, 1.378, 1.736, 2.195, 2.769, 3.469, 4.303",\
                 "0.7973, 0.8823, 1.057, 1.277, 1.556, 1.914, 2.373, 2.947, 3.647, 4.482",\
                 "1.001, 1.095, 1.282, 1.508, 1.789, 2.148, 2.608, 3.182, 3.882, 4.717",\
                 "1.226, 1.33, 1.53, 1.765, 2.052, 2.414, 2.874, 3.449, 4.149, 4.983",\
                 "1.482, 1.595, 1.809, 2.053, 2.345, 2.71, 3.171, 3.747, 4.447, 5.282",\
                 "1.78, 1.899, 2.128, 2.38, 2.677, 3.044, 3.507, 4.083, 4.784, 5.619",\
                 "2.121, 2.248, 2.493, 2.754, 3.056, 3.427, 3.89, 4.467, 5.169, 6.003",\
                 "2.505, 2.64, 2.904, 3.178, 3.488, 3.863, 4.328, 4.904, 5.606, 6.441");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.4224, 0.4888, 0.6648, 0.9662, 1.428, 2.076, 2.926, 3.999, 5.306, 6.861",\
                 "0.4425, 0.5089, 0.6849, 0.9864, 1.449, 2.096, 2.946, 4.019, 5.326, 6.879",\
                 "0.5109, 0.577, 0.7526, 1.054, 1.517, 2.164, 3.017, 4.088, 5.394, 6.953",\
                 "0.5984, 0.6664, 0.8438, 1.146, 1.609, 2.257, 3.108, 4.181, 5.488, 7.045",\
                 "0.6691, 0.7412, 0.9235, 1.227, 1.691, 2.339, 3.189, 4.261, 5.573, 7.132",\
                 "0.7181, 0.7955, 0.9839, 1.289, 1.753, 2.401, 3.252, 4.326, 5.634, 7.196",\
                 "0.743, 0.8273, 1.024, 1.332, 1.795, 2.443, 3.295, 4.366, 5.675, 7.233",\
                 "0.7384, 0.8317, 1.04, 1.351, 1.815, 2.463, 3.315, 4.387, 5.693, 7.253",\
                 "0.6999, 0.8026, 1.026, 1.345, 1.811, 2.458, 3.309, 4.381, 5.689, 7.247",\
                 "0.6253, 0.7374, 0.9781, 1.307, 1.777, 2.426, 3.277, 4.349, 5.657, 7.215");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.1699, 0.2299, 0.3715, 0.6068, 0.9726, 1.509, 2.241, 3.18, 4.33, 5.709",\
                 "0.17, 0.2298, 0.3721, 0.6077, 0.9724, 1.509, 2.24, 3.18, 4.329, 5.713",\
                 "0.1705, 0.2306, 0.3726, 0.608, 0.972, 1.509, 2.241, 3.18, 4.33, 5.713",\
                 "0.1826, 0.2406, 0.3782, 0.6098, 0.9736, 1.509, 2.241, 3.18, 4.335, 5.713",\
                 "0.2132, 0.2722, 0.4002, 0.6228, 0.9806, 1.512, 2.242, 3.18, 4.329, 5.71",\
                 "0.242, 0.3064, 0.4268, 0.6444, 0.9968, 1.521, 2.245, 3.18, 4.331, 5.705",\
                 "0.263, 0.3392, 0.4554, 0.6654, 1.012, 1.533, 2.253, 3.183, 4.331, 5.709",\
                 "0.2798, 0.37, 0.4824, 0.6858, 1.027, 1.542, 2.259, 3.189, 4.335, 5.711",\
                 "0.3006, 0.4018, 0.5146, 0.7082, 1.044, 1.553, 2.264, 3.193, 4.341, 5.709",\
                 "0.3254, 0.4386, 0.5546, 0.7394, 1.067, 1.568, 2.272, 3.194, 4.34, 5.71");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.008447, 0.01794, 0.05126, 0.1149, 0.214, 0.3531, 0.5361, 0.7667, 1.048, 1.384");
          values("0.12, 0.1923, 0.436, 0.9297, 1.717, 2.822, 4.283, 6.121, 8.368, 11.03",\
                 "0.1208, 0.1925, 0.436, 0.9304, 1.717, 2.821, 4.284, 6.12, 8.368, 11.03",\
                 "0.1213, 0.1933, 0.4361, 0.93, 1.715, 2.826, 4.278, 6.116, 8.359, 11.02",\
                 "0.1282, 0.1986, 0.4388, 0.93, 1.716, 2.823, 4.284, 6.111, 8.357, 11.03",\
                 "0.1388, 0.2096, 0.4468, 0.9328, 1.716, 2.824, 4.284, 6.123, 8.364, 11.04",\
                 "0.1538, 0.2246, 0.456, 0.9366, 1.718, 2.824, 4.278, 6.112, 8.355, 11.03",\
                 "0.173, 0.2438, 0.4694, 0.9418, 1.719, 2.824, 4.273, 6.109, 8.354, 11.03",\
                 "0.1968, 0.2706, 0.4864, 0.9466, 1.723, 2.823, 4.278, 6.103, 8.345, 11.02",\
                 "0.221, 0.299, 0.5132, 0.9602, 1.725, 2.828, 4.275, 6.106, 8.337, 11.02",\
                 "0.245, 0.3304, 0.5452, 0.982, 1.739, 2.831, 4.276, 6.103, 8.34, 11");
        }
      }
    }
  }

