/*
 * 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 : "5.9139e-05" ;
    }

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.008049 ;
      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.07756, 0.07723, 0.07934, 0.08361, 0.09024, 0.09949, \
                  0.1117, 0.1275, 0.1474");
        }

        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.1321, 0.1299, 0.1283, 0.1301, 0.1362, 0.1472, 0.1633, 0.1851, \
                  0.2129, 0.247");
        }

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

    pin(I) {
      capacitance : 0.007167 ;
      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.0212, 0.02117, 0.02112, 0.02114, 0.02117, 0.02118, 0.02122, \
                  0.0212, 0.02117, 0.02117");
        }

        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.02114, -0.02111, -0.0211, -0.02109, -0.02108, -0.02114, -0.02115, \
                  -0.02115, -0.02115, -0.02114");
        }
      }
    }

    pin(Z) {
      capacitance : 0.006589 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 1.038 ;
      max_transition : 11 ;
      min_capacitance : 0.007589 ;
      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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.1342, 0.1342, 0.1342, 0.1342, 0.1342, 0.1342, 0.1342, 0.1343, 0.1343, 0.1343",\
                 "0.1344, 0.1344, 0.1343, 0.1343, 0.1344, 0.1344, 0.1344, 0.1344, 0.1344, 0.1344",\
                 "0.1365, 0.1365, 0.1364, 0.1364, 0.1364, 0.1365, 0.1365, 0.1365, 0.1365, 0.1365",\
                 "0.1404, 0.1404, 0.1403, 0.1402, 0.1403, 0.1403, 0.1403, 0.1403, 0.1404, 0.1404",\
                 "0.147, 0.147, 0.147, 0.1469, 0.1469, 0.1469, 0.1469, 0.1469, 0.1469, 0.1469",\
                 "0.157, 0.157, 0.157, 0.1569, 0.1569, 0.157, 0.1569, 0.157, 0.157, 0.157",\
                 "0.1704, 0.1704, 0.1703, 0.1703, 0.1703, 0.1703, 0.1703, 0.1703, 0.1703, 0.1703",\
                 "0.1872, 0.1872, 0.1871, 0.187, 0.187, 0.1871, 0.187, 0.1871, 0.1871, 0.1871",\
                 "0.2077, 0.2077, 0.2077, 0.2077, 0.2077, 0.2077, 0.2077, 0.2077, 0.2077, 0.2077",\
                 "0.2321, 0.2321, 0.2321, 0.232, 0.232, 0.232, 0.2321, 0.2321, 0.2321, 0.2321");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.09705, 0.09709, 0.09705, 0.09708, 0.09807, 0.09879, 0.1002, 0.1022, 0.1073, 0.1354",\
                 "0.09618, 0.09629, 0.09615, 0.09627, 0.09708, 0.09825, 0.09925, 0.1004, 0.1043, 0.1355",\
                 "0.09526, 0.09532, 0.09522, 0.09543, 0.09603, 0.09711, 0.09805, 0.1001, 0.1035, 0.1347",\
                 "0.09677, 0.09694, 0.09705, 0.09699, 0.09795, 0.09864, 0.1002, 0.1019, 0.1058, 0.1416",\
                 "0.1022, 0.1025, 0.102, 0.1031, 0.1033, 0.1039, 0.1053, 0.107, 0.1117, 0.1528",\
                 "0.1124, 0.1123, 0.1124, 0.1121, 0.114, 0.1139, 0.1149, 0.1166, 0.1218, 0.1753",\
                 "0.1271, 0.1273, 0.1273, 0.1269, 0.1272, 0.1301, 0.1308, 0.1308, 0.1377, 0.2071",\
                 "0.1472, 0.1472, 0.1474, 0.1477, 0.1472, 0.1482, 0.1518, 0.1527, 0.1613, 0.2555",\
                 "0.1728, 0.1729, 0.1733, 0.173, 0.1726, 0.1731, 0.1746, 0.1801, 0.1965, 0.3344",\
                 "0.2042, 0.2043, 0.2047, 0.2046, 0.2046, 0.2051, 0.2051, 0.2088, 0.2445, 0.4703");
        }
      }

      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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.2169, 0.2186, 0.2218, 0.2241, 0.2253, 0.2259, 0.2263, 0.2265, 0.2267, 0.2267",\
                 "0.2157, 0.2174, 0.2207, 0.2229, 0.2241, 0.2248, 0.2252, 0.2254, 0.2255, 0.2256",\
                 "0.2144, 0.2159, 0.219, 0.2213, 0.2226, 0.2233, 0.2238, 0.224, 0.2242, 0.2243",\
                 "0.216, 0.2169, 0.2193, 0.2216, 0.2232, 0.2241, 0.2247, 0.2251, 0.2253, 0.2254",\
                 "0.2225, 0.2228, 0.2241, 0.226, 0.2277, 0.2287, 0.2294, 0.2299, 0.2302, 0.2304",\
                 "0.2341, 0.2336, 0.234, 0.2353, 0.2367, 0.2377, 0.2385, 0.239, 0.2394, 0.2396",\
                 "0.2505, 0.2495, 0.249, 0.2497, 0.2508, 0.2519, 0.2526, 0.2531, 0.2535, 0.2538",\
                 "0.2722, 0.2709, 0.2694, 0.2694, 0.2702, 0.2711, 0.2718, 0.2723, 0.2728, 0.2731",\
                 "0.2997, 0.2978, 0.2957, 0.2951, 0.2953, 0.2961, 0.2967, 0.2973, 0.2977, 0.298",\
                 "0.3334, 0.331, 0.3278, 0.3265, 0.3265, 0.3271, 0.3277, 0.3281, 0.3286, 0.3289");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.09939, 0.101, 0.1041, 0.1066, 0.109, 0.1106, 0.1121, 0.1141, 0.1171, 0.1478",\
                 "0.09844, 0.09994, 0.103, 0.1056, 0.1079, 0.1094, 0.1115, 0.1135, 0.1168, 0.1472",\
                 "0.09657, 0.098, 0.1006, 0.1029, 0.1055, 0.1071, 0.1094, 0.1126, 0.1148, 0.1479",\
                 "0.09554, 0.09678, 0.09902, 0.1014, 0.1042, 0.1063, 0.1091, 0.1108, 0.1152, 0.1533",\
                 "0.09803, 0.09893, 0.1008, 0.1035, 0.106, 0.1083, 0.1112, 0.1132, 0.1181, 0.1628",\
                 "0.1049, 0.1056, 0.107, 0.1095, 0.1125, 0.1146, 0.1166, 0.1186, 0.1248, 0.182",\
                 "0.1164, 0.117, 0.1183, 0.1196, 0.1219, 0.1262, 0.1274, 0.1289, 0.137, 0.2142",\
                 "0.1333, 0.1336, 0.1346, 0.1356, 0.1376, 0.1405, 0.1448, 0.146, 0.1568, 0.2634",\
                 "0.156, 0.156, 0.1565, 0.1574, 0.1595, 0.1604, 0.1646, 0.1704, 0.1894, 0.345",\
                 "0.1845, 0.1842, 0.1841, 0.1852, 0.1867, 0.1889, 0.1891, 0.1948, 0.2381, 0.4897");
        }
      }

      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.313, 0.341, 0.436, 0.62, 0.841, 1.085, 1.361, 1.675, 2.032, \
                  2.432");
        }

        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.404, 0.425, 0.521, 0.688, 0.886, 1.11, 1.372, 1.677, 2.026, \
                  2.415");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.3529, 0.4213, 0.5768, 0.786, 1.058, 1.413, 1.871, 2.444, 3.144, 3.978",\
                 "0.3766, 0.4449, 0.6006, 0.8098, 1.082, 1.437, 1.894, 2.468, 3.168, 4.001",\
                 "0.4594, 0.5271, 0.6821, 0.8908, 1.163, 1.518, 1.975, 2.549, 3.248, 4.082",\
                 "0.5816, 0.6477, 0.8003, 1.008, 1.28, 1.634, 2.092, 2.665, 3.365, 4.199",\
                 "0.6452, 0.7114, 0.8634, 1.071, 1.342, 1.696, 2.153, 2.726, 3.426, 4.26",\
                 "0.6665, 0.7324, 0.885, 1.092, 1.363, 1.717, 2.174, 2.746, 3.446, 4.28",\
                 "0.6513, 0.7172, 0.8698, 1.077, 1.348, 1.702, 2.159, 2.732, 3.43, 4.263",\
                 "0.599, 0.665, 0.8172, 1.024, 1.295, 1.65, 2.106, 2.679, 3.378, 4.211",\
                 "0.5089, 0.5751, 0.7276, 0.9348, 1.206, 1.56, 2.017, 2.589, 3.288, 4.122",\
                 "0.377, 0.4441, 0.597, 0.8043, 1.075, 1.429, 1.886, 2.459, 3.158, 3.991");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.302, 0.3649, 0.5382, 0.8374, 1.298, 1.944, 2.793, 3.865, 5.172, 6.725",\
                 "0.3232, 0.386, 0.5595, 0.8587, 1.319, 1.965, 2.815, 3.884, 5.19, 6.753",\
                 "0.3986, 0.4616, 0.6351, 0.9343, 1.395, 2.041, 2.891, 3.962, 5.269, 6.828",\
                 "0.4985, 0.5663, 0.7443, 1.044, 1.504, 2.15, 2.999, 4.072, 5.378, 6.93",\
                 "0.5716, 0.6483, 0.834, 1.137, 1.598, 2.244, 3.094, 4.164, 5.473, 7.031",\
                 "0.6139, 0.7006, 0.8982, 1.203, 1.665, 2.311, 3.16, 4.23, 5.539, 7.095",\
                 "0.6241, 0.7235, 0.9358, 1.244, 1.705, 2.351, 3.201, 4.271, 5.578, 7.138",\
                 "0.5989, 0.7107, 0.943, 1.258, 1.719, 2.365, 3.214, 4.285, 5.59, 7.146",\
                 "0.5349, 0.6597, 0.9156, 1.24, 1.703, 2.349, 3.198, 4.268, 5.574, 7.131",\
                 "0.4309, 0.5685, 0.8485, 1.188, 1.655, 2.301, 3.15, 4.22, 5.526, 7.082");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.1668, 0.2223, 0.3629, 0.598, 0.9649, 1.504, 2.238, 3.178, 4.333, 5.706",\
                 "0.1669, 0.2225, 0.3634, 0.5977, 0.9645, 1.503, 2.238, 3.178, 4.328, 5.711",\
                 "0.1644, 0.2201, 0.3622, 0.5978, 0.9632, 1.503, 2.239, 3.178, 4.33, 5.71",\
                 "0.1638, 0.2168, 0.3584, 0.5954, 0.9624, 1.502, 2.238, 3.175, 4.332, 5.707",\
                 "0.163, 0.2164, 0.3584, 0.5936, 0.9596, 1.502, 2.238, 3.178, 4.333, 5.705",\
                 "0.1628, 0.2162, 0.3584, 0.5936, 0.9608, 1.499, 2.232, 3.175, 4.331, 5.711",\
                 "0.1632, 0.2164, 0.3582, 0.5942, 0.9612, 1.501, 2.232, 3.17, 4.322, 5.7",\
                 "0.1638, 0.2168, 0.358, 0.594, 0.9612, 1.501, 2.233, 3.171, 4.322, 5.692",\
                 "0.1656, 0.2178, 0.3576, 0.5938, 0.9604, 1.5, 2.235, 3.175, 4.321, 5.693",\
                 "0.1676, 0.2194, 0.3586, 0.5938, 0.961, 1.5, 2.234, 3.172, 4.326, 5.698");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.1409, 0.2123, 0.4533, 0.9435, 1.727, 2.834, 4.294, 6.128, 8.375, 11.04",\
                 "0.1412, 0.2124, 0.4534, 0.9437, 1.728, 2.836, 4.289, 6.131, 8.369, 11.05",\
                 "0.1417, 0.2125, 0.4533, 0.9439, 1.729, 2.834, 4.29, 6.12, 8.364, 11.05",\
                 "0.1588, 0.2258, 0.4594, 0.943, 1.727, 2.835, 4.294, 6.13, 8.375, 11.04",\
                 "0.1864, 0.2498, 0.4706, 0.9496, 1.728, 2.832, 4.285, 6.126, 8.372, 11.03",\
                 "0.217, 0.2792, 0.4864, 0.9538, 1.733, 2.835, 4.285, 6.12, 8.363, 11.04",\
                 "0.2494, 0.3144, 0.5084, 0.9602, 1.733, 2.835, 4.286, 6.117, 8.355, 11.02",\
                 "0.2842, 0.355, 0.5406, 0.9684, 1.735, 2.839, 4.288, 6.114, 8.356, 11.02",\
                 "0.3192, 0.3966, 0.582, 0.9862, 1.738, 2.837, 4.286, 6.115, 8.346, 11",\
                 "0.355, 0.4398, 0.6282, 1.01, 1.75, 2.841, 4.29, 6.115, 8.348, 11.01");
        }
      }

      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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.5101, 0.5845, 0.7456, 0.957, 1.23, 1.586, 2.043, 2.617, 3.316, 4.151",\
                 "0.5355, 0.6096, 0.7709, 0.9823, 1.255, 1.611, 2.068, 2.642, 3.342, 4.176",\
                 "0.6301, 0.7042, 0.8654, 1.077, 1.35, 1.706, 2.163, 2.737, 3.437, 4.27",\
                 "0.8014, 0.8782, 1.042, 1.255, 1.529, 1.885, 2.342, 2.916, 3.616, 4.45",\
                 "1.006, 1.092, 1.267, 1.487, 1.763, 2.12, 2.578, 3.151, 3.851, 4.685",\
                 "1.229, 1.324, 1.514, 1.742, 2.025, 2.384, 2.843, 3.416, 4.116, 4.95",\
                 "1.48, 1.583, 1.788, 2.025, 2.313, 2.675, 3.136, 3.71, 4.41, 5.244",\
                 "1.766, 1.877, 2.097, 2.344, 2.637, 3.002, 3.464, 4.038, 4.739, 5.573",\
                 "2.09, 2.208, 2.446, 2.703, 3.003, 3.372, 3.834, 4.409, 5.11, 5.945",\
                 "2.448, 2.575, 2.834, 3.105, 3.415, 3.789, 4.253, 4.828, 5.529, 6.364");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.4646, 0.5289, 0.7053, 1.008, 1.47, 2.117, 2.968, 4.039, 5.342, 6.903",\
                 "0.4851, 0.5493, 0.7258, 1.028, 1.49, 2.137, 2.988, 4.06, 5.368, 6.924",\
                 "0.558, 0.622, 0.7979, 1.1, 1.562, 2.209, 3.06, 4.131, 5.437, 6.995",\
                 "0.6684, 0.734, 0.9114, 1.214, 1.676, 2.324, 3.174, 4.247, 5.554, 7.107",\
                 "0.7669, 0.8377, 1.021, 1.326, 1.789, 2.437, 3.287, 4.361, 5.669, 7.225",\
                 "0.8429, 0.9203, 1.113, 1.42, 1.883, 2.531, 3.382, 4.454, 5.761, 7.319",\
                 "0.8961, 0.9813, 1.184, 1.494, 1.958, 2.605, 3.456, 4.527, 5.837, 7.39",\
                 "0.9262, 1.019, 1.234, 1.549, 2.013, 2.66, 3.512, 4.583, 5.889, 7.447",\
                 "0.9286, 1.03, 1.261, 1.583, 2.048, 2.695, 3.546, 4.617, 5.924, 7.481",\
                 "0.9008, 1.011, 1.258, 1.591, 2.06, 2.708, 3.558, 4.629, 5.936, 7.493");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.1767, 0.2286, 0.3635, 0.5971, 0.9646, 1.504, 2.238, 3.178, 4.332, 5.708",\
                 "0.1765, 0.2282, 0.3644, 0.5968, 0.9648, 1.504, 2.238, 3.177, 4.33, 5.709",\
                 "0.1767, 0.2288, 0.3638, 0.5974, 0.9638, 1.503, 2.238, 3.178, 4.329, 5.711",\
                 "0.1882, 0.2388, 0.3696, 0.6, 0.9654, 1.503, 2.238, 3.176, 4.333, 5.709",\
                 "0.2206, 0.2716, 0.3922, 0.6124, 0.9704, 1.506, 2.239, 3.178, 4.329, 5.711",\
                 "0.2508, 0.3072, 0.4204, 0.6356, 0.9882, 1.515, 2.243, 3.179, 4.332, 5.704",\
                 "0.2738, 0.3428, 0.4514, 0.659, 1.004, 1.526, 2.249, 3.182, 4.329, 5.705",\
                 "0.2938, 0.3766, 0.4826, 0.6816, 1.021, 1.537, 2.255, 3.185, 4.331, 5.708",\
                 "0.3178, 0.4128, 0.52, 0.7074, 1.04, 1.549, 2.261, 3.191, 4.336, 5.706",\
                 "0.3444, 0.4518, 0.5666, 0.7432, 1.069, 1.566, 2.27, 3.192, 4.336, 5.706");
        }

        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.007589, 0.0147, 0.03967, 0.08736, 0.1617, 0.2659, 0.4031, 0.5759, 0.7868, 1.038");
          values("0.1361, 0.2079, 0.451, 0.9435, 1.727, 2.834, 4.289, 6.124, 8.373, 11.02",\
                 "0.1363, 0.2084, 0.451, 0.9431, 1.728, 2.836, 4.292, 6.122, 8.369, 11.05",\
                 "0.1368, 0.2085, 0.4514, 0.9436, 1.727, 2.835, 4.294, 6.132, 8.374, 11.03",\
                 "0.1432, 0.2134, 0.4534, 0.9428, 1.726, 2.835, 4.294, 6.129, 8.375, 11.04",\
                 "0.1588, 0.2292, 0.4648, 0.9456, 1.728, 2.831, 4.294, 6.131, 8.365, 11.03",\
                 "0.1798, 0.2494, 0.4778, 0.9516, 1.729, 2.831, 4.287, 6.127, 8.368, 11.04",\
                 "0.203, 0.274, 0.4956, 0.9576, 1.731, 2.832, 4.287, 6.112, 8.361, 11.04",\
                 "0.2268, 0.3018, 0.516, 0.9648, 1.734, 2.833, 4.286, 6.112, 8.348, 11.01",\
                 "0.251, 0.3322, 0.5454, 0.9794, 1.736, 2.837, 4.286, 6.114, 8.344, 11.01",\
                 "0.2746, 0.3634, 0.579, 1.001, 1.746, 2.839, 4.293, 6.114, 8.348, 11");
        }
      }
    }
  }

