/*
 * 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.01402995" ;
    }

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.4651, 0.466, 0.4889, 0.5595, 0.6923, 0.897, 1.181, 1.548, 2.004, \
                  2.553");
        }

        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.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.3014, 0.3016, 0.3185, 0.3672, 0.4535, 0.5811, 0.7683, 1.027, \
                  1.356, 1.757");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.2628, 0.2628, 0.2741, 0.3118, 0.3815, 0.4879, 0.6353, 0.8253, \
                  1.061, 1.344");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.0958, 0.09592, 0.1045, 0.1327, 0.1899, 0.2805, 0.4076, 0.5732, \
                  0.7794, 1.028");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.006817 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.8908 ;
      max_transition : 3.4 ;
      min_capacitance : 0.007817 ;
      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.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.5627, 0.5573, 0.5477, 0.5414, 0.5378, 0.5354, 0.5337, 0.5321, 0.5312, 0.5305",\
                 "0.5645, 0.5591, 0.5496, 0.5435, 0.5399, 0.5374, 0.5357, 0.5344, 0.5334, 0.5327",\
                 "0.5853, 0.5804, 0.5719, 0.5664, 0.5632, 0.5612, 0.5598, 0.5585, 0.5577, 0.557",\
                 "0.6328, 0.6294, 0.6229, 0.6199, 0.6183, 0.6173, 0.6165, 0.6158, 0.6154, 0.615",\
                 "0.7215, 0.7196, 0.7167, 0.7156, 0.7149, 0.7146, 0.7146, 0.7142, 0.7142, 0.714",\
                 "0.8627, 0.8618, 0.8604, 0.8597, 0.8598, 0.8597, 0.8596, 0.8596, 0.8596, 0.8596",\
                 "1.055, 1.054, 1.054, 1.053, 1.053, 1.053, 1.053, 1.053, 1.053, 1.053",\
                 "1.298, 1.298, 1.297, 1.297, 1.297, 1.297, 1.297, 1.298, 1.298, 1.298",\
                 "1.595, 1.596, 1.596, 1.595, 1.595, 1.595, 1.595, 1.596, 1.596, 1.596",\
                 "1.948, 1.949, 1.95, 1.949, 1.949, 1.95, 1.95, 1.949, 1.95, 1.95");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.4047, 0.4024, 0.3996, 0.3996, 0.4, 0.4019, 0.4062, 0.4087, 0.4166, 0.4211",\
                 "0.4051, 0.4024, 0.399, 0.3999, 0.4004, 0.4019, 0.4062, 0.4087, 0.4171, 0.4222",\
                 "0.422, 0.4193, 0.417, 0.417, 0.4172, 0.4195, 0.4238, 0.4269, 0.4314, 0.4382",\
                 "0.4774, 0.4751, 0.4748, 0.4751, 0.4755, 0.4778, 0.4821, 0.4874, 0.4925, 0.497",\
                 "0.589, 0.5886, 0.5878, 0.5904, 0.5916, 0.5927, 0.5981, 0.6029, 0.6058, 0.6147",\
                 "0.768, 0.7683, 0.7671, 0.766, 0.7723, 0.7753, 0.7769, 0.7844, 0.7851, 0.7946",\
                 "1.019, 1.02, 1.02, 1.018, 1.019, 1.026, 1.033, 1.035, 1.04, 1.043",\
                 "1.345, 1.345, 1.347, 1.347, 1.344, 1.348, 1.358, 1.365, 1.371, 1.373",\
                 "1.749, 1.751, 1.752, 1.751, 1.75, 1.753, 1.756, 1.77, 1.78, 1.784",\
                 "2.237, 2.239, 2.241, 2.243, 2.241, 2.239, 2.243, 2.251, 2.268, 2.278");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("1.001, 0.9854, 0.9593, 0.9446, 0.9352, 0.9298, 0.9263, 0.9236, 0.9222, 0.9211",\
                 "1.001, 0.9857, 0.9598, 0.9448, 0.9356, 0.93, 0.9266, 0.9241, 0.9224, 0.9211",\
                 "1.012, 0.9963, 0.9702, 0.9544, 0.9463, 0.9405, 0.9367, 0.9343, 0.9329, 0.9315",\
                 "1.054, 1.039, 1.012, 0.9958, 0.9864, 0.9808, 0.9773, 0.975, 0.9733, 0.9719",\
                 "1.139, 1.123, 1.095, 1.076, 1.066, 1.06, 1.056, 1.054, 1.052, 1.051",\
                 "1.272, 1.255, 1.223, 1.203, 1.191, 1.184, 1.18, 1.177, 1.175, 1.173",\
                 "1.454, 1.435, 1.4, 1.376, 1.363, 1.356, 1.351, 1.347, 1.345, 1.343",\
                 "1.688, 1.668, 1.63, 1.601, 1.586, 1.577, 1.571, 1.567, 1.564, 1.563",\
                 "1.972, 1.951, 1.91, 1.878, 1.86, 1.849, 1.842, 1.838, 1.835, 1.832",\
                 "2.314, 2.292, 2.247, 2.211, 2.189, 2.176, 2.168, 2.162, 2.159, 2.156");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.8365, 0.8301, 0.8237, 0.8265, 0.8327, 0.8393, 0.8475, 0.8566, 0.8634, 0.8679",\
                 "0.8367, 0.8296, 0.8238, 0.8252, 0.832, 0.8393, 0.8475, 0.8528, 0.8628, 0.869",\
                 "0.8488, 0.8423, 0.8351, 0.8385, 0.8447, 0.8514, 0.8596, 0.8687, 0.8755, 0.8806",\
                 "0.897, 0.889, 0.8818, 0.8839, 0.8903, 0.8971, 0.9047, 0.9144, 0.9211, 0.9257",\
                 "0.9947, 0.9859, 0.9772, 0.9771, 0.9808, 0.9867, 0.9949, 1.002, 1.011, 1.016",\
                 "1.147, 1.137, 1.126, 1.122, 1.124, 1.13, 1.137, 1.145, 1.15, 1.157",\
                 "1.355, 1.344, 1.328, 1.319, 1.322, 1.325, 1.33, 1.337, 1.346, 1.349",\
                 "1.623, 1.609, 1.59, 1.575, 1.573, 1.58, 1.583, 1.588, 1.595, 1.599",\
                 "1.949, 1.934, 1.911, 1.893, 1.885, 1.887, 1.897, 1.903, 1.906, 1.912",\
                 "2.339, 2.323, 2.294, 2.273, 2.259, 2.254, 2.26, 2.273, 2.28, 2.283");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.2, 0.206, 0.229, 0.278, 0.358, 0.458, 0.573, 0.704, 0.848, 1.01");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.221, 0.226, 0.251, 0.299, 0.365, 0.447, 0.541, 0.649, 0.773, \
                  0.912");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          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.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.1161, 0.1384, 0.1942, 0.2752, 0.381, 0.5143, 0.6812, 0.8877, 1.138, 1.437",\
                 "0.1204, 0.1425, 0.1983, 0.2793, 0.385, 0.5183, 0.6852, 0.8917, 1.142, 1.441",\
                 "0.1369, 0.1589, 0.2145, 0.2954, 0.401, 0.5343, 0.7012, 0.9076, 1.158, 1.457",\
                 "0.1569, 0.1805, 0.238, 0.3195, 0.4252, 0.5586, 0.7255, 0.932, 1.183, 1.481",\
                 "0.1642, 0.1903, 0.2523, 0.3367, 0.4428, 0.5762, 0.7432, 0.9496, 1.2, 1.499",\
                 "0.1579, 0.1866, 0.2514, 0.3363, 0.4425, 0.5754, 0.742, 0.9483, 1.199, 1.498",\
                 "0.1369, 0.1679, 0.2355, 0.3209, 0.4273, 0.5602, 0.7266, 0.9327, 1.183, 1.481",\
                 "0.1001, 0.1339, 0.2048, 0.2917, 0.3984, 0.5316, 0.6981, 0.9042, 1.154, 1.452",\
                 "0.0466, 0.084, 0.1588, 0.2473, 0.3548, 0.4882, 0.6548, 0.8609, 1.111, 1.409",\
                 "-0.0249, 0.0166, 0.0961, 0.1869, 0.2955, 0.4294, 0.5962, 0.8023, 1.053, 1.351");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.1197, 0.1441, 0.2059, 0.2993, 0.433, 0.6176, 0.8599, 1.166, 1.538, 1.983",\
                 "0.123, 0.1474, 0.2092, 0.3025, 0.4363, 0.6209, 0.8631, 1.169, 1.541, 1.986",\
                 "0.1351, 0.1599, 0.2221, 0.3155, 0.4494, 0.6339, 0.876, 1.182, 1.554, 2",\
                 "0.146, 0.1741, 0.2405, 0.3355, 0.4697, 0.6543, 0.8968, 1.203, 1.575, 2.02",\
                 "0.1432, 0.1768, 0.2521, 0.3515, 0.4871, 0.672, 0.9141, 1.22, 1.593, 2.038",\
                 "0.1218, 0.1624, 0.2503, 0.3582, 0.4972, 0.683, 0.9255, 1.231, 1.604, 2.049",\
                 "0.07921, 0.1288, 0.2318, 0.3517, 0.4968, 0.6862, 0.9298, 1.235, 1.608, 2.053",\
                 "0.0124, 0.0735, 0.1938, 0.329, 0.4823, 0.6767, 0.9248, 1.232, 1.605, 2.049",\
                 "-0.0812, -0.006, 0.1354, 0.2887, 0.4527, 0.6531, 0.9065, 1.218, 1.594, 2.038",\
                 "-0.2041, -0.1129, 0.0544, 0.2281, 0.4061, 0.6135, 0.8726, 1.19, 1.571, 2.019");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.0661, 0.0852, 0.1448, 0.244, 0.385, 0.5819, 0.8465, 1.19, 1.615, 2.123",\
                 "0.06542, 0.08476, 0.1446, 0.2442, 0.3848, 0.5821, 0.8474, 1.189, 1.614, 2.123",\
                 "0.06388, 0.08382, 0.1439, 0.2438, 0.3849, 0.581, 0.8474, 1.189, 1.613, 2.122",\
                 "0.07028, 0.08902, 0.1461, 0.2444, 0.3851, 0.5812, 0.847, 1.189, 1.613, 2.12",\
                 "0.0787, 0.09764, 0.1555, 0.2488, 0.3857, 0.581, 0.8473, 1.19, 1.613, 2.12",\
                 "0.08822, 0.1056, 0.1596, 0.2502, 0.386, 0.5798, 0.8452, 1.188, 1.614, 2.123",\
                 "0.0988, 0.1149, 0.1637, 0.2516, 0.3862, 0.5802, 0.8438, 1.186, 1.611, 2.121",\
                 "0.1102, 0.1252, 0.169, 0.2542, 0.387, 0.58, 0.845, 1.186, 1.609, 2.118",\
                 "0.1242, 0.1368, 0.176, 0.2578, 0.3896, 0.5816, 0.8448, 1.188, 1.611, 2.117",\
                 "0.1402, 0.1516, 0.1842, 0.2618, 0.3922, 0.5836, 0.8466, 1.188, 1.61, 2.118");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.06962, 0.09508, 0.1707, 0.3125, 0.5458, 0.8813, 1.325, 1.887, 2.571, 3.387",\
                 "0.06968, 0.09516, 0.1706, 0.3125, 0.5458, 0.8813, 1.325, 1.889, 2.571, 3.387",\
                 "0.07126, 0.09616, 0.1712, 0.3126, 0.5448, 0.8803, 1.326, 1.888, 2.572, 3.386",\
                 "0.08162, 0.1058, 0.1772, 0.3147, 0.5463, 0.8804, 1.327, 1.888, 2.576, 3.392",\
                 "0.09856, 0.1231, 0.1922, 0.3228, 0.5491, 0.8807, 1.327, 1.888, 2.571, 3.391",\
                 "0.1225, 0.1472, 0.2159, 0.3385, 0.5566, 0.885, 1.327, 1.886, 2.571, 3.388",\
                 "0.1543, 0.1772, 0.2463, 0.3626, 0.5714, 0.8942, 1.331, 1.89, 2.573, 3.388",\
                 "0.1952, 0.2148, 0.2826, 0.394, 0.5936, 0.9124, 1.345, 1.895, 2.577, 3.393",\
                 "0.2424, 0.263, 0.3236, 0.4338, 0.6196, 0.9346, 1.367, 1.914, 2.585, 3.396",\
                 "0.2984, 0.321, 0.3728, 0.4816, 0.6544, 0.9586, 1.394, 1.942, 2.608, 3.408");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.2685, 0.289, 0.3439, 0.4252, 0.5314, 0.665, 0.8319, 1.038, 1.289, 1.587",\
                 "0.2718, 0.2923, 0.3472, 0.4285, 0.5347, 0.6683, 0.8352, 1.042, 1.292, 1.59",\
                 "0.2849, 0.3054, 0.3605, 0.4417, 0.548, 0.6815, 0.8484, 1.055, 1.305, 1.604",\
                 "0.3038, 0.3244, 0.3792, 0.4604, 0.5666, 0.7002, 0.8671, 1.074, 1.324, 1.622",\
                 "0.3167, 0.3371, 0.3918, 0.4732, 0.5794, 0.713, 0.8799, 1.086, 1.337, 1.635",\
                 "0.32, 0.3405, 0.3952, 0.4764, 0.5828, 0.7164, 0.8834, 1.09, 1.34, 1.639",\
                 "0.3116, 0.3321, 0.3868, 0.468, 0.5746, 0.7084, 0.8755, 1.082, 1.332, 1.631",\
                 "0.2903, 0.311, 0.3658, 0.4467, 0.5539, 0.6878, 0.8549, 1.061, 1.312, 1.61",\
                 "0.2542, 0.275, 0.3301, 0.4117, 0.5187, 0.6527, 0.8198, 1.026, 1.277, 1.575",\
                 "0.2036, 0.2247, 0.2804, 0.3622, 0.4695, 0.6038, 0.7711, 0.9774, 1.228, 1.526");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.3083, 0.3313, 0.392, 0.4858, 0.6204, 0.8058, 1.049, 1.354, 1.728, 2.172",\
                 "0.3133, 0.3362, 0.3969, 0.4907, 0.6254, 0.8106, 1.053, 1.359, 1.732, 2.177",\
                 "0.3366, 0.3596, 0.4204, 0.5141, 0.6487, 0.834, 1.077, 1.382, 1.756, 2.2",\
                 "0.3859, 0.4084, 0.4693, 0.5629, 0.6976, 0.8829, 1.126, 1.431, 1.805, 2.249",\
                 "0.4572, 0.4799, 0.5405, 0.634, 0.7684, 0.9537, 1.196, 1.502, 1.875, 2.32",\
                 "0.5458, 0.5687, 0.6288, 0.7224, 0.8566, 1.042, 1.285, 1.591, 1.964, 2.409",\
                 "0.6498, 0.6727, 0.7334, 0.8268, 0.961, 1.146, 1.388, 1.694, 2.067, 2.511",\
                 "0.7682, 0.7914, 0.8529, 0.9468, 1.081, 1.266, 1.508, 1.813, 2.186, 2.632",\
                 "0.9017, 0.9252, 0.988, 1.083, 1.217, 1.402, 1.644, 1.949, 2.322, 2.766",\
                 "1.051, 1.076, 1.139, 1.236, 1.371, 1.555, 1.797, 2.103, 2.475, 2.919");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.06672, 0.08916, 0.1494, 0.2485, 0.3884, 0.5834, 0.8482, 1.19, 1.615, 2.12",\
                 "0.06682, 0.08896, 0.1493, 0.2485, 0.3883, 0.5839, 0.8476, 1.189, 1.615, 2.121",\
                 "0.06676, 0.08888, 0.1494, 0.2485, 0.3883, 0.5834, 0.8477, 1.189, 1.612, 2.121",\
                 "0.06708, 0.08896, 0.1496, 0.2491, 0.3884, 0.5833, 0.8471, 1.191, 1.613, 2.12",\
                 "0.06782, 0.08988, 0.15, 0.2486, 0.3885, 0.5832, 0.8472, 1.19, 1.615, 2.123",\
                 "0.06918, 0.09118, 0.1513, 0.25, 0.3892, 0.5836, 0.848, 1.189, 1.614, 2.121",\
                 "0.0708, 0.0926, 0.1528, 0.2512, 0.3906, 0.5842, 0.8482, 1.189, 1.614, 2.123",\
                 "0.0724, 0.0942, 0.1548, 0.2528, 0.3918, 0.5858, 0.8486, 1.189, 1.612, 2.124",\
                 "0.075, 0.0974, 0.1568, 0.2544, 0.3938, 0.5872, 0.8488, 1.19, 1.612, 2.119",\
                 "0.078, 0.1002, 0.1604, 0.2576, 0.3956, 0.5884, 0.8506, 1.192, 1.613, 2.12");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.007817, 0.01391, 0.0353, 0.07616, 0.1398, 0.2291, 0.3466, 0.4947, 0.6754, 0.8908");
          values("0.06846, 0.0949, 0.1711, 0.3127, 0.5459, 0.8806, 1.325, 1.888, 2.572, 3.388",\
                 "0.06886, 0.09486, 0.171, 0.3125, 0.5453, 0.8806, 1.325, 1.89, 2.571, 3.387",\
                 "0.06842, 0.09488, 0.171, 0.3127, 0.546, 0.8807, 1.325, 1.888, 2.572, 3.388",\
                 "0.06868, 0.09454, 0.1707, 0.3128, 0.5458, 0.8808, 1.325, 1.888, 2.572, 3.388",\
                 "0.06898, 0.09484, 0.1713, 0.3138, 0.5448, 0.8808, 1.325, 1.889, 2.572, 3.388",\
                 "0.0706, 0.0968, 0.1722, 0.314, 0.5452, 0.8814, 1.326, 1.888, 2.571, 3.391",\
                 "0.0724, 0.099, 0.1746, 0.3156, 0.5468, 0.8824, 1.325, 1.888, 2.573, 3.389",\
                 "0.0752, 0.1018, 0.1774, 0.317, 0.547, 0.8818, 1.326, 1.887, 2.571, 3.392",\
                 "0.0786, 0.1054, 0.1812, 0.3204, 0.5482, 0.8816, 1.326, 1.886, 2.575, 3.386",\
                 "0.0818, 0.1082, 0.1858, 0.325, 0.552, 0.8828, 1.328, 1.888, 2.572, 3.391");
        }
      }
    }
  }

