/*
 * 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_1) {
    area : 30.732800 ;

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "7.2987e-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.005505 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 11 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.05782, 0.05727, 0.05717, 0.05871, 0.06195, 0.06693, 0.07388, \
                  0.0832, 0.09544, 0.1112");
        }

        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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.08452, 0.08378, 0.08341, 0.08525, 0.09012, 0.09855, 0.1107, \
                  0.1271, 0.148, 0.1735");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.00628, 0.006285, 0.006267, 0.006265, 0.006267, 0.006285, 0.006278, \
                  0.006276, 0.006272, 0.006282");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.006255, -0.006263, -0.006265, -0.006251, -0.006244, -0.006259, \
                  -0.006259, -0.006261, -0.006257, -0.006258");
        }
      }
    }

    pin(Z) {
      capacitance : 0.003025 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.3607 ;
      max_transition : 11 ;
      min_capacitance : 0.004025 ;
      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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.06654, 0.06654, 0.06654, 0.06651, 0.06652, 0.06654, 0.06654, 0.06655, 0.06656, 0.06657",\
                 "0.06661, 0.06658, 0.06655, 0.06655, 0.06655, 0.06657, 0.06659, 0.0666, 0.0666, 0.0666",\
                 "0.06826, 0.06826, 0.06828, 0.06822, 0.06825, 0.06823, 0.06825, 0.06825, 0.06826, 0.06827",\
                 "0.07137, 0.07137, 0.07134, 0.07131, 0.07133, 0.07133, 0.07134, 0.07135, 0.07136, 0.07136",\
                 "0.0764, 0.07638, 0.07638, 0.07637, 0.07636, 0.07637, 0.07638, 0.07638, 0.07639, 0.07639",\
                 "0.0837, 0.08374, 0.08374, 0.08368, 0.0837, 0.08373, 0.0837, 0.08373, 0.08374, 0.08374",\
                 "0.09357, 0.09356, 0.09351, 0.09353, 0.09354, 0.09356, 0.09357, 0.09357, 0.09357, 0.09358",\
                 "0.106, 0.106, 0.106, 0.106, 0.1059, 0.106, 0.106, 0.106, 0.106, 0.106",\
                 "0.1211, 0.1211, 0.1211, 0.1211, 0.1211, 0.1211, 0.1211, 0.1211, 0.1211, 0.1211",\
                 "0.1391, 0.1391, 0.1391, 0.139, 0.1391, 0.1391, 0.1391, 0.1391, 0.139, 0.1391");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.04149, 0.04146, 0.0415, 0.04145, 0.0417, 0.04202, 0.04239, 0.04305, 0.04403, 0.05385",\
                 "0.04101, 0.04109, 0.04101, 0.04101, 0.04128, 0.04166, 0.042, 0.04257, 0.04361, 0.05427",\
                 "0.04056, 0.04054, 0.04055, 0.04051, 0.04077, 0.04106, 0.04149, 0.04209, 0.04329, 0.05367",\
                 "0.04189, 0.04194, 0.04186, 0.04195, 0.04215, 0.04244, 0.04299, 0.04347, 0.04521, 0.05778",\
                 "0.04599, 0.04607, 0.04597, 0.04618, 0.04623, 0.04652, 0.04689, 0.04737, 0.04918, 0.06363",\
                 "0.05334, 0.05336, 0.05333, 0.05323, 0.05385, 0.0539, 0.05433, 0.05478, 0.05719, 0.07525",\
                 "0.06418, 0.06422, 0.06423, 0.06409, 0.06417, 0.06533, 0.06531, 0.06552, 0.06768, 0.09189",\
                 "0.07872, 0.07874, 0.07871, 0.0787, 0.07869, 0.07898, 0.08043, 0.08099, 0.08341, 0.1161",\
                 "0.0972, 0.09722, 0.09727, 0.09721, 0.09726, 0.0971, 0.09776, 0.09977, 0.1058, 0.153",\
                 "0.1198, 0.1198, 0.1199, 0.1198, 0.1199, 0.1199, 0.12, 0.1213, 0.1342, 0.2117");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.1055, 0.1057, 0.1063, 0.107, 0.1076, 0.1079, 0.1081, 0.1082, 0.1083, 0.1083",\
                 "0.1052, 0.1054, 0.106, 0.1067, 0.1073, 0.1076, 0.1078, 0.1079, 0.108, 0.108",\
                 "0.1048, 0.105, 0.1056, 0.1063, 0.1068, 0.1072, 0.1074, 0.1075, 0.1076, 0.1077",\
                 "0.1053, 0.1054, 0.1059, 0.1066, 0.1071, 0.1075, 0.1077, 0.1079, 0.108, 0.108",\
                 "0.1078, 0.1078, 0.1079, 0.1083, 0.1088, 0.1092, 0.1094, 0.1096, 0.1097, 0.1098",\
                 "0.1124, 0.1121, 0.1119, 0.112, 0.1123, 0.1126, 0.1128, 0.113, 0.1132, 0.1132",\
                 "0.1191, 0.1186, 0.118, 0.1177, 0.1179, 0.1181, 0.1182, 0.1184, 0.1185, 0.1186",\
                 "0.1279, 0.1273, 0.1263, 0.1257, 0.1255, 0.1256, 0.1257, 0.1259, 0.126, 0.1261",\
                 "0.139, 0.1382, 0.1368, 0.136, 0.1356, 0.1355, 0.1356, 0.1356, 0.1357, 0.1358",\
                 "0.1524, 0.1515, 0.1498, 0.1487, 0.148, 0.1477, 0.1477, 0.1478, 0.1478, 0.1479");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.04943, 0.04976, 0.0506, 0.05141, 0.05228, 0.05296, 0.05356, 0.05428, 0.05555, 0.0668",\
                 "0.04926, 0.04962, 0.05044, 0.05126, 0.05213, 0.05275, 0.05341, 0.0541, 0.0554, 0.06692",\
                 "0.04892, 0.04927, 0.05001, 0.05078, 0.05168, 0.05227, 0.05323, 0.05374, 0.05505, 0.06683",\
                 "0.0488, 0.04908, 0.04971, 0.05045, 0.05132, 0.052, 0.05287, 0.05338, 0.05511, 0.06858",\
                 "0.04969, 0.05, 0.05052, 0.05117, 0.05201, 0.05287, 0.05356, 0.05449, 0.05636, 0.07246",\
                 "0.05229, 0.05245, 0.05271, 0.05342, 0.05441, 0.055, 0.05602, 0.05641, 0.05898, 0.07948",\
                 "0.05675, 0.05682, 0.05685, 0.05702, 0.05774, 0.05896, 0.05941, 0.06037, 0.06341, 0.09068",\
                 "0.06329, 0.06319, 0.06322, 0.06311, 0.0638, 0.06469, 0.06562, 0.06646, 0.07095, 0.1092",\
                 "0.07213, 0.07181, 0.07151, 0.07157, 0.07163, 0.07219, 0.07288, 0.07476, 0.08267, 0.1392",\
                 "0.08314, 0.08275, 0.08224, 0.08195, 0.08231, 0.08188, 0.0828, 0.08462, 0.101, 0.1912");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.253, 0.282, 0.379, 0.555, 0.758, 0.988, 1.256, 1.562, 1.907, \
                  2.288");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.452, 0.476, 0.573, 0.748, 0.958, 1.203, 1.487, 1.816, 2.186, \
                  2.6");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.4625, 0.5294, 0.6962, 0.9261, 1.222, 1.599, 2.077, 2.673, 3.398, 4.262",\
                 "0.4852, 0.5519, 0.7188, 0.9489, 1.245, 1.622, 2.1, 2.696, 3.421, 4.285",\
                 "0.5655, 0.632, 0.7981, 1.028, 1.323, 1.701, 2.178, 2.774, 3.499, 4.364",\
                 "0.6981, 0.7615, 0.9228, 1.15, 1.444, 1.821, 2.299, 2.894, 3.619, 4.483",\
                 "0.7893, 0.8514, 1.01, 1.235, 1.528, 1.904, 2.382, 2.977, 3.703, 4.567",\
                 "0.8261, 0.8883, 1.047, 1.272, 1.564, 1.94, 2.416, 3.012, 3.737, 4.601",\
                 "0.8237, 0.8851, 1.043, 1.268, 1.561, 1.936, 2.413, 3.008, 3.732, 4.596",\
                 "0.7827, 0.8438, 1.001, 1.224, 1.516, 1.892, 2.369, 2.964, 3.688, 4.551",\
                 "0.7021, 0.7633, 0.9195, 1.142, 1.433, 1.808, 2.284, 2.879, 3.604, 4.467",\
                 "0.5808, 0.6423, 0.7984, 1.02, 1.309, 1.683, 2.159, 2.754, 3.478, 4.342");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.3723, 0.4343, 0.6129, 0.9152, 1.374, 2.017, 2.865, 3.928, 5.228, 6.78",\
                 "0.3914, 0.4531, 0.6318, 0.9342, 1.393, 2.036, 2.882, 3.95, 5.251, 6.804",\
                 "0.4594, 0.5212, 0.6996, 1.002, 1.461, 2.104, 2.949, 4.018, 5.318, 6.871",\
                 "0.5546, 0.6186, 0.8002, 1.103, 1.562, 2.205, 3.052, 4.119, 5.421, 6.966",\
                 "0.625, 0.6938, 0.881, 1.188, 1.648, 2.291, 3.138, 4.204, 5.505, 7.057",\
                 "0.6663, 0.742, 0.9369, 1.246, 1.708, 2.352, 3.197, 4.263, 5.566, 7.113",\
                 "0.6786, 0.7623, 0.9683, 1.281, 1.743, 2.387, 3.234, 4.299, 5.599, 7.154",\
                 "0.6564, 0.7502, 0.9717, 1.291, 1.754, 2.397, 3.244, 4.31, 5.611, 7.161",\
                 "0.5973, 0.7013, 0.942, 1.272, 1.738, 2.382, 3.228, 4.294, 5.595, 7.146",\
                 "0.4985, 0.6128, 0.8753, 1.219, 1.691, 2.338, 3.184, 4.25, 5.551, 7.101");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.2258, 0.2817, 0.4317, 0.6803, 1.058, 1.603, 2.349, 3.317, 4.503, 5.925",\
                 "0.2263, 0.2821, 0.4317, 0.6803, 1.057, 1.602, 2.351, 3.316, 4.508, 5.932",\
                 "0.2232, 0.28, 0.4305, 0.6796, 1.057, 1.604, 2.35, 3.313, 4.504, 5.924",\
                 "0.2148, 0.2682, 0.4206, 0.674, 1.053, 1.6, 2.35, 3.314, 4.506, 5.933",\
                 "0.2118, 0.2642, 0.416, 0.6686, 1.05, 1.599, 2.348, 3.316, 4.503, 5.928",\
                 "0.2096, 0.2626, 0.4148, 0.6684, 1.049, 1.595, 2.343, 3.314, 4.505, 5.933",\
                 "0.2084, 0.2616, 0.4148, 0.6682, 1.05, 1.597, 2.344, 3.306, 4.5, 5.927",\
                 "0.2078, 0.2602, 0.412, 0.6664, 1.047, 1.598, 2.345, 3.308, 4.494, 5.917",\
                 "0.208, 0.2594, 0.4104, 0.663, 1.045, 1.595, 2.345, 3.31, 4.496, 5.918",\
                 "0.21, 0.2596, 0.4082, 0.6598, 1.041, 1.591, 2.345, 3.307, 4.495, 5.918");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.1983, 0.271, 0.5101, 0.9886, 1.764, 2.86, 4.309, 6.144, 8.379, 11.03",\
                 "0.1987, 0.2706, 0.5104, 0.9878, 1.763, 2.865, 4.315, 6.134, 8.365, 11.03",\
                 "0.1978, 0.2701, 0.5095, 0.9882, 1.764, 2.861, 4.315, 6.137, 8.372, 11.02",\
                 "0.2088, 0.2782, 0.514, 0.989, 1.764, 2.862, 4.312, 6.137, 8.374, 11.04",\
                 "0.231, 0.2968, 0.5256, 0.9962, 1.767, 2.864, 4.311, 6.141, 8.372, 11.02",\
                 "0.258, 0.322, 0.5398, 1.001, 1.769, 2.863, 4.309, 6.133, 8.367, 11.04",\
                 "0.291, 0.3526, 0.5586, 1.007, 1.772, 2.866, 4.31, 6.129, 8.354, 11.02",\
                 "0.328, 0.3914, 0.587, 1.019, 1.772, 2.865, 4.311, 6.131, 8.365, 11.01",\
                 "0.367, 0.4338, 0.6244, 1.04, 1.782, 2.866, 4.31, 6.134, 8.354, 11.01",\
                 "0.405, 0.479, 0.6698, 1.067, 1.799, 2.879, 4.312, 6.131, 8.354, 11");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.7441, 0.8199, 0.9994, 1.236, 1.535, 1.913, 2.392, 2.988, 3.713, 4.577",\
                 "0.7694, 0.8453, 1.025, 1.262, 1.56, 1.938, 2.417, 3.013, 3.738, 4.603",\
                 "0.8646, 0.9403, 1.12, 1.357, 1.655, 2.034, 2.512, 3.108, 3.833, 4.698",\
                 "1.053, 1.129, 1.309, 1.546, 1.844, 2.223, 2.702, 3.297, 4.023, 4.887",\
                 "1.324, 1.404, 1.59, 1.83, 2.13, 2.509, 2.988, 3.584, 4.31, 5.174",\
                 "1.629, 1.717, 1.921, 2.173, 2.479, 2.861, 3.341, 3.937, 4.662, 5.526",\
                 "1.967, 2.062, 2.283, 2.551, 2.868, 3.255, 3.738, 4.334, 5.059, 5.924",\
                 "2.35, 2.448, 2.686, 2.969, 3.297, 3.691, 4.176, 4.774, 5.5, 6.364",\
                 "2.783, 2.886, 3.14, 3.438, 3.775, 4.177, 4.665, 5.265, 5.991, 6.856",\
                 "3.269, 3.375, 3.646, 3.962, 4.312, 4.721, 5.212, 5.813, 6.54, 7.405");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.6096, 0.6733, 0.8549, 1.16, 1.622, 2.266, 3.112, 4.181, 5.482, 7.036",\
                 "0.63, 0.6938, 0.8754, 1.181, 1.642, 2.286, 3.133, 4.201, 5.502, 7.056",\
                 "0.7023, 0.766, 0.9474, 1.253, 1.714, 2.358, 3.205, 4.274, 5.576, 7.127",\
                 "0.8292, 0.8936, 1.075, 1.38, 1.842, 2.486, 3.335, 4.402, 5.704, 7.256",\
                 "0.955, 1.024, 1.213, 1.521, 1.982, 2.627, 3.475, 4.543, 5.846, 7.396",\
                 "1.05, 1.125, 1.324, 1.637, 2.1, 2.745, 3.592, 4.66, 5.963, 7.514",\
                 "1.11, 1.192, 1.403, 1.721, 2.185, 2.83, 3.677, 4.743, 6.047, 7.6",\
                 "1.137, 1.226, 1.449, 1.774, 2.24, 2.885, 3.731, 4.797, 6.098, 7.651",\
                 "1.127, 1.222, 1.459, 1.794, 2.262, 2.906, 3.753, 4.819, 6.12, 7.671",\
                 "1.075, 1.177, 1.43, 1.777, 2.25, 2.894, 3.742, 4.807, 6.108, 7.658");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.2588, 0.3113, 0.4489, 0.688, 1.062, 1.604, 2.352, 3.316, 4.508, 5.934",\
                 "0.2584, 0.3115, 0.4482, 0.6878, 1.061, 1.604, 2.352, 3.316, 4.508, 5.927",\
                 "0.2584, 0.3112, 0.4484, 0.6878, 1.061, 1.605, 2.352, 3.316, 4.507, 5.934",\
                 "0.26, 0.313, 0.45, 0.6896, 1.061, 1.604, 2.352, 3.316, 4.507, 5.933",\
                 "0.2816, 0.3348, 0.465, 0.6968, 1.066, 1.605, 2.352, 3.317, 4.504, 5.926",\
                 "0.3152, 0.3786, 0.5066, 0.7258, 1.082, 1.615, 2.356, 3.318, 4.508, 5.933",\
                 "0.3402, 0.4168, 0.5546, 0.7664, 1.114, 1.635, 2.363, 3.319, 4.503, 5.933",\
                 "0.3618, 0.4474, 0.601, 0.8082, 1.147, 1.659, 2.378, 3.325, 4.51, 5.929",\
                 "0.3848, 0.477, 0.6474, 0.8492, 1.181, 1.683, 2.395, 3.333, 4.512, 5.928",\
                 "0.411, 0.5106, 0.7, 0.894, 1.22, 1.71, 2.408, 3.342, 4.516, 5.93");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.004025, 0.006487, 0.01513, 0.03163, 0.05734, 0.09342, 0.1409, 0.2007, 0.2737, 0.3607");
          values("0.1989, 0.2697, 0.5091, 0.9877, 1.763, 2.865, 4.315, 6.135, 8.366, 11.03",\
                 "0.1993, 0.2695, 0.5092, 0.9868, 1.762, 2.864, 4.314, 6.136, 8.369, 11.03",\
                 "0.1991, 0.2699, 0.509, 0.988, 1.764, 2.863, 4.316, 6.138, 8.369, 11.04",\
                 "0.2028, 0.2726, 0.5102, 0.9886, 1.764, 2.863, 4.313, 6.14, 8.365, 11.02",\
                 "0.2244, 0.2928, 0.5234, 0.992, 1.764, 2.863, 4.315, 6.138, 8.371, 11.04",\
                 "0.2512, 0.319, 0.545, 1.003, 1.765, 2.863, 4.312, 6.138, 8.366, 11.04",\
                 "0.2792, 0.3486, 0.5672, 1.014, 1.771, 2.862, 4.307, 6.136, 8.355, 11.02",\
                 "0.3058, 0.3798, 0.5956, 1.027, 1.774, 2.867, 4.306, 6.13, 8.359, 11.02",\
                 "0.333, 0.4136, 0.6292, 1.048, 1.782, 2.866, 4.31, 6.129, 8.35, 11.01",\
                 "0.3602, 0.4472, 0.6702, 1.075, 1.794, 2.868, 4.315, 6.128, 8.35, 11");
        }
      }
    }
  }

