/*
 * 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_3) {
    area : 53.625600 ;

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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.01292 ;
      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.0564, 0.05562, 0.05542, 0.05757, 0.06204, 0.06898, 0.07888, \
                  0.09258, 0.1107, 0.1337");
        }

        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.07648, 0.07545, 0.07481, 0.07707, 0.08339, 0.09465, 0.1112, \
                  0.1337, 0.1624, 0.1975");
        }

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

    pin(I) {
      capacitance : 0.009905 ;
      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.014, 0.014, 0.01402, 0.014, 0.01398, 0.01401, 0.014, 0.01401, \
                  0.014, 0.01401");
        }

        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.01393, -0.01393, -0.01396, -0.01393, -0.01393, -0.01398, -0.01397, \
                  -0.01398, -0.01398, -0.01398");
        }
      }
    }

    pin(Z) {
      capacitance : 0.009113 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.9809 ;
      max_transition : 8.4 ;
      min_capacitance : 0.01011 ;
      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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.0815, 0.08144, 0.08143, 0.0814, 0.08141, 0.08142, 0.08145, 0.08146, 0.08147, 0.08147",\
                 "0.08145, 0.08142, 0.0814, 0.08141, 0.08138, 0.08146, 0.08147, 0.08148, 0.08149, 0.08147",\
                 "0.08292, 0.08289, 0.08291, 0.08288, 0.08289, 0.08291, 0.08294, 0.08296, 0.08296, 0.08296",\
                 "0.08618, 0.08624, 0.08617, 0.08615, 0.08614, 0.08616, 0.08618, 0.08619, 0.0862, 0.08621",\
                 "0.0923, 0.09226, 0.09223, 0.09223, 0.09221, 0.09222, 0.09222, 0.09221, 0.09222, 0.09222",\
                 "0.1015, 0.1015, 0.1015, 0.1014, 0.1015, 0.1015, 0.1015, 0.1014, 0.1015, 0.1015",\
                 "0.1141, 0.1141, 0.1141, 0.1141, 0.114, 0.1141, 0.1141, 0.1141, 0.1141, 0.1141",\
                 "0.1302, 0.1302, 0.1302, 0.1301, 0.1301, 0.1301, 0.1301, 0.1302, 0.1302, 0.1302",\
                 "0.15, 0.15, 0.15, 0.1499, 0.1499, 0.1499, 0.1499, 0.1499, 0.15, 0.15",\
                 "0.1737, 0.1737, 0.1737, 0.1736, 0.1736, 0.1736, 0.1736, 0.1736, 0.1736, 0.1736");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.06382, 0.06393, 0.06381, 0.06392, 0.06404, 0.06443, 0.0649, 0.06544, 0.0666, 0.07049",\
                 "0.06328, 0.06336, 0.06329, 0.06338, 0.0635, 0.06404, 0.06448, 0.06544, 0.06601, 0.0699",\
                 "0.06294, 0.06285, 0.06299, 0.06301, 0.06313, 0.0636, 0.06415, 0.06485, 0.06601, 0.07008",\
                 "0.0649, 0.06497, 0.06494, 0.06508, 0.06526, 0.06574, 0.06625, 0.06663, 0.06788, 0.07322",\
                 "0.07061, 0.07068, 0.07052, 0.07104, 0.07109, 0.07148, 0.07197, 0.07257, 0.07343, 0.07912",\
                 "0.08096, 0.081, 0.081, 0.08086, 0.0816, 0.08209, 0.08228, 0.08287, 0.08382, 0.08935",\
                 "0.09621, 0.09628, 0.09629, 0.09609, 0.09633, 0.0973, 0.09801, 0.09811, 0.09916, 0.1063",\
                 "0.1168, 0.1168, 0.1169, 0.1168, 0.1168, 0.1173, 0.1188, 0.1195, 0.1205, 0.1293",\
                 "0.1427, 0.1428, 0.143, 0.1429, 0.1427, 0.1428, 0.1437, 0.1456, 0.1481, 0.1605",\
                 "0.1744, 0.1745, 0.1745, 0.1747, 0.1747, 0.1747, 0.1748, 0.1761, 0.1802, 0.2005");
        }
      }

      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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.1273, 0.1278, 0.1292, 0.1304, 0.1311, 0.1316, 0.1319, 0.1321, 0.1322, 0.1322",\
                 "0.1266, 0.1272, 0.1285, 0.1297, 0.1304, 0.1309, 0.1312, 0.1314, 0.1315, 0.1315",\
                 "0.1259, 0.1263, 0.1276, 0.1288, 0.1296, 0.1301, 0.1304, 0.1306, 0.1307, 0.1308",\
                 "0.1276, 0.1277, 0.1286, 0.1297, 0.1305, 0.131, 0.1314, 0.1316, 0.1318, 0.1319",\
                 "0.1341, 0.1337, 0.1335, 0.1339, 0.1345, 0.1351, 0.1354, 0.1357, 0.1358, 0.1359",\
                 "0.1445, 0.1437, 0.1426, 0.1423, 0.1426, 0.1428, 0.1432, 0.1434, 0.1436, 0.1437",\
                 "0.1593, 0.158, 0.1561, 0.1552, 0.1549, 0.1551, 0.1552, 0.1554, 0.1555, 0.1556",\
                 "0.1788, 0.177, 0.1743, 0.1725, 0.1719, 0.1717, 0.1718, 0.1718, 0.1719, 0.172",\
                 "0.2033, 0.2011, 0.1976, 0.1951, 0.1939, 0.1933, 0.1932, 0.1932, 0.1933, 0.1933",\
                 "0.2332, 0.2308, 0.2264, 0.2231, 0.2212, 0.2203, 0.2199, 0.2198, 0.2197, 0.2197");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.06731, 0.06834, 0.07063, 0.07265, 0.07399, 0.0751, 0.07587, 0.07663, 0.07759, 0.08206",\
                 "0.06689, 0.06783, 0.07015, 0.07217, 0.07356, 0.07467, 0.07555, 0.07623, 0.07779, 0.08206",\
                 "0.06609, 0.06695, 0.06892, 0.07084, 0.07225, 0.07354, 0.07454, 0.07524, 0.07739, 0.08184",\
                 "0.06604, 0.06667, 0.06828, 0.07003, 0.0716, 0.07308, 0.07424, 0.07524, 0.07709, 0.08182",\
                 "0.06866, 0.06906, 0.07032, 0.07205, 0.07342, 0.07491, 0.07626, 0.07762, 0.07867, 0.08454",\
                 "0.07493, 0.07516, 0.07575, 0.077, 0.07889, 0.08013, 0.08145, 0.08257, 0.08411, 0.09179",\
                 "0.08547, 0.08539, 0.08562, 0.08621, 0.08754, 0.08976, 0.09129, 0.09167, 0.09351, 0.1022",\
                 "0.1008, 0.1004, 0.1001, 0.1002, 0.101, 0.1025, 0.1051, 0.1063, 0.1076, 0.118",\
                 "0.121, 0.1202, 0.1193, 0.1192, 0.1193, 0.12, 0.1216, 0.1248, 0.1269, 0.1415",\
                 "0.1465, 0.1452, 0.1436, 0.1431, 0.143, 0.1434, 0.1442, 0.1461, 0.1515, 0.173");
        }
      }

      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.284, 0.304, 0.373, 0.508, 0.675, 0.862, 1.076, 1.319, 1.592, \
                  1.896");
        }

        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.387, 0.402, 0.468, 0.594, 0.746, 0.926, 1.138, 1.38, 1.655, \
                  1.962");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.3067, 0.3556, 0.4773, 0.6383, 0.8347, 1.074, 1.367, 1.725, 2.156, 2.668",\
                 "0.3232, 0.3723, 0.494, 0.6549, 0.8514, 1.091, 1.384, 1.741, 2.172, 2.684",\
                 "0.3834, 0.4319, 0.5526, 0.7127, 0.9092, 1.149, 1.441, 1.799, 2.23, 2.742",\
                 "0.4795, 0.5275, 0.645, 0.803, 0.9981, 1.237, 1.529, 1.887, 2.318, 2.829",\
                 "0.5405, 0.5881, 0.704, 0.8605, 1.054, 1.292, 1.584, 1.941, 2.372, 2.884",\
                 "0.5585, 0.6058, 0.721, 0.877, 1.071, 1.309, 1.6, 1.955, 2.386, 2.898",\
                 "0.544, 0.5912, 0.7066, 0.862, 1.055, 1.293, 1.584, 1.94, 2.37, 2.881",\
                 "0.4983, 0.5456, 0.6611, 0.8165, 1.009, 1.246, 1.538, 1.894, 2.323, 2.835",\
                 "0.4209, 0.4692, 0.5853, 0.7401, 0.9326, 1.169, 1.461, 1.817, 2.246, 2.757",\
                 "0.3087, 0.3581, 0.4755, 0.6313, 0.824, 1.06, 1.351, 1.708, 2.138, 2.649");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.2904, 0.3399, 0.4771, 0.7012, 1.036, 1.504, 2.12, 2.896, 3.841, 4.97",\
                 "0.3045, 0.3541, 0.4912, 0.7153, 1.051, 1.518, 2.134, 2.911, 3.856, 4.986",\
                 "0.3557, 0.4052, 0.5424, 0.7665, 1.102, 1.57, 2.185, 2.96, 3.907, 5.038",\
                 "0.4248, 0.4776, 0.6188, 0.8448, 1.18, 1.648, 2.264, 3.04, 3.984, 5.117",\
                 "0.4726, 0.5316, 0.6807, 0.911, 1.248, 1.716, 2.332, 3.108, 4.055, 5.185",\
                 "0.4961, 0.5632, 0.7232, 0.958, 1.297, 1.766, 2.382, 3.157, 4.102, 5.233",\
                 "0.492, 0.569, 0.7449, 0.9872, 1.327, 1.797, 2.414, 3.189, 4.134, 5.263",\
                 "0.4571, 0.5451, 0.741, 0.9952, 1.34, 1.81, 2.426, 3.202, 4.148, 5.276",\
                 "0.3896, 0.4884, 0.708, 0.9778, 1.33, 1.804, 2.421, 3.197, 4.143, 5.271",\
                 "0.2882, 0.3988, 0.6424, 0.9317, 1.293, 1.773, 2.394, 3.171, 4.119, 5.247");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.167, 0.2133, 0.3279, 0.4965, 0.7348, 1.071, 1.524, 2.115, 2.851, 3.732",\
                 "0.167, 0.2135, 0.328, 0.4961, 0.7362, 1.073, 1.525, 2.114, 2.848, 3.737",\
                 "0.1641, 0.2113, 0.3262, 0.4951, 0.7338, 1.072, 1.526, 2.114, 2.848, 3.736",\
                 "0.1672, 0.2088, 0.3194, 0.49, 0.7324, 1.069, 1.524, 2.113, 2.846, 3.737",\
                 "0.1714, 0.2096, 0.3166, 0.4852, 0.7256, 1.066, 1.521, 2.114, 2.849, 3.737",\
                 "0.1698, 0.2084, 0.3162, 0.4846, 0.7278, 1.062, 1.516, 2.11, 2.848, 3.733",\
                 "0.1704, 0.2086, 0.3148, 0.4846, 0.7264, 1.064, 1.518, 2.105, 2.839, 3.73",\
                 "0.1722, 0.2098, 0.3148, 0.4828, 0.7242, 1.06, 1.515, 2.105, 2.839, 3.722",\
                 "0.1758, 0.213, 0.316, 0.4832, 0.724, 1.062, 1.516, 2.108, 2.84, 3.723",\
                 "0.1808, 0.2178, 0.3184, 0.4838, 0.7244, 1.06, 1.517, 2.108, 2.842, 3.724");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.1581, 0.2153, 0.4001, 0.7608, 1.347, 2.183, 3.285, 4.678, 6.371, 8.399",\
                 "0.1577, 0.2152, 0.4, 0.7608, 1.347, 2.184, 3.287, 4.677, 6.373, 8.4",\
                 "0.1589, 0.2152, 0.4, 0.7609, 1.348, 2.188, 3.287, 4.675, 6.374, 8.402",\
                 "0.1726, 0.2273, 0.4061, 0.7626, 1.347, 2.189, 3.292, 4.678, 6.37, 8.402",\
                 "0.1972, 0.25, 0.4222, 0.7736, 1.355, 2.189, 3.286, 4.683, 6.375, 8.395",\
                 "0.2286, 0.2792, 0.4418, 0.7816, 1.358, 2.192, 3.288, 4.675, 6.373, 8.4",\
                 "0.2648, 0.318, 0.4718, 0.7958, 1.365, 2.193, 3.293, 4.686, 6.383, 8.393",\
                 "0.305, 0.362, 0.5134, 0.8198, 1.373, 2.195, 3.295, 4.681, 6.385, 8.394",\
                 "0.3472, 0.4088, 0.5632, 0.8534, 1.393, 2.208, 3.303, 4.684, 6.376, 8.398",\
                 "0.3894, 0.4584, 0.6186, 0.8962, 1.425, 2.228, 3.311, 4.69, 6.38, 8.398");
        }
      }

      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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.4818, 0.536, 0.668, 0.8344, 1.033, 1.274, 1.567, 1.925, 2.356, 2.868",\
                 "0.4982, 0.5529, 0.6845, 0.851, 1.05, 1.29, 1.584, 1.941, 2.372, 2.884",\
                 "0.5634, 0.6181, 0.7496, 0.9161, 1.115, 1.356, 1.649, 2.007, 2.438, 2.95",\
                 "0.6904, 0.7452, 0.8776, 1.045, 1.244, 1.485, 1.779, 2.137, 2.568, 3.08",\
                 "0.8528, 0.9105, 1.051, 1.225, 1.427, 1.67, 1.964, 2.322, 2.753, 3.265",\
                 "1.038, 1.098, 1.247, 1.431, 1.642, 1.889, 2.185, 2.544, 2.975, 3.487",\
                 "1.252, 1.314, 1.472, 1.667, 1.885, 2.137, 2.438, 2.799, 3.231, 3.743",\
                 "1.497, 1.562, 1.73, 1.937, 2.164, 2.423, 2.728, 3.092, 3.526, 4.039",\
                 "1.772, 1.842, 2.021, 2.243, 2.482, 2.75, 3.061, 3.429, 3.864, 4.378",\
                 "2.078, 2.152, 2.343, 2.582, 2.836, 3.117, 3.438, 3.813, 4.253, 4.769");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.439, 0.491, 0.6324, 0.8606, 1.199, 1.668, 2.285, 3.059, 4.009, 5.138",\
                 "0.4533, 0.5051, 0.6467, 0.8747, 1.213, 1.682, 2.299, 3.075, 4.023, 5.153",\
                 "0.5037, 0.5552, 0.696, 0.9241, 1.262, 1.732, 2.349, 3.125, 4.074, 5.204",\
                 "0.5796, 0.6317, 0.7731, 1.001, 1.34, 1.81, 2.427, 3.203, 4.15, 5.279",\
                 "0.6439, 0.6994, 0.8462, 1.077, 1.416, 1.887, 2.503, 3.281, 4.229, 5.359",\
                 "0.6896, 0.7484, 0.9017, 1.136, 1.477, 1.948, 2.565, 3.342, 4.29, 5.418",\
                 "0.7156, 0.7788, 0.9397, 1.18, 1.521, 1.993, 2.611, 3.387, 4.335, 5.461",\
                 "0.7178, 0.7856, 0.9564, 1.205, 1.55, 2.021, 2.639, 3.416, 4.363, 5.492",\
                 "0.6917, 0.7643, 0.9475, 1.206, 1.558, 2.033, 2.651, 3.428, 4.376, 5.503",\
                 "0.6365, 0.7135, 0.9088, 1.18, 1.542, 2.024, 2.646, 3.423, 4.371, 5.499");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.1828, 0.2303, 0.3412, 0.5025, 0.7388, 1.072, 1.524, 2.116, 2.851, 3.732",\
                 "0.1829, 0.2311, 0.3409, 0.5029, 0.7395, 1.075, 1.525, 2.112, 2.846, 3.736",\
                 "0.1832, 0.2311, 0.3412, 0.503, 0.7396, 1.072, 1.525, 2.115, 2.851, 3.735",\
                 "0.188, 0.2362, 0.346, 0.5054, 0.74, 1.072, 1.525, 2.116, 2.851, 3.733",\
                 "0.2074, 0.2606, 0.3708, 0.5224, 0.75, 1.078, 1.529, 2.118, 2.851, 3.736",\
                 "0.2266, 0.2844, 0.4046, 0.5536, 0.7748, 1.095, 1.54, 2.118, 2.852, 3.737",\
                 "0.2482, 0.3084, 0.4374, 0.5854, 0.8018, 1.118, 1.556, 2.13, 2.859, 3.737",\
                 "0.2742, 0.3364, 0.4754, 0.622, 0.8358, 1.144, 1.577, 2.145, 2.866, 3.741",\
                 "0.304, 0.3694, 0.5206, 0.6714, 0.876, 1.183, 1.603, 2.167, 2.88, 3.751",\
                 "0.3378, 0.4062, 0.569, 0.7282, 0.9308, 1.235, 1.65, 2.206, 2.909, 3.767");
        }

        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.01011, 0.01681, 0.04033, 0.08525, 0.1552, 0.2534, 0.3826, 0.5454, 0.744, 0.9809");
          values("0.1543, 0.2106, 0.3961, 0.7589, 1.347, 2.188, 3.286, 4.676, 6.378, 8.402",\
                 "0.1544, 0.2104, 0.3961, 0.7589, 1.347, 2.188, 3.292, 4.678, 6.382, 8.393",\
                 "0.1546, 0.2107, 0.3966, 0.759, 1.347, 2.188, 3.291, 4.678, 6.382, 8.392",\
                 "0.1608, 0.2155, 0.399, 0.7602, 1.348, 2.188, 3.286, 4.676, 6.374, 8.395",\
                 "0.1756, 0.2306, 0.4116, 0.7662, 1.348, 2.183, 3.286, 4.676, 6.377, 8.402",\
                 "0.1922, 0.249, 0.4266, 0.7772, 1.355, 2.188, 3.285, 4.675, 6.374, 8.395",\
                 "0.2126, 0.2696, 0.447, 0.7878, 1.36, 2.189, 3.29, 4.674, 6.383, 8.39",\
                 "0.2362, 0.297, 0.4732, 0.8084, 1.37, 2.193, 3.295, 4.68, 6.383, 8.409",\
                 "0.262, 0.325, 0.506, 0.8364, 1.391, 2.203, 3.296, 4.682, 6.373, 8.406",\
                 "0.2882, 0.3558, 0.5418, 0.8714, 1.422, 2.23, 3.315, 4.688, 6.376, 8.393");
        }
      }
    }
  }

