/*
 * 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_mcu9t5v0__bufz_8) {
    area : 93.139200 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.05657, 0.05578, 0.05559, 0.05766, 0.06199, 0.0688, 0.07833, \
                  0.09122, 0.1082, 0.13");
        }

        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.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.09473, 0.09375, 0.09322, 0.09545, 0.1015, 0.1119, 0.1275, 0.1489, \
                  0.1766, 0.2108");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.03393, 0.03384, 0.03385, 0.03384, 0.03377, 0.03389, 0.03389, \
                  0.03388, 0.03389, 0.03389");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("-0.03372, -0.03368, -0.03373, -0.03375, -0.03372, -0.03379, -0.0338, \
                  -0.03379, -0.03381, -0.03382");
        }
      }
    }

    pin(Z) {
      capacitance : 0.0225 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 2.612 ;
      max_transition : 8.4 ;
      min_capacitance : 0.0235 ;
      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.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.1698, 0.1697, 0.1697, 0.1697, 0.1697, 0.1697, 0.1697, 0.1697, 0.1698, 0.1698",\
                 "0.1698, 0.1697, 0.1697, 0.1697, 0.1697, 0.1697, 0.1697, 0.1698, 0.1698, 0.1698",\
                 "0.1713, 0.1713, 0.1713, 0.1712, 0.1712, 0.1712, 0.1712, 0.1713, 0.1713, 0.1713",\
                 "0.1748, 0.1748, 0.1747, 0.1746, 0.1746, 0.1746, 0.1747, 0.1747, 0.1747, 0.1747",\
                 "0.1809, 0.1809, 0.1808, 0.1808, 0.1807, 0.1807, 0.1807, 0.1808, 0.1808, 0.1808",\
                 "0.1901, 0.1901, 0.1901, 0.19, 0.1901, 0.19, 0.19, 0.19, 0.19, 0.19",\
                 "0.2026, 0.2028, 0.2027, 0.2026, 0.2026, 0.2026, 0.2027, 0.2027, 0.2027, 0.2027",\
                 "0.219, 0.2189, 0.2188, 0.2188, 0.2188, 0.2188, 0.2188, 0.2188, 0.2189, 0.2188",\
                 "0.2386, 0.2387, 0.2386, 0.2386, 0.2385, 0.2385, 0.2386, 0.2386, 0.2386, 0.2387",\
                 "0.2624, 0.2624, 0.2623, 0.2623, 0.2622, 0.2622, 0.2622, 0.2622, 0.2622, 0.2623");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.153, 0.1531, 0.153, 0.153, 0.1538, 0.1545, 0.1563, 0.1574, 0.1603, 0.1705",\
                 "0.1524, 0.1528, 0.1526, 0.1525, 0.1534, 0.1545, 0.1558, 0.1566, 0.1599, 0.1703",\
                 "0.1521, 0.1523, 0.1521, 0.1523, 0.1531, 0.1539, 0.1558, 0.1562, 0.1595, 0.1706",\
                 "0.1541, 0.1541, 0.1541, 0.1541, 0.1547, 0.1555, 0.1573, 0.1582, 0.1617, 0.1734",\
                 "0.159, 0.159, 0.1597, 0.1599, 0.1606, 0.1612, 0.1625, 0.1637, 0.1662, 0.1827",\
                 "0.1685, 0.1686, 0.1689, 0.1688, 0.1705, 0.1709, 0.1718, 0.1734, 0.1763, 0.1948",\
                 "0.1829, 0.1831, 0.1833, 0.1828, 0.1836, 0.1866, 0.1874, 0.1879, 0.1911, 0.2131",\
                 "0.2026, 0.2026, 0.2033, 0.2029, 0.2026, 0.2044, 0.2082, 0.21, 0.2129, 0.2392",\
                 "0.2277, 0.2278, 0.228, 0.2283, 0.2284, 0.228, 0.2306, 0.2368, 0.2409, 0.2794",\
                 "0.2587, 0.2588, 0.259, 0.2596, 0.2591, 0.2591, 0.2597, 0.2639, 0.2768, 0.3346");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.2678, 0.2708, 0.2768, 0.281, 0.2831, 0.2843, 0.285, 0.2854, 0.2857, 0.2858",\
                 "0.2651, 0.2681, 0.2739, 0.2782, 0.2803, 0.2815, 0.2821, 0.2826, 0.2829, 0.283",\
                 "0.263, 0.2656, 0.2713, 0.2754, 0.2777, 0.279, 0.2797, 0.2802, 0.2805, 0.2807",\
                 "0.2661, 0.2679, 0.2723, 0.2765, 0.2792, 0.2809, 0.2818, 0.2825, 0.2829, 0.2832",\
                 "0.2784, 0.2792, 0.2821, 0.2857, 0.2886, 0.2905, 0.2916, 0.2925, 0.2932, 0.2935",\
                 "0.3004, 0.3004, 0.3021, 0.3049, 0.3076, 0.3097, 0.3111, 0.312, 0.3127, 0.3132",\
                 "0.3324, 0.3319, 0.3327, 0.3347, 0.3372, 0.3391, 0.3407, 0.3418, 0.3427, 0.3432",\
                 "0.3755, 0.3746, 0.3746, 0.3761, 0.3781, 0.3801, 0.3818, 0.383, 0.3839, 0.3846",\
                 "0.4308, 0.4296, 0.4289, 0.4297, 0.4313, 0.4333, 0.435, 0.4364, 0.4374, 0.4381",\
                 "0.4987, 0.4974, 0.4959, 0.4963, 0.4976, 0.4993, 0.5009, 0.5024, 0.5035, 0.5044");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.1523, 0.1563, 0.1626, 0.1666, 0.1692, 0.171, 0.1731, 0.1745, 0.1778, 0.19",\
                 "0.1509, 0.1547, 0.1609, 0.165, 0.1679, 0.1699, 0.1719, 0.1743, 0.1758, 0.1879",\
                 "0.1471, 0.15, 0.1554, 0.16, 0.1634, 0.1659, 0.1685, 0.1708, 0.1727, 0.1847",\
                 "0.1459, 0.1481, 0.1527, 0.1574, 0.1614, 0.1649, 0.1677, 0.1708, 0.1736, 0.186",\
                 "0.1505, 0.1523, 0.1567, 0.1616, 0.1656, 0.1695, 0.1721, 0.1755, 0.1784, 0.194",\
                 "0.1633, 0.1651, 0.1683, 0.1723, 0.178, 0.1813, 0.1852, 0.1868, 0.1922, 0.2091",\
                 "0.1859, 0.1871, 0.1904, 0.193, 0.198, 0.2037, 0.2069, 0.2102, 0.2136, 0.2357",\
                 "0.2189, 0.2202, 0.2227, 0.2255, 0.2284, 0.2334, 0.2392, 0.2434, 0.2476, 0.2728",\
                 "0.2633, 0.2643, 0.2668, 0.2692, 0.2717, 0.2758, 0.2804, 0.2874, 0.2937, 0.3308",\
                 "0.3201, 0.3209, 0.3228, 0.3251, 0.3277, 0.3302, 0.3335, 0.3392, 0.3544, 0.4088");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.544, 0.566, 0.633, 0.769, 0.986, 1.243, 1.523, 1.833, 2.179, \
                  2.558");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0.519, 0.534, 0.6, 0.728, 0.884, 1.068, 1.284, 1.534, 1.816, 2.134");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.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.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.3654, 0.4253, 0.5718, 0.7604, 0.9823, 1.243, 1.551, 1.918, 2.355, 2.869",\
                 "0.382, 0.4422, 0.5883, 0.7771, 0.999, 1.259, 1.568, 1.935, 2.371, 2.886",\
                 "0.4426, 0.5026, 0.6486, 0.8372, 1.059, 1.319, 1.627, 1.994, 2.431, 2.946",\
                 "0.5429, 0.6036, 0.7495, 0.9382, 1.16, 1.42, 1.728, 2.095, 2.532, 3.047",\
                 "0.6241, 0.6891, 0.8384, 1.028, 1.249, 1.509, 1.818, 2.185, 2.621, 3.136",\
                 "0.6559, 0.721, 0.8706, 1.059, 1.282, 1.541, 1.848, 2.215, 2.652, 3.167",\
                 "0.6499, 0.7159, 0.8659, 1.055, 1.277, 1.537, 1.845, 2.211, 2.647, 3.162",\
                 "0.6113, 0.6775, 0.8281, 1.018, 1.24, 1.5, 1.808, 2.175, 2.611, 3.126",\
                 "0.5385, 0.6053, 0.7575, 0.9488, 1.172, 1.432, 1.74, 2.107, 2.543, 3.058",\
                 "0.4322, 0.4999, 0.6538, 0.8457, 1.069, 1.331, 1.639, 2.006, 2.442, 2.957");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.3829, 0.444, 0.5981, 0.8323, 1.171, 1.64, 2.256, 3.031, 3.981, 5.111",\
                 "0.398, 0.4591, 0.6132, 0.8475, 1.186, 1.655, 2.271, 3.047, 3.996, 5.126",\
                 "0.4526, 0.5137, 0.6679, 0.9022, 1.241, 1.71, 2.325, 3.102, 4.05, 5.181",\
                 "0.5456, 0.6091, 0.7657, 1.001, 1.34, 1.808, 2.425, 3.201, 4.149, 5.279",\
                 "0.6268, 0.7009, 0.8721, 1.113, 1.453, 1.922, 2.538, 3.315, 4.261, 5.39",\
                 "0.678, 0.7637, 0.954, 1.206, 1.55, 2.019, 2.635, 3.409, 4.358, 5.487",\
                 "0.6992, 0.7973, 1.009, 1.275, 1.623, 2.094, 2.709, 3.484, 4.431, 5.561",\
                 "0.6872, 0.7986, 1.036, 1.319, 1.673, 2.144, 2.76, 3.536, 4.481, 5.609",\
                 "0.6396, 0.7646, 1.03, 1.334, 1.699, 2.172, 2.788, 3.563, 4.509, 5.637",\
                 "0.5544, 0.6935, 0.9869, 1.318, 1.696, 2.175, 2.793, 3.568, 4.514, 5.642");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.192, 0.2492, 0.3883, 0.576, 0.8235, 1.157, 1.602, 2.176, 2.899, 3.778",\
                 "0.1919, 0.2493, 0.3886, 0.576, 0.8235, 1.157, 1.601, 2.176, 2.9, 3.777",\
                 "0.1913, 0.2488, 0.3877, 0.5758, 0.8236, 1.156, 1.602, 2.176, 2.899, 3.778",\
                 "0.1963, 0.251, 0.3888, 0.5748, 0.8246, 1.158, 1.603, 2.178, 2.901, 3.78",\
                 "0.2208, 0.2726, 0.3972, 0.5774, 0.8246, 1.158, 1.602, 2.177, 2.902, 3.779",\
                 "0.225, 0.2748, 0.3992, 0.5794, 0.8242, 1.155, 1.599, 2.177, 2.899, 3.776",\
                 "0.2272, 0.2762, 0.4, 0.5796, 0.825, 1.157, 1.599, 2.172, 2.896, 3.776",\
                 "0.23, 0.2794, 0.4018, 0.5812, 0.8256, 1.158, 1.599, 2.174, 2.896, 3.77",\
                 "0.2342, 0.2832, 0.4054, 0.5844, 0.8286, 1.159, 1.602, 2.175, 2.895, 3.77",\
                 "0.2392, 0.288, 0.4092, 0.5866, 0.8326, 1.163, 1.604, 2.177, 2.9, 3.772");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.1788, 0.2378, 0.4209, 0.7727, 1.353, 2.186, 3.289, 4.674, 6.374, 8.402",\
                 "0.1794, 0.2392, 0.4209, 0.7729, 1.353, 2.186, 3.29, 4.677, 6.374, 8.403",\
                 "0.1794, 0.2379, 0.4219, 0.7722, 1.354, 2.184, 3.288, 4.674, 6.382, 8.402",\
                 "0.191, 0.2461, 0.4244, 0.774, 1.351, 2.186, 3.29, 4.675, 6.373, 8.402",\
                 "0.228, 0.2832, 0.4506, 0.7854, 1.356, 2.186, 3.291, 4.674, 6.375, 8.399",\
                 "0.2672, 0.3262, 0.4876, 0.8068, 1.363, 2.186, 3.285, 4.675, 6.376, 8.402",\
                 "0.3086, 0.3718, 0.5324, 0.835, 1.376, 2.193, 3.294, 4.683, 6.381, 8.408",\
                 "0.3532, 0.4228, 0.5866, 0.8712, 1.394, 2.2, 3.292, 4.681, 6.376, 8.394",\
                 "0.4004, 0.478, 0.645, 0.9176, 1.419, 2.21, 3.298, 4.682, 6.375, 8.412",\
                 "0.4474, 0.5332, 0.7122, 0.9788, 1.454, 2.228, 3.306, 4.686, 6.38, 8.397");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.5168, 0.5811, 0.7322, 0.922, 1.143, 1.403, 1.711, 2.078, 2.515, 3.03",\
                 "0.5302, 0.5946, 0.7457, 0.9356, 1.157, 1.417, 1.725, 2.092, 2.529, 3.044",\
                 "0.5909, 0.6551, 0.8063, 0.9965, 1.219, 1.478, 1.787, 2.154, 2.59, 3.105",\
                 "0.7049, 0.7698, 0.9223, 1.114, 1.337, 1.598, 1.906, 2.274, 2.71, 3.226",\
                 "0.8488, 0.9175, 1.078, 1.276, 1.502, 1.764, 2.074, 2.441, 2.878, 3.394",\
                 "1.023, 1.095, 1.262, 1.468, 1.701, 1.967, 2.279, 2.647, 3.085, 3.6",\
                 "1.238, 1.314, 1.489, 1.703, 1.941, 2.212, 2.528, 2.899, 3.338, 3.854",\
                 "1.492, 1.573, 1.761, 1.986, 2.233, 2.511, 2.831, 3.205, 3.646, 4.163",\
                 "1.783, 1.872, 2.074, 2.317, 2.579, 2.868, 3.196, 3.575, 4.018, 4.537",\
                 "2.11, 2.207, 2.426, 2.69, 2.972, 3.279, 3.621, 4.011, 4.46, 4.982");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.4886, 0.5517, 0.708, 0.9437, 1.284, 1.753, 2.37, 3.147, 4.094, 5.222",\
                 "0.5004, 0.5634, 0.7197, 0.9555, 1.295, 1.765, 2.382, 3.159, 4.106, 5.236",\
                 "0.5382, 0.6006, 0.7566, 0.9932, 1.334, 1.804, 2.421, 3.198, 4.145, 5.277",\
                 "0.5795, 0.6428, 0.7997, 1.037, 1.378, 1.85, 2.467, 3.244, 4.19, 5.322",\
                 "0.6036, 0.6685, 0.8296, 1.07, 1.413, 1.884, 2.501, 3.278, 4.227, 5.356",\
                 "0.6122, 0.6796, 0.8447, 1.088, 1.432, 1.905, 2.523, 3.301, 4.249, 5.38",\
                 "0.599, 0.6713, 0.8446, 1.093, 1.44, 1.913, 2.532, 3.309, 4.257, 5.386",\
                 "0.5563, 0.6348, 0.8202, 1.08, 1.433, 1.909, 2.528, 3.306, 4.254, 5.383",\
                 "0.4798, 0.5652, 0.7653, 1.04, 1.407, 1.89, 2.512, 3.29, 4.239, 5.368",\
                 "0.3688, 0.4619, 0.6774, 0.9689, 1.352, 1.851, 2.482, 3.263, 4.212, 5.342");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.1914, 0.2473, 0.3835, 0.5706, 0.819, 1.154, 1.599, 2.174, 2.898, 3.779",\
                 "0.1914, 0.2474, 0.3832, 0.5702, 0.8194, 1.154, 1.601, 2.176, 2.899, 3.774",\
                 "0.1926, 0.2481, 0.3848, 0.5716, 0.8206, 1.155, 1.6, 2.177, 2.9, 3.779",\
                 "0.1998, 0.2554, 0.39, 0.5756, 0.8226, 1.156, 1.6, 2.175, 2.9, 3.779",\
                 "0.222, 0.2784, 0.4116, 0.5892, 0.8318, 1.162, 1.605, 2.178, 2.902, 3.778",\
                 "0.2404, 0.299, 0.434, 0.6118, 0.8508, 1.175, 1.613, 2.181, 2.904, 3.78",\
                 "0.2616, 0.322, 0.4584, 0.6342, 0.872, 1.195, 1.629, 2.194, 2.912, 3.785",\
                 "0.2884, 0.352, 0.4922, 0.6682, 0.9018, 1.22, 1.649, 2.212, 2.922, 3.79",\
                 "0.3206, 0.3866, 0.535, 0.7202, 0.9508, 1.264, 1.684, 2.238, 2.939, 3.804",\
                 "0.356, 0.4276, 0.5856, 0.7836, 1.021, 1.333, 1.746, 2.288, 2.978, 3.828");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07784, 0.2809, 0.6686, 1.273, 2.12, 3.235, 4.64, 6.356, 8.4");
          index_2("0.0235, 0.04136, 0.1041, 0.2238, 0.4104, 0.6721, 1.017, 1.45, 1.98, 2.612");
          values("0.1661, 0.2246, 0.4128, 0.7684, 1.352, 2.187, 3.285, 4.675, 6.377, 8.4",\
                 "0.1671, 0.225, 0.4122, 0.7686, 1.352, 2.187, 3.29, 4.682, 6.376, 8.404",\
                 "0.1668, 0.2268, 0.4135, 0.7691, 1.349, 2.183, 3.29, 4.682, 6.374, 8.398",\
                 "0.1721, 0.2316, 0.417, 0.77, 1.349, 2.187, 3.29, 4.682, 6.375, 8.404",\
                 "0.181, 0.2408, 0.4248, 0.7766, 1.351, 2.187, 3.288, 4.676, 6.377, 8.401",\
                 "0.1926, 0.2522, 0.4356, 0.7828, 1.359, 2.187, 3.288, 4.674, 6.374, 8.402",\
                 "0.2102, 0.2702, 0.4532, 0.7968, 1.364, 2.192, 3.292, 4.675, 6.378, 8.392",\
                 "0.235, 0.2964, 0.4806, 0.8222, 1.381, 2.2, 3.294, 4.681, 6.386, 8.398",\
                 "0.2622, 0.325, 0.515, 0.8626, 1.417, 2.223, 3.304, 4.684, 6.377, 8.396",\
                 "0.2928, 0.3582, 0.5554, 0.9082, 1.473, 2.271, 3.335, 4.7, 6.384, 8.399");
        }
      }
    }
  }

