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

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "4.828824e-05" ;
    }

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.03318, 0.0327, 0.03228, 0.03249, 0.03318, 0.03441, 0.03616, \
                  0.03855, 0.04167, 0.04566");
        }

        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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.05619, 0.05553, 0.05461, 0.05432, 0.05479, 0.05635, 0.0591, \
                  0.06314, 0.06853, 0.07538");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01042, 0.0104, 0.01041, 0.0104, 0.01042, 0.01043, 0.01042, 0.01042, \
                  0.01042, 0.01042");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.01038, -0.01038, -0.01037, -0.01038, -0.01037, -0.01038, -0.01039, \
                  -0.01039, -0.0104, -0.01039");
        }
      }
    }

    pin(Z) {
      capacitance : 0.007419 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.9207 ;
      max_transition : 6.8 ;
      min_capacitance : 0.008419 ;
      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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.06476, 0.06479, 0.06479, 0.06478, 0.06477, 0.06476, 0.06478, 0.06478, 0.06479, 0.06479",\
                 "0.06488, 0.0649, 0.0649, 0.06488, 0.06486, 0.06488, 0.0649, 0.06491, 0.06491, 0.06492",\
                 "0.06553, 0.06555, 0.06555, 0.06552, 0.06552, 0.06553, 0.06554, 0.06555, 0.06555, 0.06555",\
                 "0.0664, 0.06641, 0.06638, 0.06635, 0.06634, 0.06635, 0.06637, 0.06637, 0.06638, 0.06638",\
                 "0.06783, 0.06783, 0.06781, 0.06777, 0.06775, 0.06777, 0.06778, 0.06778, 0.06779, 0.06778",\
                 "0.06987, 0.06993, 0.06994, 0.0699, 0.06988, 0.06988, 0.0699, 0.06988, 0.06988, 0.06992",\
                 "0.0729, 0.07289, 0.07282, 0.07283, 0.07284, 0.07286, 0.0728, 0.07284, 0.07284, 0.07285",\
                 "0.07667, 0.07664, 0.07664, 0.07661, 0.07659, 0.07658, 0.07662, 0.07658, 0.07666, 0.07665",\
                 "0.08135, 0.08134, 0.08131, 0.08128, 0.08127, 0.08128, 0.08128, 0.08128, 0.08129, 0.08131",\
                 "0.0869, 0.0869, 0.08685, 0.08682, 0.0868, 0.08681, 0.08682, 0.08682, 0.08684, 0.08684");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.05019, 0.05021, 0.05018, 0.05019, 0.05033, 0.05087, 0.05127, 0.05183, 0.05296, 0.05393",\
                 "0.04995, 0.04997, 0.04994, 0.05003, 0.05015, 0.05063, 0.05127, 0.05163, 0.05217, 0.05353",\
                 "0.04945, 0.04959, 0.04944, 0.04944, 0.04962, 0.05009, 0.05048, 0.05143, 0.05237, 0.05274",\
                 "0.04941, 0.04949, 0.04949, 0.04944, 0.0496, 0.05009, 0.05062, 0.05123, 0.05217, 0.05274",\
                 "0.05001, 0.05008, 0.05005, 0.05021, 0.05033, 0.05073, 0.05137, 0.05222, 0.05257, 0.05333",\
                 "0.0517, 0.05184, 0.0518, 0.0516, 0.05213, 0.05237, 0.05264, 0.05341, 0.05375, 0.05512",\
                 "0.05445, 0.05468, 0.05464, 0.05443, 0.05449, 0.0555, 0.05578, 0.05579, 0.05653, 0.05766",\
                 "0.05842, 0.05859, 0.05862, 0.05837, 0.05837, 0.05871, 0.06014, 0.06074, 0.06068, 0.06198",\
                 "0.06364, 0.06373, 0.06398, 0.06367, 0.06367, 0.06362, 0.06446, 0.06668, 0.06643, 0.0665",\
                 "0.07021, 0.07029, 0.07054, 0.07048, 0.07041, 0.07065, 0.0705, 0.07163, 0.07363, 0.07438");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.104, 0.1048, 0.1064, 0.1078, 0.1085, 0.1089, 0.1091, 0.1093, 0.1094, 0.1095",\
                 "0.1033, 0.1041, 0.1058, 0.1071, 0.1078, 0.1083, 0.1085, 0.1086, 0.1087, 0.1088",\
                 "0.1024, 0.1032, 0.1048, 0.1061, 0.1069, 0.1073, 0.1076, 0.1077, 0.1078, 0.1079",\
                 "0.1019, 0.1025, 0.104, 0.1053, 0.1061, 0.1067, 0.107, 0.1072, 0.1074, 0.1075",\
                 "0.1026, 0.103, 0.1041, 0.1053, 0.1063, 0.1069, 0.1074, 0.1077, 0.1078, 0.108",\
                 "0.1048, 0.105, 0.1058, 0.1068, 0.1077, 0.1084, 0.1089, 0.1093, 0.1095, 0.1096",\
                 "0.1084, 0.1084, 0.1088, 0.1096, 0.1104, 0.1112, 0.1117, 0.112, 0.1123, 0.1125",\
                 "0.1135, 0.1134, 0.1134, 0.114, 0.1147, 0.1154, 0.1159, 0.1163, 0.1166, 0.1168",\
                 "0.1201, 0.1199, 0.1196, 0.1198, 0.1204, 0.121, 0.1215, 0.122, 0.1222, 0.1225",\
                 "0.1283, 0.1278, 0.1274, 0.1274, 0.1278, 0.1283, 0.1288, 0.1292, 0.1295, 0.1297");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.05171, 0.05262, 0.05419, 0.05555, 0.05623, 0.05702, 0.05774, 0.05826, 0.0594, 0.06056",\
                 "0.05131, 0.05223, 0.05379, 0.05502, 0.05585, 0.05669, 0.05727, 0.05787, 0.0594, 0.05957",\
                 "0.05022, 0.05091, 0.05232, 0.05369, 0.05465, 0.05556, 0.0564, 0.05707, 0.05801, 0.05878",\
                 "0.04921, 0.04988, 0.05099, 0.05227, 0.05352, 0.05467, 0.05549, 0.05648, 0.05722, 0.05818",\
                 "0.04893, 0.04947, 0.05068, 0.05181, 0.05302, 0.05435, 0.05563, 0.05668, 0.05742, 0.05858",\
                 "0.04975, 0.05038, 0.05122, 0.05247, 0.05387, 0.05481, 0.0558, 0.05707, 0.05841, 0.05898",\
                 "0.05186, 0.05234, 0.05306, 0.05397, 0.0553, 0.05698, 0.05792, 0.05846, 0.05959, 0.06092",\
                 "0.05531, 0.05573, 0.05642, 0.0573, 0.05866, 0.05966, 0.06161, 0.06282, 0.06296, 0.06445",\
                 "0.06013, 0.06045, 0.0613, 0.06199, 0.0629, 0.06358, 0.06529, 0.06737, 0.06831, 0.06877",\
                 "0.06666, 0.06697, 0.06781, 0.06837, 0.06957, 0.07007, 0.07083, 0.07272, 0.07524, 0.07702");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.297, 0.315, 0.376, 0.497, 0.674, 0.868, 1.075, 1.303, 1.555, \
                  1.832");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.349, 0.362, 0.421, 0.539, 0.688, 0.85, 1.031, 1.237, 1.469, \
                  1.729");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.2943, 0.3397, 0.4446, 0.5783, 0.7395, 0.9356, 1.176, 1.471, 1.828, 2.252",\
                 "0.3098, 0.3553, 0.46, 0.5938, 0.7549, 0.9512, 1.192, 1.487, 1.843, 2.267",\
                 "0.364, 0.4093, 0.5136, 0.6472, 0.8083, 1.005, 1.245, 1.54, 1.897, 2.321",\
                 "0.4596, 0.5037, 0.6066, 0.7395, 0.9001, 1.096, 1.337, 1.632, 1.988, 2.412",\
                 "0.53, 0.5735, 0.6755, 0.8075, 0.9678, 1.163, 1.404, 1.699, 2.055, 2.479",\
                 "0.5601, 0.6041, 0.7063, 0.8384, 0.9984, 1.194, 1.434, 1.728, 2.085, 2.509",\
                 "0.5638, 0.6075, 0.7095, 0.842, 1.002, 1.198, 1.438, 1.732, 2.088, 2.512",\
                 "0.5415, 0.5852, 0.6877, 0.8202, 0.9804, 1.176, 1.416, 1.711, 2.067, 2.49",\
                 "0.494, 0.538, 0.6406, 0.773, 0.9335, 1.129, 1.369, 1.664, 2.02, 2.444",\
                 "0.4195, 0.464, 0.5662, 0.6985, 0.8592, 1.055, 1.295, 1.59, 1.946, 2.37");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.2527, 0.2927, 0.4033, 0.5887, 0.87, 1.264, 1.782, 2.436, 3.234, 4.184",\
                 "0.2666, 0.3066, 0.4173, 0.6026, 0.884, 1.278, 1.796, 2.45, 3.248, 4.195",\
                 "0.3161, 0.3562, 0.4668, 0.6521, 0.9335, 1.327, 1.846, 2.499, 3.296, 4.244",\
                 "0.3969, 0.4387, 0.5512, 0.737, 1.018, 1.412, 1.931, 2.584, 3.382, 4.331",\
                 "0.4674, 0.5143, 0.6331, 0.8216, 1.103, 1.497, 2.015, 2.667, 3.465, 4.415",\
                 "0.5165, 0.5699, 0.6972, 0.8888, 1.172, 1.566, 2.084, 2.735, 3.535, 4.486",\
                 "0.542, 0.6024, 0.7405, 0.9365, 1.22, 1.614, 2.132, 2.785, 3.581, 4.533",\
                 "0.5436, 0.611, 0.7617, 0.9632, 1.247, 1.641, 2.159, 2.812, 3.608, 4.558",\
                 "0.5192, 0.5941, 0.7591, 0.9686, 1.254, 1.648, 2.166, 2.818, 3.615, 4.564",\
                 "0.4676, 0.55, 0.7301, 0.9503, 1.238, 1.632, 2.149, 2.801, 3.598, 4.547");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.1478, 0.1846, 0.2698, 0.4, 0.5889, 0.8559, 1.221, 1.697, 2.291, 3.005",\
                 "0.1479, 0.1846, 0.27, 0.4014, 0.5895, 0.8555, 1.221, 1.696, 2.289, 3.007",\
                 "0.1469, 0.1837, 0.2691, 0.4005, 0.5892, 0.8554, 1.221, 1.696, 2.29, 3.005",\
                 "0.1445, 0.1798, 0.2668, 0.3982, 0.5878, 0.8556, 1.22, 1.697, 2.29, 3.006",\
                 "0.146, 0.1798, 0.2652, 0.3952, 0.5856, 0.8532, 1.221, 1.695, 2.288, 3.007",\
                 "0.1456, 0.1798, 0.266, 0.397, 0.5848, 0.8506, 1.216, 1.695, 2.289, 3.005",\
                 "0.146, 0.1802, 0.2656, 0.3964, 0.5862, 0.8532, 1.217, 1.691, 2.284, 3.001",\
                 "0.1462, 0.1804, 0.2662, 0.397, 0.5866, 0.8542, 1.217, 1.693, 2.284, 2.998",\
                 "0.1468, 0.181, 0.2664, 0.397, 0.5868, 0.8536, 1.218, 1.693, 2.288, 3",\
                 "0.148, 0.1818, 0.267, 0.3984, 0.587, 0.8538, 1.22, 1.693, 2.288, 2.999");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.1131, 0.1574, 0.3055, 0.6012, 1.081, 1.762, 2.659, 3.789, 5.168, 6.815",\
                 "0.1127, 0.1574, 0.3054, 0.6012, 1.082, 1.762, 2.659, 3.787, 5.162, 6.805",\
                 "0.1132, 0.1577, 0.3056, 0.6009, 1.082, 1.76, 2.656, 3.789, 5.169, 6.812",\
                 "0.1213, 0.1636, 0.3079, 0.6016, 1.081, 1.761, 2.658, 3.789, 5.167, 6.814",\
                 "0.1404, 0.1818, 0.32, 0.6068, 1.083, 1.76, 2.658, 3.79, 5.169, 6.812",\
                 "0.1636, 0.2052, 0.335, 0.614, 1.086, 1.76, 2.654, 3.786, 5.16, 6.806",\
                 "0.1878, 0.2316, 0.3556, 0.6226, 1.089, 1.763, 2.654, 3.781, 5.161, 6.802",\
                 "0.2124, 0.2588, 0.3802, 0.6328, 1.092, 1.765, 2.658, 3.782, 5.16, 6.802",\
                 "0.238, 0.2874, 0.41, 0.6492, 1.095, 1.768, 2.657, 3.784, 5.154, 6.793",\
                 "0.2636, 0.3174, 0.4438, 0.6682, 1.102, 1.769, 2.659, 3.783, 5.156, 6.792");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.453, 0.5022, 0.6112, 0.7465, 0.9083, 1.104, 1.345, 1.64, 1.997, 2.421",\
                 "0.4685, 0.5177, 0.6267, 0.7618, 0.9236, 1.12, 1.361, 1.656, 2.012, 2.437",\
                 "0.5291, 0.5782, 0.6872, 0.8225, 0.9842, 1.181, 1.421, 1.716, 2.073, 2.497",\
                 "0.6467, 0.696, 0.8054, 0.9412, 1.103, 1.3, 1.541, 1.836, 2.193, 2.617",\
                 "0.8069, 0.8601, 0.9743, 1.113, 1.276, 1.473, 1.715, 2.01, 2.366, 2.79",\
                 "0.9821, 1.041, 1.166, 1.311, 1.478, 1.677, 1.919, 2.215, 2.571, 2.996",\
                 "1.171, 1.237, 1.372, 1.524, 1.696, 1.899, 2.144, 2.44, 2.798, 3.221",\
                 "1.377, 1.451, 1.598, 1.757, 1.935, 2.141, 2.388, 2.685, 3.044, 3.468",\
                 "1.608, 1.687, 1.847, 2.015, 2.197, 2.407, 2.656, 2.954, 3.313, 3.738",\
                 "1.866, 1.95, 2.124, 2.3, 2.487, 2.701, 2.952, 3.252, 3.611, 4.036");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.35, 0.3911, 0.5037, 0.6911, 0.9738, 1.368, 1.888, 2.54, 3.337, 4.289",\
                 "0.3632, 0.4041, 0.5167, 0.7042, 0.9869, 1.381, 1.901, 2.554, 3.351, 4.301",\
                 "0.408, 0.4487, 0.561, 0.7487, 1.032, 1.427, 1.946, 2.6, 3.395, 4.347",\
                 "0.4735, 0.5145, 0.6275, 0.8152, 1.099, 1.494, 2.014, 2.667, 3.465, 4.414",\
                 "0.5328, 0.576, 0.692, 0.8815, 1.165, 1.561, 2.08, 2.735, 3.533, 4.484",\
                 "0.5776, 0.6233, 0.7434, 0.9347, 1.22, 1.615, 2.134, 2.789, 3.585, 4.534",\
                 "0.6046, 0.6537, 0.7788, 0.9724, 1.258, 1.654, 2.174, 2.827, 3.624, 4.577",\
                 "0.6119, 0.6652, 0.7965, 0.9931, 1.279, 1.674, 2.194, 2.848, 3.646, 4.596",\
                 "0.5967, 0.6551, 0.7944, 0.9949, 1.281, 1.677, 2.196, 2.85, 3.648, 4.598",\
                 "0.5576, 0.621, 0.77, 0.9761, 1.264, 1.66, 2.179, 2.833, 3.63, 4.58");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.1549, 0.1883, 0.2698, 0.3998, 0.5873, 0.8542, 1.22, 1.697, 2.291, 3.007",\
                 "0.1547, 0.1886, 0.2695, 0.3994, 0.5865, 0.855, 1.221, 1.696, 2.291, 3.005",\
                 "0.1545, 0.1885, 0.27, 0.3999, 0.5884, 0.8554, 1.22, 1.697, 2.291, 3.004",\
                 "0.1575, 0.1909, 0.2718, 0.4012, 0.5874, 0.8554, 1.22, 1.696, 2.291, 3.006",\
                 "0.1776, 0.2086, 0.2828, 0.4062, 0.5916, 0.857, 1.221, 1.697, 2.291, 3.007",\
                 "0.2076, 0.2388, 0.3062, 0.4232, 0.6026, 0.8644, 1.224, 1.699, 2.292, 3.003",\
                 "0.2408, 0.2718, 0.3322, 0.4436, 0.62, 0.8776, 1.233, 1.704, 2.294, 3.007",\
                 "0.2688, 0.3074, 0.3618, 0.465, 0.6378, 0.8922, 1.244, 1.711, 2.297, 3.006",\
                 "0.2904, 0.3396, 0.3926, 0.4874, 0.6562, 0.9062, 1.255, 1.72, 2.303, 3.012",\
                 "0.309, 0.3696, 0.4262, 0.5104, 0.676, 0.921, 1.267, 1.724, 2.309, 3.017");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.008419, 0.01472, 0.03682, 0.07903, 0.1448, 0.2371, 0.3585, 0.5114, 0.6982, 0.9207");
          values("0.1063, 0.1516, 0.3021, 0.6001, 1.082, 1.76, 2.657, 3.786, 5.164, 6.805",\
                 "0.1062, 0.152, 0.3023, 0.6009, 1.081, 1.761, 2.657, 3.785, 5.17, 6.801",\
                 "0.1071, 0.1528, 0.3027, 0.6003, 1.082, 1.762, 2.659, 3.783, 5.168, 6.802",\
                 "0.1098, 0.1547, 0.3036, 0.6002, 1.082, 1.761, 2.657, 3.787, 5.16, 6.804",\
                 "0.1186, 0.1628, 0.3102, 0.6038, 1.083, 1.762, 2.659, 3.79, 5.162, 6.807",\
                 "0.1276, 0.173, 0.318, 0.6088, 1.084, 1.76, 2.653, 3.785, 5.169, 6.81",\
                 "0.1412, 0.1862, 0.3288, 0.6128, 1.087, 1.763, 2.656, 3.78, 5.159, 6.796",\
                 "0.1568, 0.2026, 0.341, 0.6192, 1.089, 1.764, 2.656, 3.781, 5.158, 6.795",\
                 "0.1742, 0.221, 0.3572, 0.6278, 1.091, 1.766, 2.657, 3.783, 5.154, 6.796",\
                 "0.1934, 0.2426, 0.3782, 0.6392, 1.096, 1.766, 2.662, 3.782, 5.157, 6.792");
        }
      }
    }
  }

