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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.00831 ;
      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.1138, 0.1131, 0.1192, 0.1366, 0.166, 0.2104, 0.2761, 0.3648, \
                  0.4771, 0.6142");
        }

        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.163, 0.1619, 0.1699, 0.1953, 0.2438, 0.3186, 0.4219, 0.5554, \
                  0.7203, 0.9187");
        }

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

    pin(I) {
      capacitance : 0.004705 ;
      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.01925, 0.01922, 0.0192, 0.01919, 0.01922, 0.01919, 0.01926, \
                  0.01925, 0.01925, 0.01924");
        }

        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.01915, -0.01922, -0.01913, -0.01913, -0.01912, -0.01913, -0.01919, \
                  -0.01919, -0.01918, -0.0192");
        }
      }
    }

    pin(Z) {
      capacitance : 0.003383 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.6911 ;
      max_transition : 5.2 ;
      min_capacitance : 0.004383 ;
      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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.1462, 0.1455, 0.1448, 0.1443, 0.1441, 0.144, 0.144, 0.1439, 0.1439, 0.1438",\
                 "0.1472, 0.1464, 0.1458, 0.1454, 0.1451, 0.1451, 0.145, 0.1449, 0.1449, 0.1449",\
                 "0.1549, 0.1546, 0.1544, 0.1542, 0.1543, 0.1543, 0.1542, 0.1543, 0.1543, 0.1543",\
                 "0.1758, 0.1758, 0.1758, 0.1757, 0.1758, 0.1759, 0.1757, 0.1757, 0.1757, 0.1758",\
                 "0.2118, 0.2117, 0.2117, 0.2117, 0.2118, 0.2117, 0.2117, 0.2117, 0.2118, 0.2118",\
                 "0.2633, 0.2633, 0.2631, 0.2631, 0.2631, 0.2632, 0.2632, 0.2632, 0.2632, 0.2632",\
                 "0.3312, 0.3312, 0.3311, 0.331, 0.3311, 0.3311, 0.3311, 0.3311, 0.3311, 0.3311",\
                 "0.4166, 0.4166, 0.4164, 0.4164, 0.4164, 0.4165, 0.4165, 0.4165, 0.4165, 0.4165",\
                 "0.5201, 0.5201, 0.52, 0.5199, 0.52, 0.5201, 0.5201, 0.5201, 0.5201, 0.5201",\
                 "0.643, 0.6429, 0.6428, 0.6427, 0.6429, 0.6428, 0.6429, 0.6428, 0.6429, 0.6429");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.0924, 0.09261, 0.09265, 0.09249, 0.09273, 0.09308, 0.0953, 0.09751, 0.09963, 0.09986",\
                 "0.0919, 0.09216, 0.09186, 0.09217, 0.09212, 0.09326, 0.09458, 0.09571, 0.09819, 0.1002",\
                 "0.09817, 0.09814, 0.09812, 0.09843, 0.09856, 0.09931, 0.1011, 0.1033, 0.1054, 0.106",\
                 "0.1202, 0.1202, 0.1206, 0.1207, 0.1207, 0.1215, 0.1233, 0.1245, 0.1274, 0.1287",\
                 "0.1631, 0.1631, 0.1629, 0.1638, 0.164, 0.1637, 0.1658, 0.1673, 0.1698, 0.1715",\
                 "0.2294, 0.2296, 0.2296, 0.2294, 0.2308, 0.2319, 0.2318, 0.2329, 0.2361, 0.2374",\
                 "0.3201, 0.3205, 0.3206, 0.32, 0.3205, 0.3225, 0.3236, 0.3243, 0.325, 0.3282",\
                 "0.4373, 0.4376, 0.4377, 0.4376, 0.4374, 0.4385, 0.4417, 0.4431, 0.4442, 0.4434",\
                 "0.5823, 0.5824, 0.5825, 0.5827, 0.5826, 0.5823, 0.5843, 0.5885, 0.5907, 0.5914",\
                 "0.756, 0.7561, 0.7566, 0.7567, 0.7558, 0.7563, 0.7571, 0.7595, 0.7656, 0.7671");
        }
      }

      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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.2458, 0.2419, 0.2375, 0.2354, 0.2345, 0.234, 0.2337, 0.2335, 0.2334, 0.2333",\
                 "0.2448, 0.2408, 0.2366, 0.2344, 0.2334, 0.233, 0.2327, 0.2325, 0.2324, 0.2323",\
                 "0.2471, 0.2431, 0.2384, 0.2363, 0.2354, 0.2349, 0.2346, 0.2344, 0.2343, 0.2342",\
                 "0.266, 0.2608, 0.2541, 0.2502, 0.2483, 0.2474, 0.2469, 0.2466, 0.2464, 0.2463",\
                 "0.3035, 0.2968, 0.2865, 0.2798, 0.2761, 0.2741, 0.2729, 0.2722, 0.2717, 0.2714",\
                 "0.3577, 0.3495, 0.3358, 0.3262, 0.3201, 0.3166, 0.3145, 0.3132, 0.3124, 0.3118",\
                 "0.4308, 0.4211, 0.404, 0.3907, 0.382, 0.3768, 0.3734, 0.3713, 0.3699, 0.3689",\
                 "0.5234, 0.5125, 0.4919, 0.4751, 0.4634, 0.4559, 0.4512, 0.4479, 0.4456, 0.4443",\
                 "0.6364, 0.6244, 0.6001, 0.5797, 0.5648, 0.5552, 0.5482, 0.5438, 0.5407, 0.5384",\
                 "0.7712, 0.7583, 0.7307, 0.7064, 0.688, 0.675, 0.6663, 0.6603, 0.6562, 0.6531");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.103, 0.1034, 0.1058, 0.1087, 0.1109, 0.113, 0.115, 0.118, 0.1194, 0.1207",\
                 "0.1024, 0.1027, 0.1051, 0.1081, 0.1104, 0.1121, 0.1141, 0.1173, 0.119, 0.1207",\
                 "0.1041, 0.1039, 0.1054, 0.1078, 0.1099, 0.1122, 0.1143, 0.1158, 0.1194, 0.1214",\
                 "0.118, 0.1163, 0.1154, 0.1159, 0.1172, 0.1193, 0.1215, 0.1238, 0.1266, 0.1275",\
                 "0.1454, 0.1421, 0.1375, 0.137, 0.1363, 0.1375, 0.1402, 0.1425, 0.1439, 0.1463",\
                 "0.1889, 0.1841, 0.1768, 0.1718, 0.1719, 0.1711, 0.1719, 0.1731, 0.1752, 0.1772",\
                 "0.2495, 0.2431, 0.233, 0.2255, 0.2215, 0.2223, 0.2217, 0.2217, 0.222, 0.224",\
                 "0.3283, 0.32, 0.3075, 0.2971, 0.2899, 0.2867, 0.2883, 0.2883, 0.2864, 0.2882",\
                 "0.4257, 0.4159, 0.4002, 0.3875, 0.3776, 0.3713, 0.3689, 0.3722, 0.3718, 0.3707",\
                 "0.5428, 0.5313, 0.5123, 0.4969, 0.4844, 0.4748, 0.4697, 0.4701, 0.474, 0.4718");
        }
      }

      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.141, 0.151, 0.189, 0.262, 0.358, 0.478, 0.619, 0.781, 0.966, \
                  1.173");
        }

        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.171, 0.18, 0.22, 0.29, 0.385, 0.502, 0.644, 0.809, 0.997, 1.213");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.1142, 0.1437, 0.2181, 0.3207, 0.4527, 0.6236, 0.8429, 1.118, 1.453, 1.852",\
                 "0.1225, 0.152, 0.2263, 0.3288, 0.4608, 0.6317, 0.8511, 1.126, 1.461, 1.86",\
                 "0.1518, 0.1809, 0.254, 0.3556, 0.4872, 0.658, 0.8773, 1.152, 1.487, 1.886",\
                 "0.1789, 0.2114, 0.2851, 0.385, 0.5158, 0.6864, 0.9054, 1.18, 1.515, 1.915",\
                 "0.1823, 0.2144, 0.2867, 0.3856, 0.5158, 0.6857, 0.9047, 1.179, 1.514, 1.914",\
                 "0.1625, 0.1944, 0.2655, 0.3633, 0.4923, 0.6618, 0.8804, 1.154, 1.489, 1.889",\
                 "0.1206, 0.1527, 0.2238, 0.3207, 0.449, 0.6181, 0.8365, 1.111, 1.445, 1.844",\
                 "0.0549, 0.0877, 0.1591, 0.2559, 0.384, 0.5529, 0.7713, 1.046, 1.38, 1.779",\
                 "-0.036, -0.0023, 0.0698, 0.1667, 0.2947, 0.4635, 0.6819, 0.9563, 1.291, 1.69",\
                 "-0.1529, -0.1187, -0.0458, 0.0517, 0.1797, 0.3485, 0.567, 0.8413, 1.176, 1.575");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.1052, 0.1352, 0.2169, 0.3562, 0.5703, 0.8708, 1.266, 1.763, 2.372, 3.095",\
                 "0.1123, 0.1423, 0.2239, 0.3632, 0.5774, 0.8774, 1.272, 1.772, 2.38, 3.105",\
                 "0.1331, 0.1642, 0.2466, 0.3861, 0.6001, 0.9009, 1.296, 1.793, 2.402, 3.124",\
                 "0.146, 0.1808, 0.2663, 0.4072, 0.6213, 0.922, 1.317, 1.815, 2.424, 3.148",\
                 "0.1414, 0.1831, 0.2752, 0.4175, 0.6325, 0.9329, 1.328, 1.826, 2.435, 3.16",\
                 "0.1156, 0.1658, 0.2689, 0.4156, 0.6314, 0.9323, 1.327, 1.825, 2.433, 3.156",\
                 "0.0667, 0.1257, 0.2434, 0.3969, 0.6168, 0.9186, 1.314, 1.812, 2.419, 3.144",\
                 "-0.0067, 0.0616, 0.1966, 0.359, 0.584, 0.8906, 1.287, 1.786, 2.393, 3.117",\
                 "-0.107, -0.029, 0.1253, 0.2994, 0.5299, 0.8426, 1.245, 1.744, 2.352, 3.077",\
                 "-0.2357, -0.1472, 0.0271, 0.2172, 0.4538, 0.7726, 1.182, 1.687, 2.296, 3.021");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.06032, 0.09114, 0.1719, 0.2879, 0.4644, 0.7228, 1.076, 1.529, 2.084, 2.749",\
                 "0.06, 0.09066, 0.1718, 0.2873, 0.4635, 0.7237, 1.076, 1.529, 2.082, 2.748",\
                 "0.0587, 0.08868, 0.1687, 0.2854, 0.4636, 0.7225, 1.075, 1.528, 2.083, 2.748",\
                 "0.06842, 0.09626, 0.1664, 0.2821, 0.4613, 0.7225, 1.075, 1.529, 2.082, 2.745",\
                 "0.07026, 0.0952, 0.1642, 0.2804, 0.4585, 0.7191, 1.074, 1.528, 2.084, 2.749",\
                 "0.07044, 0.0946, 0.1622, 0.2772, 0.457, 0.7178, 1.071, 1.525, 2.082, 2.747",\
                 "0.0714, 0.095, 0.1612, 0.2754, 0.4546, 0.716, 1.071, 1.523, 2.077, 2.742",\
                 "0.0742, 0.0966, 0.1616, 0.2748, 0.4534, 0.7168, 1.071, 1.524, 2.077, 2.739",\
                 "0.0766, 0.0988, 0.1622, 0.2748, 0.4532, 0.7162, 1.071, 1.523, 2.078, 2.74",\
                 "0.0794, 0.1014, 0.1636, 0.2754, 0.4544, 0.7156, 1.073, 1.525, 2.078, 2.74");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.0593, 0.09502, 0.2105, 0.4413, 0.8126, 1.334, 2.026, 2.89, 3.949, 5.217",\
                 "0.05934, 0.09498, 0.2106, 0.4411, 0.812, 1.335, 2.022, 2.889, 3.948, 5.206",\
                 "0.06254, 0.09712, 0.2114, 0.4421, 0.8119, 1.337, 2.022, 2.891, 3.949, 5.216",\
                 "0.07366, 0.1056, 0.2158, 0.4432, 0.8115, 1.334, 2.022, 2.888, 3.945, 5.21",\
                 "0.09042, 0.1222, 0.2238, 0.4464, 0.814, 1.336, 2.024, 2.887, 3.946, 5.205",\
                 "0.1098, 0.1446, 0.239, 0.453, 0.8164, 1.336, 2.021, 2.889, 3.948, 5.209",\
                 "0.1308, 0.17, 0.2616, 0.4666, 0.8254, 1.34, 2.023, 2.887, 3.949, 5.205",\
                 "0.1534, 0.1976, 0.2908, 0.4842, 0.8414, 1.352, 2.028, 2.888, 3.95, 5.2",\
                 "0.1796, 0.2278, 0.3262, 0.505, 0.8596, 1.374, 2.045, 2.898, 3.944, 5.201",\
                 "0.2058, 0.2592, 0.3674, 0.532, 0.879, 1.398, 2.074, 2.917, 3.954, 5.203");
        }
      }

      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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.2169, 0.2469, 0.3235, 0.4287, 0.5617, 0.733, 0.9523, 1.227, 1.562, 1.961",\
                 "0.2252, 0.2552, 0.3318, 0.437, 0.57, 0.7413, 0.9607, 1.235, 1.57, 1.97",\
                 "0.2613, 0.2912, 0.3675, 0.4728, 0.6058, 0.7771, 0.9963, 1.271, 1.606, 2.005",\
                 "0.335, 0.3649, 0.4414, 0.5469, 0.6801, 0.8513, 1.07, 1.345, 1.68, 2.079",\
                 "0.4326, 0.4642, 0.5431, 0.6518, 0.7866, 0.9581, 1.177, 1.452, 1.786, 2.185",\
                 "0.5527, 0.5867, 0.669, 0.7817, 0.9192, 1.092, 1.311, 1.585, 1.92, 2.319",\
                 "0.6933, 0.7303, 0.8189, 0.9385, 1.081, 1.255, 1.475, 1.75, 2.084, 2.483",\
                 "0.8536, 0.8936, 0.9891, 1.118, 1.27, 1.45, 1.672, 1.946, 2.281, 2.679",\
                 "1.034, 1.077, 1.18, 1.318, 1.481, 1.672, 1.901, 2.177, 2.511, 2.91",\
                 "1.237, 1.283, 1.392, 1.539, 1.714, 1.916, 2.156, 2.442, 2.779, 3.178");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.1808, 0.2119, 0.2954, 0.4367, 0.652, 0.9529, 1.349, 1.847, 2.454, 3.181",\
                 "0.1878, 0.2188, 0.3023, 0.4436, 0.659, 0.9604, 1.356, 1.853, 2.461, 3.186",\
                 "0.2136, 0.2443, 0.3274, 0.4683, 0.6837, 0.9845, 1.38, 1.88, 2.488, 3.214",\
                 "0.2494, 0.28, 0.3633, 0.5034, 0.7183, 1.019, 1.415, 1.914, 2.523, 3.246",\
                 "0.2764, 0.308, 0.3926, 0.5327, 0.7468, 1.047, 1.443, 1.941, 2.549, 3.275",\
                 "0.2898, 0.323, 0.411, 0.5519, 0.7651, 1.065, 1.46, 1.958, 2.566, 3.29",\
                 "0.2855, 0.3213, 0.413, 0.558, 0.7725, 1.071, 1.465, 1.963, 2.571, 3.296",\
                 "0.2616, 0.3003, 0.397, 0.5463, 0.7642, 1.065, 1.459, 1.956, 2.562, 3.286",\
                 "0.2174, 0.2588, 0.3605, 0.5148, 0.7368, 1.043, 1.44, 1.936, 2.543, 3.265",\
                 "0.1519, 0.1965, 0.3033, 0.4627, 0.6884, 0.9993, 1.403, 1.903, 2.509, 3.232");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.07098, 0.101, 0.1814, 0.2943, 0.4679, 0.7247, 1.077, 1.527, 2.084, 2.748",\
                 "0.07088, 0.1012, 0.1818, 0.294, 0.4675, 0.7237, 1.077, 1.529, 2.084, 2.747",\
                 "0.07094, 0.1012, 0.1816, 0.2942, 0.4671, 0.7248, 1.076, 1.528, 2.084, 2.747",\
                 "0.07548, 0.1051, 0.1851, 0.2972, 0.4688, 0.7242, 1.075, 1.528, 2.084, 2.748",\
                 "0.08656, 0.117, 0.1962, 0.307, 0.4746, 0.7274, 1.077, 1.529, 2.084, 2.748",\
                 "0.0998, 0.1316, 0.2096, 0.3216, 0.4844, 0.7316, 1.079, 1.527, 2.084, 2.748",\
                 "0.1158, 0.1498, 0.231, 0.3444, 0.4996, 0.7416, 1.082, 1.529, 2.085, 2.747",\
                 "0.1328, 0.1694, 0.2562, 0.377, 0.5312, 0.7604, 1.092, 1.533, 2.084, 2.744",\
                 "0.1502, 0.1912, 0.2822, 0.4124, 0.5742, 0.8014, 1.12, 1.547, 2.088, 2.745",\
                 "0.1696, 0.2126, 0.3104, 0.449, 0.6192, 0.8516, 1.172, 1.586, 2.108, 2.754");
        }

        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.004383, 0.009123, 0.02576, 0.05753, 0.107, 0.1765, 0.2679, 0.383, 0.5236, 0.6911");
          values("0.06164, 0.09642, 0.2108, 0.4411, 0.8114, 1.334, 2.022, 2.892, 3.951, 5.21",\
                 "0.06194, 0.09632, 0.2107, 0.4423, 0.8119, 1.337, 2.022, 2.892, 3.951, 5.214",\
                 "0.06174, 0.09666, 0.2106, 0.4414, 0.8116, 1.334, 2.021, 2.889, 3.948, 5.206",\
                 "0.0661, 0.1015, 0.214, 0.4418, 0.8116, 1.335, 2.021, 2.888, 3.946, 5.219",\
                 "0.07294, 0.108, 0.2202, 0.4443, 0.8122, 1.335, 2.025, 2.89, 3.954, 5.207",\
                 "0.0838, 0.1194, 0.2304, 0.4484, 0.8136, 1.335, 2.022, 2.892, 3.951, 5.212",\
                 "0.0964, 0.131, 0.2444, 0.461, 0.8202, 1.335, 2.021, 2.885, 3.943, 5.213",\
                 "0.1102, 0.147, 0.2598, 0.476, 0.8342, 1.344, 2.023, 2.886, 3.942, 5.202",\
                 "0.1246, 0.163, 0.2772, 0.4934, 0.8534, 1.365, 2.036, 2.889, 3.941, 5.206",\
                 "0.1386, 0.1792, 0.2946, 0.5116, 0.8726, 1.392, 2.064, 2.907, 3.948, 5.201");
        }
      }
    }
  }

