/*
 * 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__invz_1) {
    area : 37.318400 ;

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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.005809 ;
      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.09027, 0.08968, 0.09019, 0.09457, 0.1042, 0.12, 0.1425, 0.1722, \
                  0.2097, 0.2551");
        }

        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.06124, 0.06076, 0.06112, 0.0643, 0.07047, 0.07984, 0.09312, \
                  0.1113, 0.1353, 0.1653");
        }

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

    pin(I) {
      capacitance : 0.00311 ;
      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.0391, 0.03862, 0.03897, 0.04174, 0.04739, 0.05612, 0.06835, \
                  0.08425, 0.1041, 0.128");
        }

        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.007859, 0.007623, 0.007831, 0.009764, 0.01418, 0.0215, 0.03192, \
                  0.04557, 0.06266, 0.0834");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.003075 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.3179 ;
      max_transition : 15.6 ;
      min_capacitance : 0.004075 ;
      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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.06906, 0.06905, 0.06903, 0.069, 0.06901, 0.06903, 0.06903, 0.06905, 0.06905, 0.06905",\
                 "0.06916, 0.06915, 0.0691, 0.06907, 0.06907, 0.06909, 0.0691, 0.06911, 0.06911, 0.06911",\
                 "0.07175, 0.07172, 0.07172, 0.07171, 0.0717, 0.07171, 0.07172, 0.07173, 0.07174, 0.07173",\
                 "0.07686, 0.07685, 0.07682, 0.0768, 0.0768, 0.07681, 0.07683, 0.07684, 0.07684, 0.07684",\
                 "0.08527, 0.08527, 0.08526, 0.08525, 0.08523, 0.08525, 0.08526, 0.08527, 0.08527, 0.08527",\
                 "0.09748, 0.09747, 0.09744, 0.09744, 0.09744, 0.09745, 0.09745, 0.09745, 0.09747, 0.09747",\
                 "0.1138, 0.1138, 0.1138, 0.1137, 0.1137, 0.1138, 0.1138, 0.1138, 0.1138, 0.1138",\
                 "0.1344, 0.1345, 0.1344, 0.1344, 0.1344, 0.1344, 0.1344, 0.1344, 0.1344, 0.1344",\
                 "0.1596, 0.1596, 0.1596, 0.1595, 0.1595, 0.1596, 0.1596, 0.1596, 0.1596, 0.1595",\
                 "0.1895, 0.1895, 0.1895, 0.1895, 0.1895, 0.1895, 0.1895, 0.1895, 0.1895, 0.1894");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.04317, 0.04317, 0.04316, 0.04325, 0.04347, 0.04364, 0.04402, 0.04607, 0.06649, 0.1622",\
                 "0.04279, 0.04279, 0.04275, 0.04285, 0.04305, 0.04328, 0.04378, 0.0459, 0.06667, 0.1634",\
                 "0.04297, 0.04297, 0.043, 0.04311, 0.04323, 0.04361, 0.0439, 0.04614, 0.06848, 0.17",\
                 "0.04643, 0.04645, 0.04647, 0.04654, 0.04674, 0.04706, 0.04747, 0.04981, 0.07558, 0.1861",\
                 "0.05453, 0.05455, 0.0545, 0.0548, 0.05493, 0.05513, 0.05543, 0.05893, 0.08907, 0.2141",\
                 "0.0683, 0.06833, 0.06822, 0.06821, 0.06882, 0.06896, 0.06916, 0.07376, 0.1118, 0.2575",\
                 "0.08803, 0.08809, 0.08804, 0.08803, 0.08808, 0.08894, 0.08944, 0.09616, 0.1462, 0.3198",\
                 "0.1142, 0.1142, 0.1142, 0.1142, 0.1143, 0.1146, 0.1161, 0.1276, 0.1986, 0.409",\
                 "0.147, 0.147, 0.1471, 0.147, 0.1472, 0.1472, 0.149, 0.1709, 0.2766, 0.5313",\
                 "0.1869, 0.187, 0.187, 0.1871, 0.1872, 0.1871, 0.191, 0.2335, 0.3932, 0.687");
        }
      }

      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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.1131, 0.113, 0.1131, 0.1133, 0.1136, 0.1137, 0.1138, 0.1139, 0.114, 0.114",\
                 "0.1129, 0.1128, 0.1128, 0.1131, 0.1133, 0.1135, 0.1136, 0.1137, 0.1137, 0.1137",\
                 "0.113, 0.1128, 0.1129, 0.1132, 0.1134, 0.1135, 0.1137, 0.1137, 0.1138, 0.1138",\
                 "0.1148, 0.1147, 0.1148, 0.115, 0.1153, 0.1154, 0.1155, 0.1156, 0.1157, 0.1157",\
                 "0.1194, 0.1193, 0.1193, 0.1196, 0.1198, 0.12, 0.1201, 0.1202, 0.1202, 0.1202",\
                 "0.127, 0.1269, 0.1269, 0.1271, 0.1274, 0.1275, 0.1276, 0.1277, 0.1277, 0.1277",\
                 "0.1379, 0.1378, 0.1377, 0.1379, 0.1381, 0.1383, 0.1384, 0.1384, 0.1385, 0.1385",\
                 "0.1524, 0.1522, 0.152, 0.1521, 0.1523, 0.1525, 0.1526, 0.1527, 0.1527, 0.1527",\
                 "0.1705, 0.1703, 0.17, 0.17, 0.1702, 0.1704, 0.1705, 0.1706, 0.1706, 0.1706",\
                 "0.1923, 0.192, 0.1917, 0.1917, 0.1919, 0.192, 0.1921, 0.1922, 0.1922, 0.1922");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.09557, 0.09585, 0.09663, 0.09756, 0.09842, 0.09908, 0.09992, 0.1027, 0.127, 0.2343",\
                 "0.0951, 0.09545, 0.09614, 0.09711, 0.098, 0.09872, 0.0995, 0.102, 0.1266, 0.2359",\
                 "0.09538, 0.09573, 0.09644, 0.09741, 0.09821, 0.09902, 0.09971, 0.1026, 0.1295, 0.2451",\
                 "0.0982, 0.09847, 0.09924, 0.1001, 0.101, 0.1018, 0.1026, 0.1061, 0.1376, 0.2651",\
                 "0.104, 0.1043, 0.1049, 0.1058, 0.1067, 0.1074, 0.1083, 0.1131, 0.1521, 0.3004",\
                 "0.113, 0.1133, 0.1139, 0.1148, 0.1156, 0.1165, 0.1173, 0.1247, 0.1768, 0.3528",\
                 "0.1257, 0.1259, 0.1264, 0.1272, 0.1284, 0.1291, 0.1304, 0.1426, 0.2176, 0.434",\
                 "0.1423, 0.1425, 0.143, 0.1437, 0.1445, 0.1457, 0.148, 0.1715, 0.2861, 0.5493",\
                 "0.1631, 0.1632, 0.1636, 0.1644, 0.1648, 0.1657, 0.1726, 0.2234, 0.3995, 0.6995",\
                 "0.1882, 0.1883, 0.1886, 0.1892, 0.1899, 0.1912, 0.2132, 0.3279, 0.57, 0.8509");
        }
      }

      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.387, 0.428, 0.561, 0.809, 1.103, 1.446, 1.843, 2.292, 2.793, \
                  3.353");
        }

        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.648, 0.68, 0.813, 1.057, 1.361, 1.724, 2.148, 2.635, 3.189, \
                  3.807");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.5876, 0.6718, 0.893, 1.196, 1.57, 2.03, 2.595, 3.286, 4.119, 5.11",\
                 "0.6176, 0.7019, 0.923, 1.226, 1.6, 2.061, 2.626, 3.316, 4.15, 5.14",\
                 "0.731, 0.8145, 1.034, 1.336, 1.71, 2.17, 2.735, 3.425, 4.259, 5.25",\
                 "0.9111, 0.9927, 1.206, 1.502, 1.873, 2.332, 2.896, 3.586, 4.42, 5.41",\
                 "1.027, 1.108, 1.317, 1.61, 1.979, 2.435, 2.999, 3.689, 4.522, 5.512",\
                 "1.058, 1.138, 1.344, 1.636, 2.003, 2.459, 3.021, 3.71, 4.543, 5.533",\
                 "1.024, 1.103, 1.308, 1.596, 1.962, 2.416, 2.978, 3.667, 4.498, 5.487",\
                 "0.9304, 1.009, 1.212, 1.497, 1.859, 2.311, 2.871, 3.559, 4.39, 5.379",\
                 "0.7738, 0.8534, 1.055, 1.339, 1.698, 2.147, 2.706, 3.392, 4.223, 5.213",\
                 "0.5513, 0.6311, 0.8341, 1.117, 1.475, 1.923, 2.48, 3.166, 3.998, 4.987");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.5384, 0.6263, 0.8804, 1.303, 1.935, 2.817, 3.978, 5.44, 7.226, 9.351",\
                 "0.5629, 0.6507, 0.9049, 1.327, 1.959, 2.84, 4, 5.464, 7.245, 9.376",\
                 "0.6502, 0.7379, 0.9917, 1.414, 2.046, 2.928, 4.088, 5.549, 7.338, 9.466",\
                 "0.7628, 0.8541, 1.113, 1.538, 2.17, 3.052, 4.211, 5.67, 7.459, 9.583",\
                 "0.8391, 0.9374, 1.206, 1.636, 2.271, 3.153, 4.314, 5.775, 7.563, 9.691",\
                 "0.8742, 0.9834, 1.267, 1.703, 2.34, 3.225, 4.384, 5.846, 7.633, 9.756",\
                 "0.8578, 0.9822, 1.289, 1.739, 2.379, 3.263, 4.425, 5.885, 7.67, 9.799",\
                 "0.7846, 0.9259, 1.265, 1.734, 2.385, 3.272, 4.433, 5.894, 7.678, 9.804",\
                 "0.6509, 0.8103, 1.185, 1.68, 2.347, 3.244, 4.409, 5.871, 7.653, 9.779",\
                 "0.4538, 0.6331, 1.047, 1.571, 2.258, 3.172, 4.347, 5.814, 7.597, 9.722");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.3198, 0.4006, 0.6103, 0.9216, 1.373, 2.005, 2.862, 3.981, 5.371, 7.04",\
                 "0.3204, 0.4016, 0.611, 0.9218, 1.373, 2.004, 2.862, 3.98, 5.371, 7.038",\
                 "0.316, 0.3966, 0.607, 0.9192, 1.373, 2.007, 2.863, 3.975, 5.369, 7.041",\
                 "0.3152, 0.388, 0.5908, 0.9064, 1.364, 2.002, 2.861, 3.976, 5.363, 7.047",\
                 "0.32, 0.3872, 0.5826, 0.8972, 1.353, 1.996, 2.859, 3.973, 5.363, 7.047",\
                 "0.3142, 0.3812, 0.5786, 0.8964, 1.351, 1.989, 2.849, 3.97, 5.364, 7.046",\
                 "0.3112, 0.377, 0.5714, 0.887, 1.348, 1.987, 2.852, 3.962, 5.353, 7.035",\
                 "0.3112, 0.3754, 0.5668, 0.8796, 1.337, 1.975, 2.846, 3.96, 5.351, 7.024",\
                 "0.3142, 0.3768, 0.564, 0.8732, 1.327, 1.966, 2.835, 3.958, 5.352, 7.024",\
                 "0.319, 0.3816, 0.564, 0.87, 1.324, 1.962, 2.83, 3.962, 5.352, 7.028");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.3252, 0.4287, 0.7706, 1.438, 2.526, 4.077, 6.123, 8.709, 11.85, 15.61",\
                 "0.325, 0.4285, 0.7707, 1.44, 2.525, 4.077, 6.123, 8.707, 11.86, 15.61",\
                 "0.3241, 0.4276, 0.7702, 1.439, 2.527, 4.081, 6.128, 8.709, 11.86, 15.62",\
                 "0.3432, 0.4422, 0.7796, 1.441, 2.525, 4.082, 6.125, 8.705, 11.86, 15.61",\
                 "0.3758, 0.4718, 0.7992, 1.456, 2.535, 4.082, 6.124, 8.709, 11.86, 15.62",\
                 "0.4284, 0.516, 0.8248, 1.466, 2.539, 4.088, 6.126, 8.698, 11.85, 15.61",\
                 "0.4894, 0.5782, 0.871, 1.492, 2.548, 4.092, 6.13, 8.718, 11.85, 15.61",\
                 "0.5602, 0.6536, 0.9342, 1.534, 2.571, 4.098, 6.131, 8.706, 11.86, 15.63",\
                 "0.6346, 0.734, 1.013, 1.59, 2.622, 4.129, 6.142, 8.712, 11.85, 15.6",\
                 "0.715, 0.822, 1.102, 1.66, 2.678, 4.178, 6.186, 8.724, 11.86, 15.61");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : negative_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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("1.205, 1.298, 1.537, 1.853, 2.234, 2.697, 3.264, 3.955, 4.789, 5.779",\
                 "1.232, 1.324, 1.564, 1.88, 2.261, 2.724, 3.291, 3.982, 4.815, 5.806",\
                 "1.321, 1.413, 1.653, 1.969, 2.35, 2.813, 3.379, 4.071, 4.904, 5.895",\
                 "1.408, 1.5, 1.74, 2.056, 2.437, 2.9, 3.466, 4.157, 4.991, 5.981",\
                 "1.453, 1.545, 1.785, 2.102, 2.483, 2.946, 3.513, 4.204, 5.038, 6.028",\
                 "1.458, 1.55, 1.79, 2.106, 2.488, 2.951, 3.518, 4.209, 5.043, 6.034",\
                 "1.413, 1.505, 1.747, 2.063, 2.445, 2.909, 3.475, 4.166, 5, 5.99",\
                 "1.313, 1.406, 1.648, 1.966, 2.349, 2.813, 3.38, 4.071, 4.905, 5.896",\
                 "1.151, 1.245, 1.488, 1.808, 2.193, 2.658, 3.225, 3.916, 4.75, 5.741",\
                 "0.9241, 1.017, 1.262, 1.584, 1.969, 2.436, 3.004, 3.696, 4.53, 5.52");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("1.259, 1.35, 1.611, 2.038, 2.674, 3.558, 4.718, 6.184, 7.966, 10.1",\
                 "1.291, 1.382, 1.643, 2.07, 2.706, 3.59, 4.751, 6.214, 7.997, 10.12",\
                 "1.423, 1.514, 1.774, 2.202, 2.838, 3.722, 4.885, 6.345, 8.13, 10.27",\
                 "1.663, 1.755, 2.015, 2.442, 3.078, 3.962, 5.123, 6.588, 8.368, 10.5",\
                 "1.966, 2.057, 2.318, 2.745, 3.381, 4.266, 5.429, 6.891, 8.68, 10.81",\
                 "2.329, 2.421, 2.682, 3.11, 3.745, 4.63, 5.793, 7.257, 9.039, 11.16",\
                 "2.76, 2.852, 3.114, 3.542, 4.177, 5.062, 6.223, 7.687, 9.474, 11.6",\
                 "3.258, 3.352, 3.614, 4.042, 4.678, 5.563, 6.723, 8.184, 9.97, 12.1",\
                 "3.825, 3.918, 4.182, 4.612, 5.247, 6.132, 7.293, 8.754, 10.54, 12.66",\
                 "4.461, 4.557, 4.822, 5.253, 5.889, 6.773, 7.934, 9.396, 11.18, 13.3");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.3584, 0.4436, 0.6498, 0.9454, 1.388, 2.012, 2.865, 3.983, 5.371, 7.038",\
                 "0.3584, 0.4434, 0.65, 0.9466, 1.388, 2.014, 2.869, 3.977, 5.369, 7.041",\
                 "0.3586, 0.4436, 0.65, 0.9468, 1.388, 2.014, 2.869, 3.982, 5.366, 7.043",\
                 "0.3588, 0.4438, 0.6502, 0.9478, 1.388, 2.015, 2.867, 3.979, 5.366, 7.047",\
                 "0.359, 0.4446, 0.6508, 0.9464, 1.388, 2.013, 2.869, 3.98, 5.371, 7.041",\
                 "0.3602, 0.4452, 0.6518, 0.9474, 1.386, 2.014, 2.868, 3.982, 5.37, 7.044",\
                 "0.362, 0.4476, 0.6538, 0.9496, 1.389, 2.014, 2.865, 3.976, 5.367, 7.045",\
                 "0.3648, 0.4512, 0.6598, 0.9542, 1.391, 2.019, 2.869, 3.976, 5.362, 7.035",\
                 "0.3684, 0.455, 0.6654, 0.9578, 1.397, 2.02, 2.869, 3.984, 5.364, 7.042",\
                 "0.372, 0.46, 0.67, 0.964, 1.402, 2.024, 2.878, 3.98, 5.368, 7.04");
        }

        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.004075, 0.006241, 0.01385, 0.02837, 0.05099, 0.08273, 0.1245, 0.1771, 0.2414, 0.3179");
          values("0.331, 0.4318, 0.771, 1.439, 2.525, 4.077, 6.124, 8.707, 11.86, 15.62",\
                 "0.3314, 0.4324, 0.7708, 1.438, 2.53, 4.081, 6.125, 8.704, 11.85, 15.62",\
                 "0.331, 0.4324, 0.771, 1.439, 2.524, 4.081, 6.13, 8.701, 11.86, 15.62",\
                 "0.3312, 0.432, 0.771, 1.438, 2.524, 4.081, 6.125, 8.707, 11.85, 15.63",\
                 "0.3342, 0.4342, 0.7716, 1.438, 2.526, 4.077, 6.131, 8.708, 11.86, 15.61",\
                 "0.3348, 0.4358, 0.7732, 1.44, 2.524, 4.076, 6.124, 8.705, 11.86, 15.6",\
                 "0.3376, 0.4388, 0.7748, 1.441, 2.525, 4.078, 6.12, 8.694, 11.85, 15.62",\
                 "0.3418, 0.4422, 0.7774, 1.441, 2.528, 4.076, 6.12, 8.712, 11.87, 15.61",\
                 "0.346, 0.448, 0.782, 1.442, 2.532, 4.08, 6.122, 8.694, 11.85, 15.63",\
                 "0.354, 0.454, 0.786, 1.446, 2.526, 4.076, 6.124, 8.698, 11.84, 15.59");
        }
      }
    }
  }

