/*
 * 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_3) {
    area : 50.489600 ;

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.03824, 0.03798, 0.0375, 0.03703, 0.03666, 0.03637, 0.03615, \
                  0.03596, 0.03584, 0.0314");
        }

        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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.02323, 0.02303, 0.02283, 0.02272, 0.02265, 0.02256, 0.02248, \
                  0.02241, 0.02235, 0.02121");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.01958, 0.01942, 0.01914, 0.01894, 0.01883, 0.01876, 0.01873, \
                  0.0187, 0.01867, 0.01759");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.005618, 0.005601, 0.005477, 0.005342, 0.005203, 0.0051, 0.00502, \
                  0.004967, 0.004924, 0.005086");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.007112 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.4849 ;
      max_transition : 21 ;
      min_capacitance : 0.008112 ;
      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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.03825, 0.03826, 0.03825, 0.03823, 0.03822, 0.03823, 0.03823, 0.03824, 0.03824, 0.03824",\
                 "0.03843, 0.03843, 0.03845, 0.03843, 0.03842, 0.03842, 0.03843, 0.03843, 0.03844, 0.03844",\
                 "0.03883, 0.03883, 0.03883, 0.03882, 0.03881, 0.03882, 0.03883, 0.03883, 0.03883, 0.03883",\
                 "0.03905, 0.03906, 0.03904, 0.03906, 0.03904, 0.03904, 0.03905, 0.03906, 0.03906, 0.03906",\
                 "0.03924, 0.03925, 0.03924, 0.03923, 0.03921, 0.03922, 0.03922, 0.03923, 0.03923, 0.03923",\
                 "0.0394, 0.03939, 0.03939, 0.03938, 0.03936, 0.03937, 0.03938, 0.03939, 0.03938, 0.03938",\
                 "0.03954, 0.03956, 0.03955, 0.03954, 0.03953, 0.03954, 0.03953, 0.03953, 0.03954, 0.03952",\
                 "0.03972, 0.03972, 0.03971, 0.03971, 0.0397, 0.03971, 0.03972, 0.03972, 0.03971, 0.03961",\
                 "0.03989, 0.0399, 0.0399, 0.03988, 0.03987, 0.03988, 0.03988, 0.03986, 0.03968, 0.03884",\
                 "0.04067, 0.04067, 0.04066, 0.04065, 0.04063, 0.0406, 0.04032, 0.03912, 0.03739, 0.03605");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.02835, 0.02836, 0.02838, 0.02844, 0.02846, 0.02862, 0.02887, 0.02957, 0.04727, 0.1519",\
                 "0.02828, 0.02833, 0.02827, 0.02836, 0.02846, 0.02842, 0.02856, 0.02942, 0.04808, 0.1547",\
                 "0.02807, 0.02805, 0.02808, 0.02813, 0.02824, 0.02823, 0.0283, 0.02987, 0.05102, 0.1669",\
                 "0.02778, 0.02776, 0.02778, 0.02785, 0.0279, 0.02806, 0.02823, 0.03017, 0.05934, 0.1896",\
                 "0.02753, 0.02755, 0.02756, 0.02756, 0.0277, 0.02776, 0.02805, 0.0314, 0.07716, 0.2284",\
                 "0.02732, 0.0273, 0.02732, 0.02738, 0.02746, 0.02755, 0.02795, 0.03634, 0.1117, 0.2714",\
                 "0.02717, 0.02718, 0.02719, 0.02722, 0.02736, 0.02746, 0.02906, 0.05299, 0.1687, 0.3119",\
                 "0.02707, 0.02708, 0.02708, 0.02707, 0.02709, 0.02752, 0.03392, 0.1034, 0.2305, 0.3329",\
                 "0.02698, 0.02699, 0.027, 0.027, 0.027, 0.02948, 0.07523, 0.1769, 0.2567, 0.3133",\
                 "0.02728, 0.0273, 0.02735, 0.02735, 0.03131, 0.08103, 0.1407, 0.1806, 0.2073, 0.2258");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.06305, 0.06324, 0.06365, 0.06402, 0.06425, 0.06439, 0.06448, 0.06453, 0.06456, 0.06458",\
                 "0.06301, 0.06319, 0.0636, 0.06398, 0.0642, 0.06434, 0.06443, 0.06448, 0.06452, 0.06454",\
                 "0.06285, 0.06302, 0.06344, 0.06379, 0.06404, 0.06417, 0.06426, 0.06432, 0.06435, 0.06437",\
                 "0.06256, 0.06274, 0.06315, 0.06352, 0.06375, 0.06389, 0.06398, 0.06404, 0.06407, 0.06409",\
                 "0.0623, 0.06247, 0.06288, 0.06325, 0.06348, 0.06362, 0.06371, 0.06378, 0.06381, 0.06383",\
                 "0.06211, 0.06228, 0.06267, 0.06304, 0.06328, 0.06343, 0.06353, 0.06359, 0.06362, 0.06363",\
                 "0.06196, 0.06213, 0.06252, 0.0629, 0.06314, 0.06329, 0.06339, 0.06344, 0.06347, 0.06346",\
                 "0.06182, 0.06199, 0.06237, 0.06274, 0.06299, 0.06315, 0.06325, 0.06331, 0.06331, 0.06309",\
                 "0.06173, 0.0619, 0.06225, 0.06261, 0.06287, 0.06304, 0.06313, 0.0631, 0.06251, 0.0611",\
                 "0.06172, 0.06189, 0.06222, 0.06255, 0.06273, 0.06248, 0.06105, 0.05927, 0.05799, 0.05708");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.05301, 0.05316, 0.05349, 0.05394, 0.05426, 0.05462, 0.05484, 0.05713, 0.08802, 0.2209",\
                 "0.05288, 0.05299, 0.05333, 0.05376, 0.05411, 0.05448, 0.05489, 0.05733, 0.08953, 0.2252",\
                 "0.0526, 0.05274, 0.05303, 0.05352, 0.05382, 0.05418, 0.05435, 0.05753, 0.0951, 0.2383",\
                 "0.05235, 0.05244, 0.05285, 0.05324, 0.05366, 0.05389, 0.05437, 0.05899, 0.1099, 0.2654",\
                 "0.05213, 0.05226, 0.05259, 0.05303, 0.05335, 0.05367, 0.05429, 0.06353, 0.1417, 0.3011",\
                 "0.05195, 0.0521, 0.05242, 0.05283, 0.05329, 0.05356, 0.05492, 0.07974, 0.1966, 0.3391",\
                 "0.05183, 0.05194, 0.05227, 0.05262, 0.05309, 0.05345, 0.06074, 0.1317, 0.2587, 0.3595",\
                 "0.05167, 0.0518, 0.05206, 0.05249, 0.05283, 0.05613, 0.1069, 0.2068, 0.2825, 0.3362",\
                 "0.05154, 0.05167, 0.05196, 0.05234, 0.06039, 0.1157, 0.1656, 0.1982, 0.2199, 0.2348",\
                 "0.02703, 0.02685, 0.02667, 0.02659, 0.02655, 0.02653, 0.02653, 0.02652, 0.02652, 0.02651");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.623, 0.712, 0.993, 1.529, 2.351, 3.379, 4.596, 6.009, 7.617, \
                  9.431");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("1.262, 1.331, 1.601, 2.14, 2.988, 4.114, 5.46, 7.003, 8.764, 10.72");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("2.023, 2.112, 2.346, 2.666, 3.056, 3.526, 4.093, 4.776, 5.596, 6.567",\
                 "2.099, 2.189, 2.424, 2.744, 3.134, 3.603, 4.17, 4.853, 5.673, 6.644",\
                 "2.35, 2.44, 2.674, 2.994, 3.384, 3.854, 4.42, 5.104, 5.924, 6.894",\
                 "2.803, 2.892, 3.126, 3.446, 3.837, 4.306, 4.873, 5.556, 6.376, 7.347",\
                 "3.421, 3.51, 3.745, 4.065, 4.455, 4.924, 5.491, 6.175, 6.994, 7.965",\
                 "4.083, 4.172, 4.404, 4.724, 5.114, 5.583, 6.15, 6.834, 7.654, 8.624",\
                 "4.809, 4.897, 5.132, 5.45, 5.839, 6.306, 6.872, 7.556, 8.374, 9.345",\
                 "5.598, 5.687, 5.921, 6.239, 6.63, 7.098, 7.664, 8.345, 9.162, 10.13",\
                 "6.455, 6.545, 6.779, 7.099, 7.488, 7.957, 8.522, 9.205, 10.02, 10.99",\
                 "7.382, 7.472, 7.706, 8.026, 8.415, 8.885, 9.45, 10.13, 10.95, 11.92");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("1.175, 1.278, 1.603, 2.181, 3.068, 4.311, 5.945, 8.01, 10.52, 13.51",\
                 "1.239, 1.343, 1.667, 2.245, 3.133, 4.376, 6.011, 8.076, 10.59, 13.57",\
                 "1.471, 1.574, 1.899, 2.477, 3.364, 4.606, 6.241, 8.297, 10.82, 13.81",\
                 "1.912, 2.015, 2.34, 2.918, 3.805, 5.048, 6.684, 8.744, 11.26, 14.26",\
                 "2.561, 2.666, 2.992, 3.57, 4.457, 5.7, 7.334, 9.396, 11.9, 14.91",\
                 "3.327, 3.435, 3.767, 4.35, 5.238, 6.48, 8.117, 10.17, 12.69, 15.69",\
                 "4.185, 4.298, 4.637, 5.223, 6.113, 7.358, 8.991, 11.05, 13.57, 16.57",\
                 "5.132, 5.25, 5.597, 6.186, 7.077, 8.322, 9.957, 12.01, 14.53, 17.53",\
                 "6.162, 6.288, 6.647, 7.24, 8.131, 9.375, 11.01, 13.07, 15.58, 18.58",\
                 "7.271, 7.407, 7.781, 8.38, 9.271, 10.51, 12.15, 14.21, 16.72, 19.72");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.5276, 0.5936, 0.7806, 1.079, 1.511, 2.111, 2.921, 3.978, 5.302, 6.913",\
                 "0.5278, 0.5938, 0.7804, 1.079, 1.511, 2.111, 2.921, 3.979, 5.303, 6.916",\
                 "0.5284, 0.594, 0.7804, 1.081, 1.511, 2.111, 2.921, 3.977, 5.303, 6.912",\
                 "0.5286, 0.594, 0.7804, 1.08, 1.514, 2.113, 2.921, 3.979, 5.303, 6.916",\
                 "0.527, 0.5936, 0.7802, 1.081, 1.514, 2.111, 2.922, 3.979, 5.307, 6.912",\
                 "0.524, 0.5898, 0.778, 1.079, 1.511, 2.111, 2.923, 3.978, 5.307, 6.912",\
                 "0.5258, 0.5914, 0.7772, 1.078, 1.506, 2.104, 2.914, 3.97, 5.304, 6.906",\
                 "0.526, 0.592, 0.778, 1.078, 1.508, 2.106, 2.914, 3.966, 5.29, 6.902",\
                 "0.528, 0.594, 0.78, 1.078, 1.51, 2.108, 2.914, 3.97, 5.294, 6.892",\
                 "0.528, 0.594, 0.78, 1.078, 1.512, 2.11, 2.916, 3.97, 5.294, 6.9");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.487, 0.6194, 1.083, 2.006, 3.48, 5.563, 8.293, 11.74, 15.95, 20.97",\
                 "0.487, 0.6214, 1.083, 2.005, 3.485, 5.559, 8.295, 11.74, 15.95, 20.97",\
                 "0.4872, 0.6194, 1.083, 2.008, 3.48, 5.563, 8.295, 11.74, 15.95, 20.97",\
                 "0.4868, 0.6196, 1.082, 2.007, 3.478, 5.556, 8.298, 11.75, 15.99, 20.97",\
                 "0.4956, 0.6252, 1.088, 2.008, 3.478, 5.563, 8.295, 11.74, 15.95, 20.98",\
                 "0.5194, 0.649, 1.104, 2.016, 3.481, 5.564, 8.303, 11.74, 15.96, 20.97",\
                 "0.5516, 0.6772, 1.123, 2.028, 3.496, 5.562, 8.304, 11.74, 15.96, 21.03",\
                 "0.594, 0.714, 1.146, 2.036, 3.5, 5.576, 8.306, 11.75, 15.98, 20.99",\
                 "0.648, 0.764, 1.176, 2.05, 3.504, 5.58, 8.316, 11.76, 15.98, 21",\
                 "0.71, 0.822, 1.22, 2.07, 3.508, 5.584, 8.316, 11.76, 15.97, 20.99");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("3.411, 3.5, 3.731, 4.049, 4.437, 4.906, 5.472, 6.156, 6.976, 7.947",\
                 "3.48, 3.568, 3.8, 4.118, 4.506, 4.975, 5.541, 6.225, 7.044, 8.015",\
                 "3.72, 3.808, 4.04, 4.357, 4.746, 5.215, 5.781, 6.465, 7.284, 8.255",\
                 "4.166, 4.254, 4.486, 4.804, 5.192, 5.66, 6.227, 6.911, 7.73, 8.701",\
                 "4.746, 4.833, 5.065, 5.383, 5.77, 6.24, 6.806, 7.49, 8.31, 9.28",\
                 "5.416, 5.505, 5.736, 6.054, 6.442, 6.912, 7.478, 8.162, 8.981, 9.952",\
                 "6.175, 6.263, 6.494, 6.812, 7.201, 7.669, 8.236, 8.919, 9.738, 10.71",\
                 "7.017, 7.105, 7.336, 7.655, 8.044, 8.513, 9.079, 9.763, 10.58, 11.55",\
                 "7.942, 8.03, 8.261, 8.579, 8.968, 9.437, 10, 10.69, 11.51, 12.48",\
                 "8.949, 9.037, 9.267, 9.585, 9.974, 10.45, 11.01, 11.69, 12.51, 13.48");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("3.033, 3.138, 3.466, 4.051, 4.943, 6.191, 7.828, 9.892, 12.41, 15.41",\
                 "3.106, 3.21, 3.538, 4.123, 5.016, 6.263, 7.903, 9.965, 12.49, 15.49",\
                 "3.376, 3.48, 3.808, 4.393, 5.286, 6.532, 8.169, 10.23, 12.74, 15.75",\
                 "3.912, 4.016, 4.344, 4.928, 5.822, 7.069, 8.704, 10.77, 13.28, 16.29",\
                 "4.758, 4.862, 5.191, 5.775, 6.668, 7.914, 9.551, 11.61, 14.14, 17.13",\
                 "5.931, 6.035, 6.363, 6.949, 7.841, 9.088, 10.73, 12.79, 15.3, 18.31",\
                 "7.387, 7.492, 7.819, 8.403, 9.296, 10.54, 12.18, 14.24, 16.75, 19.75",\
                 "9.067, 9.172, 9.499, 10.08, 10.98, 12.22, 13.86, 15.93, 18.43, 21.43",\
                 "10.97, 11.07, 11.4, 11.99, 12.88, 14.13, 15.76, 17.82, 20.34, 23.34",\
                 "13.09, 13.2, 13.53, 14.11, 15.01, 16.25, 17.89, 19.95, 22.46, 25.46");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.494, 0.561, 0.7546, 1.061, 1.5, 2.103, 2.916, 3.977, 5.302, 6.915",\
                 "0.4936, 0.5612, 0.7552, 1.063, 1.498, 2.105, 2.915, 3.976, 5.301, 6.913",\
                 "0.4938, 0.562, 0.7546, 1.063, 1.498, 2.101, 2.918, 3.977, 5.302, 6.914",\
                 "0.494, 0.561, 0.7546, 1.062, 1.499, 2.102, 2.917, 3.977, 5.304, 6.916",\
                 "0.493, 0.5624, 0.7544, 1.063, 1.499, 2.102, 2.915, 3.977, 5.302, 6.911",\
                 "0.4936, 0.562, 0.755, 1.061, 1.502, 2.106, 2.917, 3.978, 5.3, 6.912",\
                 "0.494, 0.562, 0.754, 1.062, 1.5, 2.104, 2.916, 3.978, 5.302, 6.916",\
                 "0.494, 0.562, 0.756, 1.062, 1.498, 2.104, 2.914, 3.974, 5.306, 6.91",\
                 "0.494, 0.562, 0.756, 1.064, 1.5, 2.104, 2.918, 3.976, 5.298, 6.904",\
                 "0.496, 0.564, 0.756, 1.062, 1.5, 2.104, 2.916, 3.978, 5.3, 6.906");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.008112, 0.0114, 0.02295, 0.04501, 0.07938, 0.1276, 0.191, 0.271, 0.3686, 0.4849");
          values("0.4718, 0.606, 1.077, 2.006, 3.478, 5.564, 8.294, 11.75, 15.95, 20.97",\
                 "0.4726, 0.6068, 1.077, 2.003, 3.484, 5.565, 8.3, 11.74, 16, 21.03",\
                 "0.4716, 0.6068, 1.077, 2.004, 3.478, 5.565, 8.294, 11.74, 15.95, 21",\
                 "0.4714, 0.6068, 1.077, 2.004, 3.478, 5.557, 8.294, 11.74, 15.95, 20.98",\
                 "0.4718, 0.6072, 1.076, 2.006, 3.478, 5.562, 8.295, 11.74, 15.99, 20.98",\
                 "0.4716, 0.6064, 1.078, 2.006, 3.476, 5.566, 8.296, 11.74, 15.95, 20.98",\
                 "0.472, 0.608, 1.078, 2.004, 3.484, 5.566, 8.294, 11.74, 15.96, 20.97",\
                 "0.474, 0.608, 1.078, 2.002, 3.478, 5.562, 8.294, 11.74, 15.95, 20.96",\
                 "0.476, 0.61, 1.08, 2.004, 3.48, 5.556, 8.29, 11.75, 15.96, 20.96",\
                 "0.478, 0.612, 1.08, 2.006, 3.48, 5.558, 8.292, 11.75, 15.98, 20.97");
        }
      }
    }
  }

