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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "5.246802e-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.008199 ;
      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.05773, 0.05707, 0.05609, 0.05574, 0.05628, 0.05799, 0.06101, \
                  0.06545, 0.07128, 0.07872");
        }

        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.0355, 0.03503, 0.03459, 0.03479, 0.03551, 0.0368, 0.03869, 0.04131, \
                  0.04471, 0.04907");
        }

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

    pin(I) {
      capacitance : 0.004218 ;
      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.03194, 0.03157, 0.03098, 0.03099, 0.03145, 0.03255, 0.03421, \
                  0.03656, 0.0396, 0.04339");
        }

        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.01108, 0.01093, 0.01068, 0.01054, 0.01086, 0.01174, 0.01323, \
                  0.01539, 0.01826, 0.02189");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.007312 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.925 ;
      max_transition : 6.8 ;
      min_capacitance : 0.008312 ;
      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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.06489, 0.0649, 0.06486, 0.06487, 0.06486, 0.06486, 0.06489, 0.06488, 0.06491, 0.0649",\
                 "0.06492, 0.06493, 0.06492, 0.0649, 0.06489, 0.0649, 0.06492, 0.06492, 0.06493, 0.06493",\
                 "0.06551, 0.06556, 0.06551, 0.06549, 0.06549, 0.0655, 0.06551, 0.06552, 0.06553, 0.06553",\
                 "0.06641, 0.06644, 0.06642, 0.06638, 0.06637, 0.06639, 0.0664, 0.06641, 0.06642, 0.06642",\
                 "0.06792, 0.06791, 0.06792, 0.06788, 0.06785, 0.06787, 0.06788, 0.06788, 0.06788, 0.06788",\
                 "0.07025, 0.0702, 0.07022, 0.07019, 0.07018, 0.07018, 0.07018, 0.07019, 0.0702, 0.0702",\
                 "0.07346, 0.07343, 0.07342, 0.07339, 0.07339, 0.07341, 0.07342, 0.07343, 0.07342, 0.07343",\
                 "0.07756, 0.07759, 0.07757, 0.07753, 0.07752, 0.07753, 0.07753, 0.07755, 0.07756, 0.07755",\
                 "0.08266, 0.08267, 0.08263, 0.0826, 0.08259, 0.0826, 0.0826, 0.08261, 0.08261, 0.08262",\
                 "0.08874, 0.08874, 0.0887, 0.08869, 0.08867, 0.08868, 0.0887, 0.08869, 0.0887, 0.0887");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.05019, 0.05032, 0.05015, 0.05025, 0.05035, 0.0508, 0.05144, 0.0519, 0.0529, 0.05385",\
                 "0.04986, 0.04985, 0.04997, 0.04988, 0.05005, 0.05056, 0.05098, 0.0515, 0.05211, 0.05345",\
                 "0.04931, 0.04944, 0.0493, 0.04926, 0.04948, 0.04991, 0.05039, 0.05091, 0.05151, 0.05306",\
                 "0.0492, 0.04924, 0.04925, 0.04936, 0.04942, 0.04995, 0.05037, 0.05091, 0.05191, 0.05326",\
                 "0.0499, 0.04998, 0.04998, 0.05005, 0.05009, 0.05058, 0.05122, 0.0517, 0.0527, 0.05365",\
                 "0.05174, 0.05178, 0.05173, 0.05162, 0.05225, 0.05234, 0.0527, 0.05348, 0.05389, 0.05501",\
                 "0.0548, 0.05483, 0.05494, 0.05469, 0.05476, 0.05579, 0.05603, 0.05625, 0.05745, 0.05837",\
                 "0.05906, 0.05909, 0.05926, 0.05898, 0.05906, 0.05943, 0.06088, 0.0612, 0.06082, 0.0619",\
                 "0.06485, 0.06483, 0.06515, 0.06484, 0.06484, 0.06487, 0.06554, 0.06774, 0.06814, 0.06781",\
                 "0.07197, 0.07198, 0.07234, 0.07215, 0.07215, 0.07212, 0.07219, 0.07348, 0.07594, 0.07725");
        }
      }

      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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.1045, 0.1053, 0.107, 0.1083, 0.1091, 0.1095, 0.1098, 0.1099, 0.11, 0.1101",\
                 "0.1044, 0.1052, 0.1069, 0.1082, 0.109, 0.1094, 0.1097, 0.1098, 0.1099, 0.11",\
                 "0.1039, 0.1047, 0.1063, 0.1076, 0.1084, 0.1088, 0.1091, 0.1093, 0.1094, 0.1094",\
                 "0.1034, 0.1042, 0.1058, 0.1072, 0.108, 0.1084, 0.1087, 0.1088, 0.1089, 0.109",\
                 "0.1035, 0.1043, 0.1059, 0.1072, 0.108, 0.1084, 0.1087, 0.1089, 0.109, 0.1091",\
                 "0.1043, 0.105, 0.1066, 0.1079, 0.1087, 0.1092, 0.1095, 0.1096, 0.1098, 0.1098",\
                 "0.1059, 0.1066, 0.108, 0.1093, 0.1102, 0.1107, 0.111, 0.1112, 0.1113, 0.1114",\
                 "0.108, 0.1087, 0.1101, 0.1114, 0.1123, 0.1128, 0.1131, 0.1134, 0.1135, 0.1136",\
                 "0.111, 0.1117, 0.113, 0.1143, 0.1152, 0.1158, 0.1161, 0.1163, 0.1165, 0.1166",\
                 "0.1148, 0.1154, 0.1167, 0.118, 0.1189, 0.1195, 0.1199, 0.1201, 0.1203, 0.1204");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.09417, 0.09484, 0.0962, 0.09753, 0.0987, 0.0997, 0.1006, 0.1017, 0.1027, 0.1032",\
                 "0.09377, 0.09448, 0.09584, 0.09716, 0.09824, 0.09925, 0.1002, 0.1009, 0.1017, 0.1027",\
                 "0.09321, 0.09387, 0.09533, 0.09664, 0.09767, 0.09871, 0.09959, 0.1009, 0.1011, 0.1025",\
                 "0.09294, 0.09367, 0.09507, 0.09642, 0.09745, 0.09839, 0.09929, 0.1001, 0.1009, 0.1019",\
                 "0.09326, 0.09384, 0.09529, 0.09654, 0.09751, 0.09867, 0.09959, 0.1003, 0.1013, 0.1024",\
                 "0.09415, 0.09484, 0.09602, 0.09725, 0.09856, 0.09964, 0.1006, 0.1019, 0.1027, 0.104",\
                 "0.09584, 0.09642, 0.09741, 0.09882, 0.1001, 0.1011, 0.102, 0.1029, 0.1039, 0.1058",\
                 "0.09823, 0.0988, 0.0998, 0.101, 0.1022, 0.1037, 0.1044, 0.1053, 0.1061, 0.1073",\
                 "0.1014, 0.1019, 0.103, 0.104, 0.1051, 0.1061, 0.1082, 0.1094, 0.1095, 0.1104",\
                 "0.1054, 0.1059, 0.1071, 0.1081, 0.1091, 0.1099, 0.1111, 0.1132, 0.1145, 0.1156");
        }
      }

      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.26, 0.279, 0.34, 0.461, 0.629, 0.809, 1.003, 1.216, 1.453, 1.714");
        }

        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.332, 0.345, 0.405, 0.521, 0.664, 0.821, 0.996, 1.193, 1.417, \
                  1.662");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.2904, 0.3341, 0.4344, 0.564, 0.7219, 0.9159, 1.156, 1.451, 1.81, 2.235",\
                 "0.3058, 0.3494, 0.4499, 0.5794, 0.7372, 0.9314, 1.171, 1.467, 1.825, 2.251",\
                 "0.3594, 0.4029, 0.503, 0.6324, 0.7902, 0.9843, 1.224, 1.52, 1.878, 2.303",\
                 "0.452, 0.4944, 0.5927, 0.7212, 0.8787, 1.073, 1.313, 1.608, 1.966, 2.392",\
                 "0.5193, 0.5611, 0.6585, 0.7861, 0.9431, 1.137, 1.377, 1.672, 2.03, 2.456",\
                 "0.5514, 0.5932, 0.6908, 0.8186, 0.9755, 1.169, 1.408, 1.703, 2.061, 2.487",\
                 "0.5587, 0.6006, 0.6985, 0.8263, 0.9833, 1.177, 1.416, 1.711, 2.068, 2.494",\
                 "0.5423, 0.5842, 0.6821, 0.8102, 0.9672, 1.161, 1.4, 1.695, 2.053, 2.478",\
                 "0.502, 0.544, 0.6422, 0.7701, 0.9273, 1.121, 1.361, 1.656, 2.013, 2.439",\
                 "0.437, 0.4792, 0.5777, 0.7057, 0.8628, 1.056, 1.296, 1.591, 1.949, 2.374");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.2531, 0.2935, 0.4047, 0.5903, 0.8719, 1.266, 1.784, 2.439, 3.237, 4.187",\
                 "0.2669, 0.3073, 0.4185, 0.6042, 0.8857, 1.28, 1.799, 2.453, 3.25, 4.202",\
                 "0.3163, 0.3567, 0.4678, 0.6534, 0.935, 1.329, 1.847, 2.502, 3.3, 4.251",\
                 "0.397, 0.4393, 0.5524, 0.7384, 1.02, 1.414, 1.932, 2.585, 3.385, 4.336",\
                 "0.4678, 0.5152, 0.6345, 0.8234, 1.105, 1.499, 2.018, 2.671, 3.469, 4.419",\
                 "0.518, 0.5718, 0.6997, 0.8918, 1.175, 1.569, 2.087, 2.741, 3.539, 4.49",\
                 "0.5457, 0.6065, 0.7454, 0.9416, 1.225, 1.62, 2.138, 2.791, 3.588, 4.539",\
                 "0.5506, 0.6186, 0.7696, 0.9717, 1.256, 1.65, 2.169, 2.822, 3.618, 4.567",\
                 "0.5318, 0.6069, 0.7721, 0.9819, 1.268, 1.661, 2.179, 2.833, 3.629, 4.579",\
                 "0.4874, 0.57, 0.7501, 0.9702, 1.258, 1.652, 2.17, 2.822, 3.619, 4.569");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.1399, 0.1747, 0.2575, 0.3875, 0.5774, 0.8481, 1.217, 1.699, 2.295, 3.018",\
                 "0.1403, 0.175, 0.2576, 0.3882, 0.5774, 0.8472, 1.217, 1.698, 2.295, 3.017",\
                 "0.1395, 0.1739, 0.2569, 0.3874, 0.577, 0.8461, 1.218, 1.697, 2.295, 3.017",\
                 "0.136, 0.1698, 0.2545, 0.3854, 0.5756, 0.8472, 1.217, 1.699, 2.298, 3.016",\
                 "0.1364, 0.169, 0.2528, 0.3824, 0.5734, 0.8458, 1.217, 1.698, 2.297, 3.014",\
                 "0.136, 0.1686, 0.2526, 0.3828, 0.5736, 0.8426, 1.212, 1.696, 2.295, 3.017",\
                 "0.1362, 0.1692, 0.2528, 0.3834, 0.5742, 0.8446, 1.213, 1.693, 2.291, 3.013",\
                 "0.137, 0.1696, 0.2528, 0.3844, 0.575, 0.8458, 1.213, 1.694, 2.291, 3.008",\
                 "0.1374, 0.17, 0.2534, 0.3844, 0.5754, 0.8444, 1.214, 1.695, 2.294, 3.01",\
                 "0.1386, 0.1712, 0.254, 0.3846, 0.5752, 0.8452, 1.216, 1.695, 2.294, 3.011");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.1122, 0.1576, 0.3054, 0.6007, 1.08, 1.761, 2.659, 3.788, 5.167, 6.816",\
                 "0.1121, 0.1576, 0.3052, 0.6016, 1.082, 1.762, 2.655, 3.788, 5.16, 6.815",\
                 "0.112, 0.1573, 0.3051, 0.6011, 1.081, 1.761, 2.659, 3.784, 5.165, 6.811",\
                 "0.1204, 0.1634, 0.3076, 0.6009, 1.082, 1.762, 2.659, 3.787, 5.164, 6.815",\
                 "0.1398, 0.1818, 0.32, 0.6064, 1.083, 1.76, 2.654, 3.789, 5.17, 6.815",\
                 "0.1628, 0.2038, 0.335, 0.6132, 1.085, 1.762, 2.653, 3.785, 5.165, 6.804",\
                 "0.1866, 0.23, 0.3546, 0.6218, 1.088, 1.763, 2.656, 3.784, 5.163, 6.808",\
                 "0.2106, 0.2568, 0.3786, 0.6326, 1.092, 1.764, 2.657, 3.783, 5.158, 6.802",\
                 "0.2352, 0.2854, 0.4086, 0.6474, 1.096, 1.766, 2.658, 3.785, 5.156, 6.794",\
                 "0.2606, 0.3146, 0.4424, 0.6678, 1.101, 1.767, 2.659, 3.784, 5.159, 6.794");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : negative_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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.5842, 0.6319, 0.7369, 0.8682, 1.027, 1.221, 1.461, 1.757, 2.115, 2.541",\
                 "0.5986, 0.6462, 0.7513, 0.8825, 1.041, 1.235, 1.476, 1.771, 2.129, 2.555",\
                 "0.6484, 0.6961, 0.801, 0.9323, 1.091, 1.285, 1.526, 1.821, 2.179, 2.605",\
                 "0.7202, 0.7678, 0.8728, 1.004, 1.163, 1.357, 1.597, 1.893, 2.251, 2.677",\
                 "0.7792, 0.8269, 0.9321, 1.063, 1.222, 1.417, 1.657, 1.953, 2.311, 2.737",\
                 "0.8218, 0.8697, 0.975, 1.107, 1.265, 1.46, 1.7, 1.996, 2.354, 2.78",\
                 "0.8448, 0.8928, 0.9984, 1.13, 1.289, 1.484, 1.724, 2.02, 2.378, 2.803",\
                 "0.848, 0.8963, 1.002, 1.134, 1.293, 1.487, 1.728, 2.023, 2.381, 2.808",\
                 "0.8291, 0.8775, 0.9837, 1.116, 1.275, 1.47, 1.71, 2.006, 2.364, 2.79",\
                 "0.7857, 0.8347, 0.9417, 1.074, 1.234, 1.429, 1.669, 1.965, 2.323, 2.749");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.6462, 0.6879, 0.8011, 0.9895, 1.273, 1.668, 2.188, 2.841, 3.64, 4.588",\
                 "0.6615, 0.703, 0.8163, 1.005, 1.288, 1.683, 2.203, 2.856, 3.653, 4.605",\
                 "0.7215, 0.7629, 0.8763, 1.064, 1.348, 1.743, 2.263, 2.915, 3.715, 4.667",\
                 "0.8424, 0.884, 0.9973, 1.185, 1.469, 1.864, 2.383, 3.038, 3.836, 4.786",\
                 "1.011, 1.052, 1.166, 1.354, 1.638, 2.033, 2.553, 3.206, 4.003, 4.955",\
                 "1.198, 1.24, 1.354, 1.542, 1.826, 2.221, 2.741, 3.395, 4.194, 5.145",\
                 "1.401, 1.444, 1.558, 1.747, 2.03, 2.426, 2.945, 3.6, 4.395, 5.346",\
                 "1.625, 1.668, 1.782, 1.971, 2.255, 2.65, 3.169, 3.823, 4.62, 5.573",\
                 "1.872, 1.914, 2.03, 2.219, 2.503, 2.898, 3.418, 4.071, 4.868, 5.818",\
                 "2.145, 2.189, 2.305, 2.494, 2.778, 3.174, 3.693, 4.346, 5.144, 6.093");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.148, 0.1799, 0.2583, 0.3875, 0.5769, 0.8476, 1.217, 1.697, 2.295, 3.017",\
                 "0.148, 0.1803, 0.2582, 0.3871, 0.5769, 0.8472, 1.216, 1.698, 2.296, 3.018",\
                 "0.1486, 0.1799, 0.2583, 0.3866, 0.576, 0.8476, 1.217, 1.699, 2.296, 3.018",\
                 "0.1486, 0.1804, 0.2584, 0.3878, 0.5764, 0.8474, 1.216, 1.699, 2.297, 3.016",\
                 "0.149, 0.1806, 0.2592, 0.3876, 0.5766, 0.8478, 1.217, 1.698, 2.297, 3.014",\
                 "0.15, 0.1816, 0.2594, 0.3874, 0.5758, 0.8456, 1.218, 1.699, 2.298, 3.014",\
                 "0.1514, 0.183, 0.2602, 0.3886, 0.5764, 0.8464, 1.215, 1.696, 2.294, 3.017",\
                 "0.1524, 0.1836, 0.2614, 0.388, 0.5768, 0.8468, 1.216, 1.698, 2.294, 3.012",\
                 "0.154, 0.1854, 0.2624, 0.3892, 0.5772, 0.847, 1.218, 1.697, 2.296, 3.013",\
                 "0.1568, 0.1876, 0.2642, 0.3898, 0.5784, 0.847, 1.217, 1.698, 2.296, 3.016");
        }

        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.008312, 0.01464, 0.03685, 0.07926, 0.1453, 0.2381, 0.3601, 0.5137, 0.7014, 0.925");
          values("0.1083, 0.1542, 0.3033, 0.6003, 1.082, 1.76, 2.654, 3.79, 5.171, 6.813",\
                 "0.1085, 0.1542, 0.3033, 0.6002, 1.081, 1.762, 2.658, 3.786, 5.167, 6.805",\
                 "0.1083, 0.1537, 0.3033, 0.6002, 1.08, 1.761, 2.657, 3.79, 5.16, 6.808",\
                 "0.1086, 0.1538, 0.303, 0.6002, 1.082, 1.762, 2.659, 3.783, 5.159, 6.804",\
                 "0.1092, 0.1546, 0.304, 0.6002, 1.081, 1.761, 2.656, 3.787, 5.167, 6.805",\
                 "0.1102, 0.1552, 0.3044, 0.6004, 1.081, 1.76, 2.655, 3.789, 5.165, 6.814",\
                 "0.1116, 0.1564, 0.3054, 0.6014, 1.081, 1.758, 2.656, 3.782, 5.168, 6.812",\
                 "0.113, 0.1582, 0.306, 0.602, 1.082, 1.758, 2.653, 3.782, 5.161, 6.797",\
                 "0.1154, 0.16, 0.3082, 0.6032, 1.082, 1.759, 2.652, 3.778, 5.157, 6.803",\
                 "0.1172, 0.1618, 0.3094, 0.6026, 1.081, 1.759, 2.651, 3.776, 5.149, 6.792");
        }
      }
    }
  }

