/*
 * 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_4) {
    area : 52.684800 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.06048, 0.05985, 0.05948, 0.061, 0.06515, 0.07258, 0.08364, 0.09865, \
                  0.1179, 0.1416");
        }

        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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.03776, 0.03724, 0.03713, 0.03859, 0.0416, 0.04627, 0.05293, \
                  0.06199, 0.07403, 0.08932");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.03336, 0.03301, 0.03272, 0.03363, 0.03598, 0.03998, 0.04581, \
                  0.05357, 0.0635, 0.07565");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.01203, 0.0119, 0.01188, 0.0125, 0.01437, 0.01775, 0.02284, 0.02973, \
                  0.03859, 0.04939");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.007815 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.9083 ;
      max_transition : 8.9 ;
      min_capacitance : 0.008815 ;
      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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.0684, 0.06839, 0.06838, 0.06837, 0.06837, 0.06839, 0.06841, 0.06843, 0.06843, 0.06844",\
                 "0.06847, 0.06848, 0.06844, 0.06842, 0.06841, 0.06843, 0.06845, 0.06846, 0.06846, 0.06847",\
                 "0.06963, 0.06961, 0.06962, 0.0696, 0.06961, 0.06961, 0.06964, 0.06965, 0.06965, 0.06965",\
                 "0.07204, 0.07203, 0.072, 0.07198, 0.07197, 0.07199, 0.072, 0.07202, 0.07202, 0.07203",\
                 "0.07623, 0.07623, 0.07618, 0.07616, 0.07614, 0.07614, 0.07616, 0.07617, 0.07616, 0.07617",\
                 "0.08243, 0.08242, 0.0824, 0.08239, 0.08239, 0.0824, 0.0824, 0.0824, 0.08241, 0.08242",\
                 "0.09096, 0.09094, 0.09093, 0.0909, 0.09089, 0.09091, 0.09093, 0.09093, 0.09092, 0.09093",\
                 "0.1019, 0.1019, 0.1018, 0.1018, 0.1017, 0.1018, 0.1018, 0.1018, 0.1018, 0.1018",\
                 "0.1152, 0.1152, 0.1151, 0.1151, 0.1151, 0.1151, 0.1151, 0.1151, 0.1151, 0.1151",\
                 "0.1311, 0.1311, 0.1311, 0.131, 0.131, 0.131, 0.131, 0.131, 0.131, 0.131");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.05387, 0.05394, 0.05395, 0.05395, 0.05409, 0.05433, 0.05518, 0.05554, 0.05677, 0.06251",\
                 "0.05359, 0.05363, 0.05357, 0.05365, 0.05378, 0.05414, 0.0546, 0.05514, 0.05617, 0.06207",\
                 "0.05345, 0.05347, 0.05341, 0.05349, 0.05364, 0.05398, 0.05452, 0.05495, 0.05637, 0.06259",\
                 "0.05489, 0.05482, 0.05485, 0.05502, 0.0551, 0.05554, 0.05611, 0.05633, 0.05776, 0.0644",\
                 "0.05857, 0.05856, 0.05864, 0.0589, 0.059, 0.05924, 0.05987, 0.06049, 0.06159, 0.06892",\
                 "0.06542, 0.06546, 0.06534, 0.06533, 0.06603, 0.06631, 0.0668, 0.06722, 0.068, 0.07707",\
                 "0.07558, 0.0755, 0.0756, 0.07533, 0.07571, 0.07671, 0.07729, 0.07732, 0.07864, 0.08933",\
                 "0.08917, 0.08921, 0.08933, 0.08905, 0.08912, 0.08958, 0.09098, 0.09197, 0.09298, 0.1066",\
                 "0.1066, 0.1066, 0.1068, 0.1067, 0.1066, 0.1066, 0.1074, 0.1092, 0.1118, 0.1314",\
                 "0.1279, 0.1279, 0.128, 0.1281, 0.1281, 0.1281, 0.1283, 0.1296, 0.1351, 0.1647");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.1119, 0.1123, 0.1136, 0.1147, 0.1155, 0.1159, 0.1162, 0.1164, 0.1165, 0.1165",\
                 "0.1118, 0.1122, 0.1134, 0.1146, 0.1153, 0.1158, 0.1161, 0.1162, 0.1163, 0.1164",\
                 "0.1115, 0.1119, 0.1132, 0.1144, 0.1151, 0.1156, 0.1158, 0.116, 0.1161, 0.1162",\
                 "0.1121, 0.1125, 0.1137, 0.1149, 0.1156, 0.1161, 0.1163, 0.1165, 0.1166, 0.1167",\
                 "0.1142, 0.1146, 0.1157, 0.1168, 0.1176, 0.118, 0.1183, 0.1185, 0.1186, 0.1187",\
                 "0.118, 0.1184, 0.1194, 0.1205, 0.1213, 0.1217, 0.122, 0.1222, 0.1223, 0.1224",\
                 "0.124, 0.1243, 0.1252, 0.1262, 0.127, 0.1274, 0.1278, 0.1279, 0.1281, 0.1282",\
                 "0.1322, 0.1323, 0.133, 0.134, 0.1347, 0.1352, 0.1355, 0.1357, 0.1359, 0.136",\
                 "0.1425, 0.1425, 0.1432, 0.1439, 0.1447, 0.1452, 0.1455, 0.1457, 0.1459, 0.146",\
                 "0.1552, 0.1552, 0.1555, 0.1562, 0.1569, 0.1574, 0.1577, 0.1579, 0.1581, 0.1582");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.09993, 0.1008, 0.1022, 0.1038, 0.1052, 0.1062, 0.1072, 0.1079, 0.1091, 0.1156",\
                 "0.09967, 0.1003, 0.1018, 0.1035, 0.1047, 0.1058, 0.1067, 0.1075, 0.1089, 0.1162",\
                 "0.09926, 0.1001, 0.1015, 0.1032, 0.1044, 0.1056, 0.1067, 0.1073, 0.1086, 0.1155",\
                 "0.1002, 0.1009, 0.1024, 0.104, 0.1053, 0.1064, 0.1075, 0.1081, 0.1098, 0.1176",\
                 "0.1028, 0.1034, 0.1048, 0.1064, 0.1077, 0.1089, 0.1097, 0.1107, 0.1125, 0.1222",\
                 "0.1071, 0.1078, 0.1092, 0.1108, 0.112, 0.1132, 0.1145, 0.1152, 0.1172, 0.1289",\
                 "0.1136, 0.1141, 0.1154, 0.1168, 0.1185, 0.1197, 0.1207, 0.1214, 0.124, 0.1402",\
                 "0.1223, 0.1228, 0.1239, 0.1251, 0.1266, 0.1284, 0.1297, 0.1303, 0.1327, 0.1548",\
                 "0.1335, 0.134, 0.1351, 0.1362, 0.1375, 0.1391, 0.1409, 0.1424, 0.1467, 0.179",\
                 "0.1473, 0.1476, 0.1487, 0.1499, 0.1512, 0.1518, 0.1535, 0.1562, 0.1654, 0.2191");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.394, 0.417, 0.49, 0.634, 0.841, 1.071, 1.33, 1.625, 1.956, 2.325");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.46, 0.476, 0.548, 0.683, 0.854, 1.052, 1.287, 1.558, 1.866, \
                  2.21");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.338, 0.3947, 0.5353, 0.7194, 0.9399, 1.205, 1.525, 1.912, 2.377, 2.928",\
                 "0.356, 0.4128, 0.5532, 0.7372, 0.9576, 1.223, 1.542, 1.93, 2.394, 2.946",\
                 "0.4208, 0.4771, 0.6171, 0.8006, 1.021, 1.286, 1.605, 1.993, 2.457, 3.009",\
                 "0.5261, 0.5827, 0.721, 0.9032, 1.123, 1.387, 1.707, 2.093, 2.558, 3.109",\
                 "0.5993, 0.6579, 0.7957, 0.976, 1.194, 1.458, 1.777, 2.164, 2.629, 3.18",\
                 "0.6215, 0.6796, 0.8172, 0.9976, 1.216, 1.479, 1.797, 2.184, 2.648, 3.199",\
                 "0.6058, 0.6639, 0.8016, 0.9818, 1.2, 1.463, 1.782, 2.168, 2.631, 3.181",\
                 "0.5542, 0.6131, 0.7511, 0.931, 1.149, 1.412, 1.73, 2.116, 2.58, 3.13",\
                 "0.4659, 0.5252, 0.6641, 0.845, 1.063, 1.326, 1.644, 2.03, 2.494, 3.044",\
                 "0.3392, 0.3996, 0.5401, 0.7211, 0.9396, 1.202, 1.521, 1.907, 2.371, 2.921");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.3292, 0.3849, 0.534, 0.7732, 1.128, 1.624, 2.275, 3.095, 4.098, 5.293",\
                 "0.3447, 0.4004, 0.5493, 0.7888, 1.144, 1.639, 2.29, 3.111, 4.113, 5.307",\
                 "0.4005, 0.4562, 0.6052, 0.8445, 1.2, 1.695, 2.346, 3.165, 4.17, 5.364",\
                 "0.483, 0.5424, 0.6957, 0.9363, 1.291, 1.787, 2.438, 3.257, 4.258, 5.451",\
                 "0.5422, 0.6097, 0.7745, 1.021, 1.378, 1.872, 2.524, 3.345, 4.347, 5.541",\
                 "0.5718, 0.6495, 0.8285, 1.081, 1.441, 1.937, 2.588, 3.409, 4.408, 5.604",\
                 "0.5683, 0.6576, 0.856, 1.119, 1.48, 1.977, 2.628, 3.448, 4.448, 5.642",\
                 "0.5283, 0.6302, 0.8525, 1.13, 1.497, 1.994, 2.645, 3.465, 4.466, 5.658",\
                 "0.4498, 0.5644, 0.8134, 1.11, 1.485, 1.986, 2.638, 3.459, 4.459, 5.652",\
                 "0.3311, 0.4589, 0.7348, 1.055, 1.442, 1.949, 2.604, 3.425, 4.427, 5.62");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.184, 0.2387, 0.3729, 0.5597, 0.8189, 1.18, 1.663, 2.291, 3.08, 4.027",\
                 "0.184, 0.2392, 0.3732, 0.5598, 0.8195, 1.18, 1.663, 2.292, 3.081, 4.027",\
                 "0.1817, 0.237, 0.3716, 0.5578, 0.8192, 1.18, 1.663, 2.289, 3.081, 4.03",\
                 "0.1879, 0.2383, 0.3676, 0.5548, 0.8164, 1.176, 1.662, 2.292, 3.076, 4.032",\
                 "0.2008, 0.2472, 0.3678, 0.5514, 0.8126, 1.175, 1.661, 2.291, 3.08, 4.028",\
                 "0.2008, 0.2464, 0.3668, 0.5526, 0.8124, 1.17, 1.655, 2.289, 3.073, 4.031",\
                 "0.2016, 0.2466, 0.367, 0.5522, 0.8124, 1.172, 1.655, 2.283, 3.069, 4.026",\
                 "0.204, 0.249, 0.3676, 0.5516, 0.8118, 1.171, 1.655, 2.283, 3.069, 4.018",\
                 "0.2082, 0.252, 0.3696, 0.5528, 0.8122, 1.172, 1.655, 2.283, 3.073, 4.021",\
                 "0.2134, 0.2568, 0.3732, 0.5554, 0.8142, 1.171, 1.655, 2.283, 3.073, 4.019");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.1685, 0.2291, 0.4238, 0.8033, 1.423, 2.306, 3.474, 4.947, 6.754, 8.896",\
                 "0.1684, 0.2297, 0.4243, 0.8029, 1.422, 2.307, 3.472, 4.946, 6.745, 8.89",\
                 "0.1692, 0.2297, 0.4241, 0.8032, 1.422, 2.306, 3.474, 4.945, 6.75, 8.886",\
                 "0.1861, 0.2418, 0.4294, 0.805, 1.423, 2.311, 3.473, 4.943, 6.738, 8.88",\
                 "0.2162, 0.2712, 0.4506, 0.8158, 1.427, 2.306, 3.473, 4.947, 6.754, 8.885",\
                 "0.2514, 0.3078, 0.4776, 0.83, 1.433, 2.313, 3.478, 4.942, 6.738, 8.887",\
                 "0.2926, 0.3496, 0.514, 0.8484, 1.439, 2.316, 3.48, 4.954, 6.748, 8.883",\
                 "0.3354, 0.4, 0.5616, 0.8762, 1.452, 2.318, 3.482, 4.949, 6.747, 8.876",\
                 "0.3802, 0.4516, 0.6194, 0.9172, 1.477, 2.33, 3.487, 4.953, 6.743, 8.881",\
                 "0.4274, 0.5048, 0.682, 0.9674, 1.506, 2.354, 3.498, 4.956, 6.747, 8.882");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.7138, 0.7771, 0.9288, 1.119, 1.342, 1.608, 1.929, 2.316, 2.781, 3.333",\
                 "0.7304, 0.7936, 0.9452, 1.135, 1.359, 1.625, 1.945, 2.333, 2.798, 3.349",\
                 "0.7871, 0.8505, 1.002, 1.192, 1.416, 1.682, 2.002, 2.39, 2.855, 3.406",\
                 "0.8625, 0.9258, 1.077, 1.268, 1.491, 1.757, 2.078, 2.465, 2.93, 3.481",\
                 "0.9159, 0.9789, 1.131, 1.322, 1.545, 1.812, 2.132, 2.52, 2.985, 3.535",\
                 "0.9441, 1.008, 1.16, 1.351, 1.575, 1.841, 2.162, 2.55, 3.014, 3.566",\
                 "0.9453, 1.009, 1.162, 1.353, 1.578, 1.845, 2.165, 2.553, 3.018, 3.569",\
                 "0.9145, 0.9787, 1.133, 1.325, 1.55, 1.817, 2.138, 2.526, 2.991, 3.542",\
                 "0.8493, 0.9137, 1.069, 1.263, 1.489, 1.756, 2.078, 2.465, 2.93, 3.482",\
                 "0.7467, 0.8118, 0.9684, 1.164, 1.391, 1.659, 1.98, 2.368, 2.834, 3.385");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.8456, 0.9039, 1.058, 1.301, 1.659, 2.156, 2.808, 3.63, 4.632, 5.827",\
                 "0.8622, 0.9206, 1.074, 1.318, 1.676, 2.172, 2.825, 3.646, 4.648, 5.844",\
                 "0.9321, 0.9904, 1.144, 1.387, 1.746, 2.242, 2.895, 3.717, 4.718, 5.912",\
                 "1.075, 1.133, 1.287, 1.53, 1.888, 2.385, 3.038, 3.859, 4.863, 6.057",\
                 "1.269, 1.328, 1.482, 1.725, 2.083, 2.58, 3.232, 4.053, 5.058, 6.253",\
                 "1.492, 1.551, 1.706, 1.95, 2.308, 2.805, 3.458, 4.28, 5.283, 6.478",\
                 "1.749, 1.808, 1.964, 2.208, 2.567, 3.063, 3.716, 4.536, 5.54, 6.737",\
                 "2.044, 2.104, 2.26, 2.505, 2.864, 3.361, 4.013, 4.834, 5.836, 7.029",\
                 "2.378, 2.438, 2.596, 2.841, 3.2, 3.698, 4.35, 5.171, 6.171, 7.364",\
                 "2.753, 2.814, 2.974, 3.22, 3.579, 4.077, 4.73, 5.551, 6.551, 7.744");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.2014, 0.2573, 0.3864, 0.5671, 0.8238, 1.18, 1.663, 2.293, 3.081, 4.029",\
                 "0.201, 0.257, 0.3861, 0.5664, 0.824, 1.18, 1.663, 2.293, 3.081, 4.025",\
                 "0.2015, 0.2574, 0.3864, 0.5662, 0.8234, 1.179, 1.662, 2.294, 3.081, 4.027",\
                 "0.2018, 0.2576, 0.387, 0.5672, 0.8242, 1.18, 1.663, 2.293, 3.081, 4.026",\
                 "0.2026, 0.2588, 0.3878, 0.568, 0.8246, 1.179, 1.664, 2.29, 3.077, 4.032",\
                 "0.2038, 0.2602, 0.3894, 0.5698, 0.8228, 1.18, 1.662, 2.294, 3.079, 4.033",\
                 "0.2058, 0.2626, 0.3922, 0.5718, 0.8258, 1.181, 1.663, 2.289, 3.081, 4.028",\
                 "0.2088, 0.2664, 0.3956, 0.5748, 0.8266, 1.182, 1.663, 2.293, 3.076, 4.025",\
                 "0.212, 0.2706, 0.3996, 0.5768, 0.8296, 1.184, 1.664, 2.292, 3.077, 4.025",\
                 "0.2158, 0.2754, 0.405, 0.5814, 0.832, 1.187, 1.666, 2.294, 3.077, 4.033");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.008815, 0.01502, 0.03682, 0.07843, 0.1433, 0.2342, 0.354, 0.5048, 0.6889, 0.9083");
          values("0.1677, 0.2283, 0.423, 0.8024, 1.422, 2.307, 3.473, 4.945, 6.745, 8.887",\
                 "0.1695, 0.2277, 0.423, 0.8024, 1.422, 2.307, 3.475, 4.948, 6.741, 8.886",\
                 "0.1678, 0.2282, 0.4228, 0.8022, 1.423, 2.305, 3.48, 4.952, 6.744, 8.886",\
                 "0.1692, 0.2276, 0.4224, 0.8022, 1.423, 2.311, 3.474, 4.946, 6.752, 8.886",\
                 "0.1702, 0.2302, 0.4238, 0.8026, 1.423, 2.306, 3.472, 4.944, 6.75, 8.89",\
                 "0.1718, 0.232, 0.4246, 0.8044, 1.423, 2.307, 3.474, 4.943, 6.752, 8.899",\
                 "0.174, 0.2332, 0.4268, 0.805, 1.423, 2.307, 3.478, 4.944, 6.753, 8.897",\
                 "0.1774, 0.2372, 0.43, 0.8056, 1.424, 2.307, 3.472, 4.941, 6.737, 8.882",\
                 "0.1808, 0.2402, 0.4322, 0.8076, 1.424, 2.31, 3.473, 4.944, 6.737, 8.885",\
                 "0.1846, 0.2442, 0.435, 0.809, 1.427, 2.31, 3.473, 4.942, 6.738, 8.88");
        }
      }
    }
  }

