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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.005752 ;
      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.0855, 0.08518, 0.08864, 0.09946, 0.1184, 0.1469, 0.1896, 0.2475, \
                  0.321, 0.4108");
        }

        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.1174, 0.1172, 0.1222, 0.1382, 0.1689, 0.2165, 0.2824, 0.3673, \
                  0.4724, 0.599");
        }

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

    pin(I) {
      capacitance : 0.003106 ;
      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.0105, 0.01049, 0.01048, 0.01047, 0.01048, 0.01047, 0.01049, \
                  0.01051, 0.0105, 0.0105");
        }

        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.01046, -0.01045, -0.01046, -0.01044, -0.01044, -0.01044, -0.01046, \
                  -0.01046, -0.01047, -0.01046");
        }
      }
    }

    pin(Z) {
      capacitance : 0.002789 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.3587 ;
      max_transition : 5.2 ;
      min_capacitance : 0.003789 ;
      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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.09561, 0.09527, 0.09482, 0.09444, 0.09423, 0.09412, 0.09405, 0.09401, 0.09398, 0.09395",\
                 "0.09607, 0.09575, 0.09524, 0.09489, 0.0947, 0.09459, 0.0945, 0.09446, 0.09442, 0.09439",\
                 "0.1015, 0.1013, 0.101, 0.1008, 0.1007, 0.1006, 0.1006, 0.1006, 0.1006, 0.1006",\
                 "0.1148, 0.1148, 0.1147, 0.1147, 0.1147, 0.1148, 0.1148, 0.1148, 0.1148, 0.1148",\
                 "0.1385, 0.1385, 0.1385, 0.1385, 0.1385, 0.1385, 0.1385, 0.1385, 0.1385, 0.1385",\
                 "0.1725, 0.1724, 0.1724, 0.1724, 0.1724, 0.1725, 0.1725, 0.1725, 0.1725, 0.1725",\
                 "0.2174, 0.2174, 0.2173, 0.2173, 0.2173, 0.2173, 0.2174, 0.2174, 0.2173, 0.2174",\
                 "0.2738, 0.2737, 0.2738, 0.2736, 0.2737, 0.2737, 0.2737, 0.2737, 0.2737, 0.2737",\
                 "0.3421, 0.3422, 0.3422, 0.3421, 0.3421, 0.3421, 0.3421, 0.3422, 0.3422, 0.3422",\
                 "0.4234, 0.4233, 0.4233, 0.4232, 0.4232, 0.4232, 0.4232, 0.4233, 0.4233, 0.4233");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.05645, 0.0564, 0.05642, 0.05655, 0.0567, 0.05703, 0.05734, 0.05848, 0.05983, 0.06073",\
                 "0.05613, 0.05607, 0.05608, 0.05612, 0.05616, 0.05639, 0.05756, 0.05801, 0.0594, 0.06047",\
                 "0.05971, 0.05974, 0.05977, 0.05975, 0.05997, 0.05999, 0.06105, 0.06168, 0.06318, 0.06371",\
                 "0.07349, 0.0734, 0.07374, 0.07365, 0.07383, 0.07417, 0.07462, 0.07605, 0.07718, 0.07739",\
                 "0.1007, 0.1006, 0.1004, 0.1011, 0.1011, 0.1012, 0.102, 0.1027, 0.1041, 0.1054",\
                 "0.1427, 0.1428, 0.1426, 0.1427, 0.1434, 0.1437, 0.1439, 0.1446, 0.1455, 0.146",\
                 "0.2007, 0.2007, 0.2007, 0.2007, 0.2007, 0.2021, 0.2027, 0.2033, 0.2034, 0.204",\
                 "0.2756, 0.2758, 0.2757, 0.2755, 0.2754, 0.276, 0.2779, 0.2784, 0.2787, 0.2792",\
                 "0.3682, 0.3683, 0.3683, 0.3685, 0.3681, 0.3684, 0.3692, 0.3715, 0.3719, 0.3728",\
                 "0.4796, 0.4796, 0.4797, 0.4798, 0.4798, 0.4793, 0.4801, 0.4814, 0.4846, 0.4855");
        }
      }

      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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.1587, 0.1572, 0.1547, 0.1533, 0.1526, 0.1522, 0.1519, 0.1517, 0.1516, 0.1516",\
                 "0.1583, 0.1567, 0.1544, 0.153, 0.1522, 0.1518, 0.1516, 0.1514, 0.1513, 0.1512",\
                 "0.1594, 0.1578, 0.1554, 0.1538, 0.1531, 0.1527, 0.1525, 0.1523, 0.1522, 0.1521",\
                 "0.168, 0.1661, 0.1629, 0.1608, 0.1598, 0.1591, 0.1588, 0.1585, 0.1584, 0.1583",\
                 "0.188, 0.1852, 0.1805, 0.1769, 0.1748, 0.1736, 0.173, 0.1725, 0.1721, 0.1719",\
                 "0.2175, 0.2141, 0.2078, 0.2026, 0.1992, 0.1972, 0.1959, 0.1951, 0.1945, 0.1941",\
                 "0.2578, 0.2538, 0.2457, 0.2389, 0.234, 0.2309, 0.2289, 0.2276, 0.2267, 0.2261",\
                 "0.3096, 0.3049, 0.2952, 0.2864, 0.2799, 0.2756, 0.2726, 0.2706, 0.2693, 0.2684",\
                 "0.373, 0.3678, 0.3564, 0.3458, 0.3376, 0.3316, 0.3277, 0.325, 0.3232, 0.3218",\
                 "0.4485, 0.4429, 0.4301, 0.4175, 0.4073, 0.4001, 0.3949, 0.3911, 0.3885, 0.3868");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.07069, 0.07062, 0.07122, 0.07232, 0.07311, 0.07392, 0.07531, 0.07619, 0.07696, 0.07915",\
                 "0.07032, 0.07028, 0.07078, 0.07189, 0.0729, 0.07388, 0.07498, 0.07615, 0.07725, 0.07807",\
                 "0.07105, 0.07092, 0.07116, 0.07192, 0.07286, 0.07363, 0.07502, 0.07608, 0.07761, 0.07879",\
                 "0.07812, 0.07744, 0.07644, 0.07657, 0.07707, 0.07759, 0.07927, 0.07968, 0.08103, 0.08275",\
                 "0.09248, 0.09108, 0.08892, 0.08801, 0.08748, 0.0876, 0.08888, 0.08969, 0.09108, 0.09211",\
                 "0.1154, 0.1135, 0.1098, 0.1072, 0.107, 0.1057, 0.1062, 0.1068, 0.1084, 0.109",\
                 "0.1478, 0.1455, 0.1407, 0.1364, 0.1344, 0.1343, 0.1336, 0.1331, 0.1336, 0.1353",\
                 "0.1907, 0.1875, 0.1816, 0.1758, 0.172, 0.1698, 0.1705, 0.1699, 0.1699, 0.1698",\
                 "0.2439, 0.2401, 0.2328, 0.2257, 0.2204, 0.2168, 0.2157, 0.2167, 0.2164, 0.2155",\
                 "0.3081, 0.3037, 0.2949, 0.287, 0.2798, 0.2754, 0.2719, 0.2716, 0.2729, 0.272");
        }
      }

      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.134, 0.144, 0.182, 0.252, 0.342, 0.45, 0.574, 0.712, 0.868, \
                  1.043");
        }

        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.201, 0.211, 0.249, 0.319, 0.411, 0.523, 0.654, 0.804, 0.974, \
                  1.166");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.1578, 0.1857, 0.2609, 0.3691, 0.5086, 0.6874, 0.915, 1.199, 1.545, 1.958",\
                 "0.1658, 0.1936, 0.269, 0.3771, 0.5165, 0.6953, 0.9229, 1.207, 1.553, 1.966",\
                 "0.1962, 0.2236, 0.298, 0.4056, 0.5447, 0.7235, 0.951, 1.235, 1.581, 1.994",\
                 "0.2339, 0.263, 0.3378, 0.4439, 0.5823, 0.7607, 0.9883, 1.272, 1.619, 2.031",\
                 "0.252, 0.2811, 0.3547, 0.4597, 0.5974, 0.7753, 1.003, 1.287, 1.633, 2.046",\
                 "0.249, 0.2778, 0.3502, 0.4535, 0.5902, 0.7677, 0.9945, 1.278, 1.624, 2.037",\
                 "0.2268, 0.2559, 0.3277, 0.4298, 0.565, 0.7414, 0.9679, 1.252, 1.597, 2.01",\
                 "0.1851, 0.2145, 0.2864, 0.3879, 0.5225, 0.6985, 0.9248, 1.208, 1.554, 1.966",\
                 "0.1222, 0.1523, 0.2249, 0.3264, 0.4606, 0.6364, 0.8626, 1.146, 1.492, 1.904",\
                 "0.0369, 0.0673, 0.141, 0.2429, 0.3771, 0.5528, 0.779, 1.063, 1.409, 1.821");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.1398, 0.1683, 0.2507, 0.3909, 0.6044, 0.9032, 1.298, 1.792, 2.399, 3.12",\
                 "0.1465, 0.1748, 0.2572, 0.3975, 0.611, 0.9102, 1.304, 1.8, 2.406, 3.128",\
                 "0.1694, 0.1981, 0.2808, 0.4212, 0.6347, 0.9339, 1.327, 1.824, 2.429, 3.148",\
                 "0.1909, 0.2216, 0.3068, 0.4484, 0.6619, 0.961, 1.355, 1.85, 2.455, 3.177",\
                 "0.2007, 0.2358, 0.3257, 0.469, 0.6836, 0.9826, 1.376, 1.871, 2.478, 3.2",\
                 "0.1936, 0.235, 0.334, 0.4817, 0.697, 0.9967, 1.39, 1.886, 2.491, 3.214",\
                 "0.1677, 0.2159, 0.3272, 0.4824, 0.7022, 1.003, 1.396, 1.892, 2.497, 3.22",\
                 "0.1212, 0.1769, 0.303, 0.4676, 0.6937, 0.9993, 1.394, 1.89, 2.495, 3.216",\
                 "0.0528, 0.1167, 0.2595, 0.4358, 0.6689, 0.9817, 1.382, 1.879, 2.484, 3.205",\
                 "-0.039, 0.0332, 0.1946, 0.3856, 0.6265, 0.9467, 1.356, 1.859, 2.465, 3.186");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.08778, 0.1162, 0.1975, 0.3187, 0.5008, 0.7647, 1.125, 1.59, 2.165, 2.85",\
                 "0.0876, 0.1164, 0.1973, 0.3188, 0.5008, 0.7646, 1.125, 1.591, 2.164, 2.851",\
                 "0.08516, 0.1136, 0.1949, 0.3171, 0.4989, 0.7637, 1.125, 1.589, 2.164, 2.85",\
                 "0.09156, 0.1186, 0.1925, 0.3141, 0.4978, 0.7634, 1.125, 1.589, 2.165, 2.85",\
                 "0.09442, 0.1186, 0.1903, 0.3116, 0.4944, 0.7622, 1.124, 1.591, 2.164, 2.85",\
                 "0.094, 0.1174, 0.1876, 0.308, 0.4926, 0.759, 1.121, 1.588, 2.162, 2.848",\
                 "0.0956, 0.1174, 0.1852, 0.3042, 0.4892, 0.7564, 1.12, 1.585, 2.158, 2.845",\
                 "0.098, 0.1192, 0.185, 0.303, 0.4868, 0.754, 1.12, 1.585, 2.157, 2.841",\
                 "0.1, 0.1214, 0.1858, 0.3024, 0.4858, 0.7546, 1.118, 1.586, 2.158, 2.841",\
                 "0.1046, 0.1246, 0.1874, 0.3028, 0.485, 0.755, 1.12, 1.588, 2.159, 2.842");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.0874, 0.1221, 0.2374, 0.4644, 0.8308, 1.35, 2.039, 2.897, 3.949, 5.209",\
                 "0.087, 0.1221, 0.2374, 0.464, 0.831, 1.353, 2.037, 2.898, 3.951, 5.206",\
                 "0.08858, 0.1231, 0.2377, 0.4641, 0.8308, 1.35, 2.036, 2.903, 3.951, 5.213",\
                 "0.09828, 0.1302, 0.242, 0.4658, 0.8309, 1.352, 2.038, 2.901, 3.955, 5.217",\
                 "0.1154, 0.145, 0.2495, 0.47, 0.8334, 1.352, 2.037, 2.896, 3.949, 5.204",\
                 "0.1371, 0.1677, 0.2656, 0.477, 0.8354, 1.352, 2.034, 2.9, 3.949, 5.206",\
                 "0.1618, 0.1942, 0.2884, 0.494, 0.8458, 1.356, 2.036, 2.897, 3.946, 5.21",\
                 "0.1888, 0.2242, 0.3186, 0.5144, 0.8654, 1.37, 2.041, 2.896, 3.951, 5.198",\
                 "0.2184, 0.257, 0.353, 0.5394, 0.8874, 1.394, 2.058, 2.904, 3.948, 5.203",\
                 "0.2484, 0.2926, 0.3936, 0.5686, 0.9112, 1.426, 2.091, 2.926, 3.958, 5.202");
        }
      }

      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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.272, 0.3001, 0.3772, 0.4876, 0.6281, 0.8072, 1.035, 1.319, 1.665, 2.078",\
                 "0.2805, 0.3087, 0.3856, 0.4961, 0.6367, 0.8158, 1.043, 1.327, 1.674, 2.086",\
                 "0.3163, 0.3443, 0.4212, 0.5317, 0.6723, 0.8514, 1.079, 1.363, 1.709, 2.122",\
                 "0.3918, 0.4199, 0.4964, 0.6069, 0.7474, 0.9266, 1.154, 1.438, 1.785, 2.197",\
                 "0.4981, 0.5275, 0.6062, 0.7189, 0.8607, 1.04, 1.267, 1.551, 1.897, 2.31",\
                 "0.6285, 0.6594, 0.7414, 0.858, 1.003, 1.184, 1.411, 1.695, 2.041, 2.453",\
                 "0.7809, 0.8144, 0.9021, 1.025, 1.175, 1.358, 1.586, 1.87, 2.216, 2.628",\
                 "0.9538, 0.99, 1.085, 1.217, 1.375, 1.564, 1.794, 2.078, 2.424, 2.835",\
                 "1.148, 1.187, 1.289, 1.429, 1.599, 1.798, 2.036, 2.322, 2.668, 3.079",\
                 "1.365, 1.407, 1.515, 1.665, 1.845, 2.056, 2.304, 2.6, 2.948, 3.36");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.2353, 0.2644, 0.3486, 0.4903, 0.7049, 1.005, 1.398, 1.895, 2.501, 3.224",\
                 "0.242, 0.2713, 0.3552, 0.4969, 0.7115, 1.011, 1.405, 1.902, 2.506, 3.228",\
                 "0.2673, 0.2963, 0.3801, 0.5215, 0.7361, 1.036, 1.43, 1.926, 2.533, 3.255",\
                 "0.3083, 0.3373, 0.4207, 0.5614, 0.7754, 1.075, 1.469, 1.966, 2.571, 3.294",\
                 "0.3418, 0.3714, 0.4565, 0.5975, 0.8108, 1.109, 1.504, 1.999, 2.604, 3.328",\
                 "0.3628, 0.3937, 0.4813, 0.6233, 0.8358, 1.134, 1.527, 2.023, 2.628, 3.348",\
                 "0.366, 0.3987, 0.4902, 0.6361, 0.8496, 1.147, 1.539, 2.034, 2.639, 3.36",\
                 "0.3494, 0.3843, 0.48, 0.6309, 0.8482, 1.147, 1.539, 2.033, 2.637, 3.358",\
                 "0.3105, 0.3481, 0.4487, 0.605, 0.8271, 1.131, 1.526, 2.019, 2.623, 3.343",\
                 "0.2496, 0.2894, 0.3953, 0.5571, 0.7841, 1.094, 1.495, 1.992, 2.595, 3.315");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.09906, 0.1274, 0.2073, 0.3269, 0.5038, 0.7662, 1.126, 1.588, 2.163, 2.85",\
                 "0.0991, 0.1272, 0.2072, 0.3268, 0.5048, 0.7662, 1.127, 1.59, 2.164, 2.846",\
                 "0.09934, 0.1275, 0.2076, 0.3264, 0.5038, 0.7665, 1.125, 1.589, 2.164, 2.85",\
                 "0.1015, 0.1294, 0.2094, 0.3288, 0.5063, 0.767, 1.125, 1.589, 2.165, 2.851",\
                 "0.1145, 0.1417, 0.2202, 0.337, 0.5098, 0.7692, 1.127, 1.589, 2.164, 2.849",\
                 "0.1282, 0.1564, 0.2346, 0.3532, 0.5216, 0.776, 1.13, 1.59, 2.163, 2.85",\
                 "0.148, 0.1778, 0.257, 0.3758, 0.539, 0.7848, 1.134, 1.593, 2.163, 2.85",\
                 "0.1684, 0.2006, 0.2838, 0.409, 0.571, 0.807, 1.146, 1.597, 2.165, 2.849",\
                 "0.189, 0.2232, 0.313, 0.4454, 0.6148, 0.8476, 1.174, 1.611, 2.169, 2.847",\
                 "0.2108, 0.249, 0.3432, 0.4822, 0.661, 0.8986, 1.227, 1.651, 2.189, 2.855");
        }

        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.003789, 0.006239, 0.01484, 0.03126, 0.05684, 0.09274, 0.14, 0.1995, 0.2721, 0.3587");
          values("0.09154, 0.1255, 0.2384, 0.4639, 0.831, 1.35, 2.034, 2.898, 3.951, 5.206",\
                 "0.0913, 0.125, 0.2386, 0.4641, 0.8308, 1.35, 2.036, 2.902, 3.955, 5.216",\
                 "0.09164, 0.1257, 0.2387, 0.4645, 0.8307, 1.35, 2.035, 2.897, 3.951, 5.207",\
                 "0.09454, 0.1288, 0.2407, 0.4648, 0.8306, 1.35, 2.038, 2.898, 3.958, 5.205",\
                 "0.1021, 0.1367, 0.2483, 0.4678, 0.8314, 1.352, 2.038, 2.898, 3.955, 5.207",\
                 "0.1126, 0.1466, 0.2582, 0.4728, 0.8334, 1.353, 2.036, 2.895, 3.953, 5.21",\
                 "0.1254, 0.1602, 0.2732, 0.4854, 0.8386, 1.353, 2.034, 2.895, 3.945, 5.203",\
                 "0.1404, 0.176, 0.2898, 0.5028, 0.8532, 1.361, 2.036, 2.895, 3.946, 5.198",\
                 "0.1584, 0.1928, 0.3088, 0.5238, 0.8748, 1.383, 2.048, 2.899, 3.947, 5.205",\
                 "0.1734, 0.2116, 0.3272, 0.5448, 0.899, 1.409, 2.079, 2.917, 3.953, 5.198");
        }
      }
    }
  }

