/*
 * 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_2) {
    area : 32.928000 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.08219, 0.08063, 0.08113, 0.08611, 0.09521, 0.1088, 0.1278, 0.1537, \
                  0.1874, 0.2296");
        }

        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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.1226, 0.1206, 0.1205, 0.1268, 0.141, 0.1641, 0.197, 0.2403, \
                  0.2948, 0.361");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.0129, 0.01293, 0.01288, 0.0129, 0.01293, 0.01292, 0.01293, 0.01292, \
                  0.01291, 0.0129");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.01287, -0.01287, -0.01285, -0.01286, -0.01289, -0.01288, -0.01289, \
                  -0.01289, -0.01289, -0.01289");
        }
      }
    }

    pin(Z) {
      capacitance : 0.003786 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.6861 ;
      max_transition : 15.6 ;
      min_capacitance : 0.004786 ;
      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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.1054, 0.1054, 0.1054, 0.1053, 0.1053, 0.1054, 0.1054, 0.1054, 0.1054, 0.1054",\
                 "0.1057, 0.1057, 0.1057, 0.1056, 0.1057, 0.1057, 0.1057, 0.1057, 0.1057, 0.1057",\
                 "0.1091, 0.1092, 0.1091, 0.1091, 0.1091, 0.1092, 0.1092, 0.1092, 0.1092, 0.1092",\
                 "0.1162, 0.1162, 0.1161, 0.1161, 0.1161, 0.1162, 0.1162, 0.1162, 0.1162, 0.1162",\
                 "0.1281, 0.1281, 0.1281, 0.128, 0.128, 0.1281, 0.1281, 0.1281, 0.1281, 0.1281",\
                 "0.1456, 0.1456, 0.1455, 0.1455, 0.1456, 0.1456, 0.1456, 0.1456, 0.1456, 0.1456",\
                 "0.1689, 0.1689, 0.1688, 0.1688, 0.1688, 0.1689, 0.1689, 0.1689, 0.1689, 0.1689",\
                 "0.1985, 0.1985, 0.1985, 0.1985, 0.1985, 0.1985, 0.1985, 0.1985, 0.1985, 0.1985",\
                 "0.2346, 0.2346, 0.2346, 0.2346, 0.2346, 0.2346, 0.2346, 0.2346, 0.2346, 0.2346",\
                 "0.2775, 0.2775, 0.2775, 0.2774, 0.2774, 0.2775, 0.2775, 0.2775, 0.2775, 0.2773");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.06987, 0.06994, 0.06991, 0.07006, 0.07062, 0.07107, 0.07209, 0.07646, 0.1191, 0.3227",\
                 "0.06903, 0.0691, 0.06907, 0.06922, 0.06978, 0.07023, 0.07116, 0.07579, 0.1191, 0.3259",\
                 "0.06929, 0.06933, 0.06933, 0.06949, 0.06984, 0.07071, 0.0714, 0.07586, 0.1232, 0.3412",\
                 "0.07456, 0.0745, 0.07468, 0.07483, 0.0753, 0.07578, 0.07704, 0.0827, 0.1358, 0.3725",\
                 "0.08695, 0.08695, 0.08677, 0.08743, 0.08778, 0.08847, 0.0891, 0.09583, 0.1593, 0.4234",\
                 "0.1077, 0.1078, 0.1075, 0.1077, 0.1088, 0.1092, 0.1097, 0.1183, 0.1976, 0.5064",\
                 "0.1373, 0.1373, 0.1373, 0.1374, 0.1375, 0.1393, 0.1404, 0.1537, 0.2575, 0.6254",\
                 "0.1764, 0.1764, 0.1765, 0.1765, 0.1765, 0.1771, 0.1802, 0.2034, 0.3497, 0.7952",\
                 "0.2254, 0.2254, 0.2256, 0.2257, 0.2254, 0.2257, 0.229, 0.2722, 0.4889, 1.032",\
                 "0.2848, 0.2849, 0.2851, 0.285, 0.285, 0.2851, 0.2921, 0.3739, 0.7031, 1.336");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.1705, 0.1703, 0.171, 0.1719, 0.1725, 0.1729, 0.1731, 0.1733, 0.1734, 0.1734",\
                 "0.1696, 0.1695, 0.1701, 0.171, 0.1716, 0.172, 0.1723, 0.1724, 0.1725, 0.1725",\
                 "0.169, 0.1688, 0.1693, 0.1703, 0.171, 0.1714, 0.1716, 0.1718, 0.1718, 0.1719",\
                 "0.1725, 0.172, 0.1718, 0.1724, 0.1731, 0.1736, 0.1738, 0.174, 0.1741, 0.1742",\
                 "0.1836, 0.1821, 0.1804, 0.18, 0.1802, 0.1805, 0.1806, 0.1808, 0.1809, 0.1809",\
                 "0.2002, 0.198, 0.1948, 0.1933, 0.1928, 0.1928, 0.1928, 0.1928, 0.1929, 0.1929",\
                 "0.2226, 0.2196, 0.2151, 0.2124, 0.2112, 0.2108, 0.2106, 0.2106, 0.2105, 0.2105",\
                 "0.2514, 0.2477, 0.2418, 0.238, 0.236, 0.2351, 0.2347, 0.2345, 0.2344, 0.2342",\
                 "0.287, 0.2825, 0.2756, 0.2705, 0.2677, 0.2662, 0.2654, 0.2651, 0.2648, 0.2643",\
                 "0.33, 0.3249, 0.3165, 0.3103, 0.3065, 0.3044, 0.3032, 0.3025, 0.3019, 0.3005");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.07528, 0.07649, 0.07889, 0.08114, 0.08266, 0.08367, 0.08499, 0.08996, 0.1353, 0.3476",\
                 "0.07492, 0.07607, 0.07841, 0.08054, 0.08221, 0.08328, 0.08466, 0.08958, 0.1366, 0.3512",\
                 "0.07429, 0.0754, 0.07742, 0.07937, 0.08101, 0.08226, 0.08376, 0.08928, 0.1394, 0.3672",\
                 "0.07533, 0.07592, 0.07762, 0.07943, 0.08119, 0.08283, 0.0844, 0.09094, 0.1484, 0.3974",\
                 "0.08072, 0.08077, 0.08158, 0.08342, 0.08494, 0.08652, 0.08837, 0.09665, 0.1648, 0.4477",\
                 "0.09154, 0.09111, 0.0909, 0.09179, 0.0943, 0.09519, 0.09669, 0.108, 0.1947, 0.5254",\
                 "0.1085, 0.1074, 0.1064, 0.1062, 0.1073, 0.1099, 0.1117, 0.1276, 0.2443, 0.638",\
                 "0.1319, 0.1302, 0.1281, 0.1272, 0.127, 0.1283, 0.1325, 0.1601, 0.3241, 0.8023",\
                 "0.162, 0.1597, 0.1567, 0.1546, 0.1541, 0.1542, 0.1588, 0.2119, 0.4567, 1.029",\
                 "0.1991, 0.196, 0.1918, 0.1894, 0.1879, 0.1874, 0.1968, 0.2983, 0.6664, 1.316");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.389, 0.427, 0.558, 0.802, 1.088, 1.424, 1.818, 2.272, 2.788, \
                  3.366");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.529, 0.555, 0.686, 0.916, 1.193, 1.53, 1.933, 2.399, 2.933, \
                  3.541");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.4211, 0.5235, 0.76, 1.065, 1.445, 1.922, 2.521, 3.263, 4.166, 5.24",\
                 "0.4533, 0.5559, 0.7925, 1.098, 1.478, 1.955, 2.554, 3.296, 4.199, 5.274",\
                 "0.5689, 0.669, 0.9015, 1.205, 1.584, 2.061, 2.66, 3.402, 4.304, 5.379",\
                 "0.7261, 0.8255, 1.049, 1.347, 1.724, 2.2, 2.798, 3.54, 4.443, 5.516",\
                 "0.7889, 0.8861, 1.107, 1.403, 1.777, 2.251, 2.848, 3.591, 4.493, 5.567",\
                 "0.7782, 0.8738, 1.093, 1.387, 1.761, 2.235, 2.831, 3.571, 4.472, 5.548",\
                 "0.7069, 0.802, 1.018, 1.31, 1.682, 2.154, 2.75, 3.49, 4.39, 5.463",\
                 "0.5744, 0.6698, 0.8856, 1.176, 1.545, 2.016, 2.611, 3.351, 4.252, 5.324",\
                 "0.3777, 0.4735, 0.6898, 0.9791, 1.348, 1.817, 2.412, 3.151, 4.053, 5.126",\
                 "0.1101, 0.2077, 0.4249, 0.7141, 1.082, 1.552, 2.146, 2.886, 3.787, 4.86");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.3691, 0.4615, 0.7097, 1.125, 1.759, 2.645, 3.814, 5.287, 7.085, 9.23",\
                 "0.3958, 0.4881, 0.7363, 1.152, 1.785, 2.672, 3.841, 5.314, 7.111, 9.257",\
                 "0.4878, 0.5807, 0.8293, 1.245, 1.878, 2.765, 3.935, 5.404, 7.203, 9.348",\
                 "0.581, 0.6819, 0.939, 1.358, 1.991, 2.878, 4.048, 5.519, 7.315, 9.464",\
                 "0.6319, 0.746, 1.015, 1.438, 2.075, 2.962, 4.129, 5.602, 7.402, 9.539",\
                 "0.6328, 0.7661, 1.055, 1.484, 2.121, 3.01, 4.178, 5.649, 7.441, 9.584",\
                 "0.5762, 0.7321, 1.051, 1.492, 2.132, 3.02, 4.189, 5.66, 7.456, 9.596",\
                 "0.4593, 0.6382, 0.9951, 1.454, 2.102, 2.993, 4.162, 5.633, 7.429, 9.567",\
                 "0.2781, 0.4817, 0.8808, 1.363, 2.023, 2.923, 4.094, 5.567, 7.363, 9.501",\
                 "0.0282, 0.2583, 0.7041, 1.215, 1.889, 2.802, 3.984, 5.457, 7.253, 9.392");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.2314, 0.3289, 0.5457, 0.8708, 1.36, 2.058, 3.013, 4.246, 5.769, 7.603",\
                 "0.2322, 0.3295, 0.5467, 0.8715, 1.359, 2.058, 3.013, 4.243, 5.772, 7.604",\
                 "0.2244, 0.3212, 0.5406, 0.8688, 1.358, 2.056, 3.01, 4.247, 5.774, 7.604",\
                 "0.2368, 0.3166, 0.5232, 0.8572, 1.351, 2.054, 3.011, 4.243, 5.769, 7.598",\
                 "0.2322, 0.311, 0.5204, 0.8522, 1.34, 2.045, 3.005, 4.246, 5.771, 7.604",\
                 "0.2282, 0.3072, 0.5162, 0.85, 1.343, 2.043, 2.996, 4.238, 5.77, 7.595",\
                 "0.2272, 0.3046, 0.5116, 0.8442, 1.336, 2.041, 2.997, 4.23, 5.753, 7.587",\
                 "0.229, 0.305, 0.5088, 0.8382, 1.331, 2.034, 2.997, 4.233, 5.753, 7.576",\
                 "0.232, 0.3068, 0.5084, 0.8364, 1.327, 2.031, 2.994, 4.23, 5.754, 7.582",\
                 "0.238, 0.3108, 0.5094, 0.8352, 1.326, 2.03, 2.992, 4.232, 5.756, 7.58");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.2002, 0.3067, 0.6512, 1.337, 2.449, 4.01, 6.074, 8.671, 11.84, 15.63",\
                 "0.2, 0.3066, 0.651, 1.337, 2.449, 4.01, 6.074, 8.672, 11.85, 15.63",\
                 "0.2029, 0.3081, 0.6516, 1.337, 2.444, 4.012, 6.073, 8.672, 11.85, 15.62",\
                 "0.2286, 0.328, 0.664, 1.341, 2.448, 4.01, 6.072, 8.672, 11.85, 15.64",\
                 "0.2686, 0.3618, 0.6798, 1.352, 2.452, 4.01, 6.07, 8.67, 11.84, 15.61",\
                 "0.3198, 0.4114, 0.7074, 1.36, 2.456, 4.017, 6.072, 8.661, 11.84, 15.62",\
                 "0.3756, 0.4748, 0.752, 1.38, 2.463, 4.019, 6.076, 8.666, 11.85, 15.61",\
                 "0.435, 0.543, 0.8132, 1.412, 2.481, 4.027, 6.078, 8.67, 11.83, 15.61",\
                 "0.4972, 0.6166, 0.8858, 1.458, 2.516, 4.054, 6.09, 8.674, 11.84, 15.61",\
                 "0.5658, 0.6974, 0.971, 1.51, 2.556, 4.1, 6.13, 8.688, 11.84, 15.61");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.7582, 0.8709, 1.127, 1.442, 1.826, 2.305, 2.904, 3.647, 4.549, 5.624",\
                 "0.7902, 0.9028, 1.159, 1.474, 1.858, 2.337, 2.936, 3.679, 4.581, 5.656",\
                 "0.9159, 1.028, 1.285, 1.6, 1.984, 2.463, 3.062, 3.805, 4.707, 5.782",\
                 "1.165, 1.277, 1.534, 1.85, 2.235, 2.715, 3.314, 4.057, 4.959, 6.035",\
                 "1.486, 1.602, 1.875, 2.203, 2.592, 3.073, 3.673, 4.415, 5.318, 6.393",\
                 "1.85, 1.97, 2.26, 2.607, 3.009, 3.496, 4.099, 4.842, 5.744, 6.818",\
                 "2.268, 2.394, 2.699, 3.065, 3.48, 3.976, 4.583, 5.329, 6.231, 7.305",\
                 "2.75, 2.883, 3.206, 3.591, 4.02, 4.524, 5.136, 5.884, 6.787, 7.862",\
                 "3.295, 3.435, 3.778, 4.187, 4.634, 5.15, 5.769, 6.519, 7.424, 8.499",\
                 "3.902, 4.051, 4.415, 4.856, 5.325, 5.858, 6.488, 7.244, 8.151, 9.226");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.6114, 0.708, 0.9625, 1.383, 2.019, 2.908, 4.078, 5.551, 7.349, 9.494",\
                 "0.6401, 0.7365, 0.9908, 1.411, 2.047, 2.935, 4.105, 5.58, 7.379, 9.52",\
                 "0.7395, 0.8357, 1.089, 1.509, 2.146, 3.035, 4.203, 5.679, 7.47, 9.615",\
                 "0.883, 0.9825, 1.239, 1.66, 2.297, 3.187, 4.356, 5.831, 7.629, 9.767",\
                 "1.001, 1.108, 1.376, 1.802, 2.439, 3.33, 4.5, 5.97, 7.772, 9.909",\
                 "1.083, 1.198, 1.48, 1.911, 2.55, 3.44, 4.608, 6.082, 7.877, 10.03",\
                 "1.123, 1.247, 1.546, 1.985, 2.624, 3.513, 4.683, 6.153, 7.952, 10.09",\
                 "1.114, 1.247, 1.565, 2.018, 2.661, 3.55, 4.719, 6.191, 7.985, 10.13",\
                 "1.049, 1.189, 1.529, 2, 2.654, 3.547, 4.717, 6.187, 7.982, 10.12",\
                 "0.9251, 1.073, 1.434, 1.926, 2.594, 3.5, 4.674, 6.145, 7.941, 10.08");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.2579, 0.3641, 0.5736, 0.885, 1.365, 2.06, 3.015, 4.245, 5.773, 7.597",\
                 "0.2578, 0.364, 0.5736, 0.885, 1.366, 2.06, 3.014, 4.248, 5.773, 7.604",\
                 "0.2578, 0.3644, 0.5744, 0.8854, 1.366, 2.06, 3.012, 4.245, 5.774, 7.604",\
                 "0.263, 0.3712, 0.5804, 0.889, 1.369, 2.06, 3.015, 4.242, 5.774, 7.603",\
                 "0.291, 0.4064, 0.6222, 0.9152, 1.382, 2.069, 3.018, 4.247, 5.775, 7.603",\
                 "0.3218, 0.4402, 0.6788, 0.9666, 1.417, 2.091, 3.027, 4.252, 5.775, 7.599",\
                 "0.3548, 0.4752, 0.7318, 1.017, 1.458, 2.123, 3.046, 4.26, 5.773, 7.594",\
                 "0.3912, 0.5158, 0.7888, 1.069, 1.504, 2.157, 3.065, 4.274, 5.778, 7.6",\
                 "0.432, 0.564, 0.856, 1.14, 1.558, 2.198, 3.094, 4.288, 5.794, 7.61",\
                 "0.48, 0.618, 0.932, 1.226, 1.636, 2.262, 3.146, 4.318, 5.804, 7.614");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.004786, 0.009488, 0.02599, 0.05752, 0.1066, 0.1755, 0.2662, 0.3804, 0.5199, 0.6861");
          values("0.2006, 0.305, 0.6479, 1.338, 2.449, 4.01, 6.074, 8.671, 11.84, 15.63",\
                 "0.1998, 0.3049, 0.6486, 1.336, 2.449, 4.01, 6.073, 8.667, 11.85, 15.63",\
                 "0.2002, 0.3054, 0.6488, 1.336, 2.445, 4.01, 6.072, 8.67, 11.84, 15.63",\
                 "0.2158, 0.3168, 0.654, 1.337, 2.444, 4.008, 6.069, 8.675, 11.85, 15.62",\
                 "0.2414, 0.346, 0.6758, 1.346, 2.446, 4.015, 6.071, 8.667, 11.84, 15.62",\
                 "0.269, 0.3774, 0.7036, 1.359, 2.451, 4.013, 6.077, 8.663, 11.83, 15.63",\
                 "0.298, 0.414, 0.739, 1.375, 2.457, 4.017, 6.074, 8.659, 11.82, 15.62",\
                 "0.3302, 0.4546, 0.7838, 1.407, 2.469, 4.018, 6.074, 8.667, 11.84, 15.64",\
                 "0.365, 0.4964, 0.8382, 1.451, 2.5, 4.039, 6.08, 8.664, 11.83, 15.63",\
                 "0.4, 0.538, 0.894, 1.5, 2.546, 4.076, 6.1, 8.674, 11.83, 15.6");
        }
      }
    }
  }

