/*
 * 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_2) {
    area : 37.318400 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.3425, 0.3412, 0.3541, 0.3961, 0.4776, 0.6049, 0.7814, 1.01, \
                 1.293, 1.633");
        }

        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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.2464, 0.2451, 0.2542, 0.2833, 0.3352, 0.4115, 0.5224, 0.675, \
                 0.8695, 1.107");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.1695, 0.1685, 0.1765, 0.2029, 0.2507, 0.3224, 0.4201, 0.5452, \
                 0.6994, 0.8846");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.03713, 0.03671, 0.04182, 0.06157, 0.1011, 0.163, 0.2484, 0.3588, \
                 0.4956, 0.6602");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.003323 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.4652 ;
      max_transition : 4 ;
      min_capacitance : 0.004323 ;
      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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.3084, 0.3055, 0.3004, 0.297, 0.2947, 0.2933, 0.2924, 0.2915, 0.291, 0.2906",\
                 "0.309, 0.3063, 0.3012, 0.2979, 0.2957, 0.2943, 0.2931, 0.2925, 0.292, 0.2916",\
                 "0.3209, 0.3182, 0.3142, 0.3113, 0.3094, 0.3083, 0.3074, 0.3068, 0.3064, 0.3061",\
                 "0.3488, 0.3474, 0.3454, 0.344, 0.3432, 0.3428, 0.3424, 0.3422, 0.342, 0.3419",\
                 "0.406, 0.4055, 0.405, 0.4047, 0.4045, 0.4045, 0.4044, 0.4044, 0.4044, 0.4044",\
                 "0.4956, 0.4954, 0.4948, 0.4948, 0.4949, 0.4949, 0.4949, 0.4949, 0.495, 0.4949",\
                 "0.6163, 0.6162, 0.6161, 0.616, 0.616, 0.6161, 0.6162, 0.6162, 0.6162, 0.6162",\
                 "0.7689, 0.7689, 0.7689, 0.7684, 0.7684, 0.7684, 0.7685, 0.7686, 0.7686, 0.7686",\
                 "0.9542, 0.9544, 0.9543, 0.9541, 0.9541, 0.9543, 0.9543, 0.9543, 0.9543, 0.9544",\
                 "1.174, 1.174, 1.174, 1.174, 1.174, 1.175, 1.174, 1.174, 1.175, 1.175");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.1718, 0.1715, 0.1719, 0.1717, 0.1719, 0.1727, 0.173, 0.176, 0.1776, 0.1814",\
                 "0.171, 0.1707, 0.1711, 0.1708, 0.1711, 0.1715, 0.1723, 0.175, 0.1776, 0.1804",\
                 "0.1797, 0.1795, 0.1797, 0.1796, 0.18, 0.1807, 0.182, 0.184, 0.1866, 0.1889",\
                 "0.2146, 0.2147, 0.2153, 0.2154, 0.2158, 0.2168, 0.2177, 0.2195, 0.2211, 0.2249",\
                 "0.2864, 0.2867, 0.2861, 0.2879, 0.2883, 0.2883, 0.2894, 0.291, 0.2936, 0.2959",\
                 "0.3999, 0.4, 0.4003, 0.3996, 0.402, 0.4026, 0.4037, 0.405, 0.4066, 0.4094",\
                 "0.5571, 0.5574, 0.5572, 0.5566, 0.5574, 0.5605, 0.5625, 0.563, 0.5631, 0.5684",\
                 "0.7613, 0.7614, 0.7616, 0.7616, 0.761, 0.7622, 0.767, 0.769, 0.7701, 0.7699",\
                 "1.014, 1.014, 1.015, 1.014, 1.014, 1.014, 1.017, 1.022, 1.025, 1.025",\
                 "1.318, 1.319, 1.319, 1.319, 1.319, 1.319, 1.32, 1.324, 1.331, 1.334");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.5136, 0.506, 0.4932, 0.4844, 0.4793, 0.4758, 0.474, 0.4726, 0.4714, 0.4707",\
                 "0.513, 0.5056, 0.4926, 0.4838, 0.4787, 0.4754, 0.4734, 0.472, 0.4708, 0.47",\
                 "0.5181, 0.5105, 0.498, 0.4892, 0.4839, 0.4805, 0.4784, 0.4769, 0.476, 0.4752",\
                 "0.5397, 0.5321, 0.519, 0.5101, 0.5048, 0.5017, 0.4996, 0.4982, 0.497, 0.4963",\
                 "0.5832, 0.5754, 0.5623, 0.5532, 0.5477, 0.5445, 0.5422, 0.5407, 0.5397, 0.5391",\
                 "0.6523, 0.6444, 0.6305, 0.6212, 0.6154, 0.6118, 0.6094, 0.6081, 0.6071, 0.6061",\
                 "0.7478, 0.7397, 0.7251, 0.715, 0.7089, 0.705, 0.7026, 0.7009, 0.6997, 0.6989",\
                 "0.8712, 0.8629, 0.8479, 0.8369, 0.8302, 0.8261, 0.8231, 0.8216, 0.8204, 0.8195",\
                 "1.023, 1.014, 0.9981, 0.9861, 0.9789, 0.9744, 0.9716, 0.9697, 0.9684, 0.9673",\
                 "1.204, 1.195, 1.178, 1.166, 1.158, 1.153, 1.15, 1.148, 1.146, 1.145");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.4244, 0.4224, 0.4196, 0.4201, 0.4222, 0.4245, 0.4269, 0.4311, 0.4332, 0.438",\
                 "0.4234, 0.4207, 0.4185, 0.4191, 0.4212, 0.4234, 0.4259, 0.4301, 0.4332, 0.4365",\
                 "0.4317, 0.4291, 0.4266, 0.4273, 0.4294, 0.4319, 0.4353, 0.4381, 0.4402, 0.445",\
                 "0.46, 0.4576, 0.4544, 0.4549, 0.4569, 0.4594, 0.4613, 0.4651, 0.4682, 0.4725",\
                 "0.5123, 0.5095, 0.5063, 0.5061, 0.5078, 0.5105, 0.5128, 0.5156, 0.5192, 0.5215",\
                 "0.5918, 0.5888, 0.5846, 0.5845, 0.5848, 0.5862, 0.5891, 0.5926, 0.5952, 0.5995",\
                 "0.7007, 0.6972, 0.6916, 0.6888, 0.6916, 0.6919, 0.6946, 0.6971, 0.6987, 0.7045",\
                 "0.8393, 0.8352, 0.8289, 0.8245, 0.8237, 0.827, 0.8301, 0.8301, 0.8312, 0.8345",\
                 "1.009, 1.005, 0.9968, 0.9922, 0.9904, 0.9899, 0.9951, 0.9976, 0.9992, 0.999",\
                 "1.213, 1.208, 1.199, 1.192, 1.19, 1.188, 1.19, 1.197, 1.199, 1.2");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.146, 0.154, 0.182, 0.238, 0.314, 0.406, 0.512, 0.631, 0.767, \
                 0.914");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.2, 0.207, 0.236, 0.291, 0.367, 0.46, 0.568, 0.692, 0.834, 0.992");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.1384, 0.1626, 0.2261, 0.3187, 0.4368, 0.5848, 0.7698, 0.9987, 1.277, 1.608",\
                 "0.144, 0.1682, 0.2316, 0.3243, 0.4423, 0.5903, 0.7754, 1.004, 1.282, 1.613",\
                 "0.1661, 0.19, 0.2529, 0.3452, 0.463, 0.6109, 0.796, 1.025, 1.303, 1.634",\
                 "0.1965, 0.2215, 0.2851, 0.3764, 0.4937, 0.6413, 0.8263, 1.055, 1.333, 1.665",\
                 "0.2134, 0.2402, 0.3059, 0.3967, 0.5129, 0.6599, 0.8446, 1.073, 1.352, 1.683",\
                 "0.2153, 0.2425, 0.307, 0.3962, 0.5111, 0.6574, 0.8414, 1.07, 1.348, 1.679",\
                 "0.2015, 0.2288, 0.2931, 0.3811, 0.4948, 0.6398, 0.8233, 1.051, 1.329, 1.66",\
                 "0.1716, 0.1995, 0.2641, 0.3516, 0.4645, 0.609, 0.7922, 1.02, 1.298, 1.628",\
                 "0.125, 0.1536, 0.2189, 0.3066, 0.4195, 0.5637, 0.7467, 0.9747, 1.252, 1.583",\
                 "0.0605, 0.0901, 0.1563, 0.2445, 0.3572, 0.5014, 0.6844, 0.9124, 1.19, 1.521");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.1202, 0.1443, 0.211, 0.3191, 0.4801, 0.7046, 1, 1.372, 1.826, 2.368",\
                 "0.1249, 0.149, 0.2155, 0.3237, 0.4847, 0.7092, 1.005, 1.377, 1.831, 2.372",\
                 "0.1419, 0.1664, 0.2333, 0.3415, 0.5025, 0.727, 1.023, 1.395, 1.848, 2.39",\
                 "0.1587, 0.1857, 0.2554, 0.365, 0.526, 0.7505, 1.046, 1.417, 1.873, 2.415",\
                 "0.1644, 0.1961, 0.2713, 0.3831, 0.5455, 0.7702, 1.065, 1.437, 1.892, 2.434",\
                 "0.155, 0.1927, 0.2778, 0.3946, 0.5583, 0.7837, 1.079, 1.451, 1.906, 2.447",\
                 "0.1285, 0.173, 0.2709, 0.3953, 0.5633, 0.7903, 1.086, 1.458, 1.912, 2.453",\
                 "0.0841, 0.1358, 0.2487, 0.3833, 0.5569, 0.7884, 1.086, 1.459, 1.913, 2.454",\
                 "0.0197, 0.0799, 0.2087, 0.3568, 0.5367, 0.7737, 1.077, 1.452, 1.907, 2.448",\
                 "-0.0652, 0.004, 0.1502, 0.3144, 0.5022, 0.7446, 1.054, 1.435, 1.893, 2.434");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.07224, 0.09608, 0.1654, 0.2727, 0.4206, 0.6297, 0.9165, 1.284, 1.744, 2.292",\
                 "0.07204, 0.0959, 0.1653, 0.2727, 0.4205, 0.6297, 0.9155, 1.284, 1.744, 2.292",\
                 "0.0699, 0.09398, 0.1639, 0.2713, 0.4193, 0.6293, 0.9161, 1.284, 1.744, 2.294",\
                 "0.07326, 0.096, 0.1623, 0.2677, 0.4177, 0.6292, 0.9139, 1.285, 1.744, 2.293",\
                 "0.07856, 0.1017, 0.1641, 0.265, 0.4139, 0.6262, 0.9136, 1.284, 1.743, 2.294",\
                 "0.08142, 0.1017, 0.1614, 0.2615, 0.411, 0.622, 0.9092, 1.283, 1.742, 2.292",\
                 "0.084, 0.1028, 0.16, 0.258, 0.4064, 0.6194, 0.9072, 1.278, 1.739, 2.291",\
                 "0.0864, 0.1042, 0.1598, 0.2574, 0.4046, 0.6166, 0.9058, 1.278, 1.736, 2.286",\
                 "0.0898, 0.107, 0.1608, 0.2564, 0.4044, 0.6174, 0.9058, 1.277, 1.736, 2.285",\
                 "0.0942, 0.11, 0.1622, 0.2572, 0.4044, 0.6168, 0.9056, 1.277, 1.737, 2.287");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.06898, 0.0973, 0.187, 0.3578, 0.6358, 1.033, 1.558, 2.22, 3.026, 3.986",\
                 "0.06886, 0.09696, 0.1869, 0.3579, 0.6358, 1.033, 1.558, 2.22, 3.024, 3.986",\
                 "0.07032, 0.09798, 0.1872, 0.358, 0.6371, 1.032, 1.557, 2.219, 3.024, 3.986",\
                 "0.07904, 0.1051, 0.1919, 0.3597, 0.6371, 1.033, 1.558, 2.217, 3.029, 3.993",\
                 "0.09404, 0.1199, 0.2003, 0.3643, 0.6396, 1.034, 1.557, 2.217, 3.028, 3.992",\
                 "0.1135, 0.1408, 0.2167, 0.3732, 0.6426, 1.036, 1.56, 2.217, 3.025, 3.985",\
                 "0.136, 0.1652, 0.2402, 0.3898, 0.6536, 1.041, 1.56, 2.22, 3.028, 3.983",\
                 "0.161, 0.1914, 0.2704, 0.409, 0.6698, 1.055, 1.567, 2.22, 3.025, 3.982",\
                 "0.1894, 0.2218, 0.3052, 0.4358, 0.6892, 1.075, 1.585, 2.232, 3.027, 3.989",\
                 "0.2212, 0.2538, 0.3434, 0.4676, 0.709, 1.096, 1.612, 2.257, 3.041, 3.99");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.3154, 0.3394, 0.4037, 0.4975, 0.6168, 0.7651, 0.9502, 1.179, 1.457, 1.788",\
                 "0.3202, 0.3442, 0.4085, 0.5024, 0.6217, 0.77, 0.9551, 1.184, 1.462, 1.793",\
                 "0.3372, 0.3613, 0.4255, 0.5193, 0.6387, 0.7871, 0.9722, 1.201, 1.479, 1.81",\
                 "0.3553, 0.3793, 0.4435, 0.5373, 0.6566, 0.805, 0.9901, 1.219, 1.497, 1.828",\
                 "0.3662, 0.3902, 0.4543, 0.5483, 0.6675, 0.8159, 1.001, 1.23, 1.508, 1.839",\
                 "0.3682, 0.3924, 0.4565, 0.5503, 0.6697, 0.8182, 1.003, 1.232, 1.51, 1.841",\
                 "0.3581, 0.3822, 0.4466, 0.5406, 0.6602, 0.8087, 0.9939, 1.223, 1.501, 1.831",\
                 "0.3357, 0.3599, 0.4243, 0.5185, 0.6384, 0.7872, 0.9723, 1.201, 1.479, 1.81",\
                 "0.2983, 0.3226, 0.3871, 0.4816, 0.6015, 0.7504, 0.9356, 1.165, 1.442, 1.773",\
                 "0.2455, 0.2699, 0.3345, 0.4293, 0.5497, 0.6984, 0.8838, 1.113, 1.391, 1.721");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.3296, 0.3535, 0.4201, 0.5288, 0.6905, 0.9158, 1.212, 1.585, 2.039, 2.581",\
                 "0.3355, 0.3593, 0.4262, 0.5349, 0.6966, 0.9219, 1.218, 1.591, 2.044, 2.585",\
                 "0.3641, 0.3878, 0.4547, 0.5635, 0.7252, 0.9505, 1.247, 1.619, 2.074, 2.616",\
                 "0.4186, 0.4423, 0.5089, 0.6175, 0.7792, 1.004, 1.301, 1.673, 2.128, 2.669",\
                 "0.4915, 0.5152, 0.5816, 0.6903, 0.8518, 1.077, 1.373, 1.745, 2.201, 2.743",\
                 "0.5818, 0.6053, 0.6718, 0.78, 0.9412, 1.166, 1.462, 1.835, 2.289, 2.83",\
                 "0.6876, 0.7113, 0.7776, 0.8857, 1.047, 1.271, 1.567, 1.939, 2.394, 2.935",\
                 "0.8082, 0.8321, 0.8985, 1.006, 1.167, 1.392, 1.687, 2.059, 2.513, 3.054",\
                 "0.9454, 0.9689, 1.035, 1.143, 1.304, 1.529, 1.824, 2.195, 2.649, 3.19",\
                 "1.099, 1.123, 1.189, 1.297, 1.457, 1.681, 1.976, 2.348, 2.802, 3.343");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.0838, 0.1084, 0.1756, 0.2808, 0.4254, 0.6325, 0.9173, 1.286, 1.744, 2.292",\
                 "0.08376, 0.1083, 0.1756, 0.2808, 0.4254, 0.6323, 0.9175, 1.286, 1.744, 2.292",\
                 "0.08392, 0.1081, 0.1755, 0.2806, 0.4259, 0.6334, 0.9169, 1.285, 1.742, 2.292",\
                 "0.0838, 0.1082, 0.1755, 0.2807, 0.4259, 0.6327, 0.9175, 1.286, 1.744, 2.292",\
                 "0.08412, 0.1084, 0.1753, 0.2806, 0.426, 0.6328, 0.9168, 1.284, 1.741, 2.292",\
                 "0.08468, 0.1092, 0.1764, 0.2818, 0.4266, 0.6324, 0.9158, 1.286, 1.744, 2.291",\
                 "0.086, 0.1106, 0.1776, 0.2824, 0.4274, 0.6332, 0.9156, 1.283, 1.741, 2.293",\
                 "0.0866, 0.1114, 0.1784, 0.284, 0.4284, 0.6338, 0.9162, 1.285, 1.741, 2.29",\
                 "0.0884, 0.1128, 0.18, 0.2854, 0.43, 0.6346, 0.9184, 1.286, 1.743, 2.289",\
                 "0.0898, 0.114, 0.1812, 0.2866, 0.4312, 0.6368, 0.9182, 1.285, 1.742, 2.29");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.004323, 0.007505, 0.01867, 0.04, 0.07322, 0.1198, 0.1812, 0.2585, 0.3528, 0.4652");
          values("0.0735, 0.1009, 0.1895, 0.3586, 0.6358, 1.032, 1.557, 2.219, 3.027, 3.985",\
                 "0.07388, 0.1009, 0.1892, 0.3586, 0.6361, 1.032, 1.557, 2.219, 3.023, 3.984",\
                 "0.0738, 0.1009, 0.1892, 0.3587, 0.636, 1.034, 1.558, 2.22, 3.027, 3.985",\
                 "0.0736, 0.1009, 0.1891, 0.3587, 0.636, 1.033, 1.558, 2.22, 3.026, 3.986",\
                 "0.07346, 0.1009, 0.1901, 0.3588, 0.6372, 1.034, 1.557, 2.217, 3.029, 3.993",\
                 "0.0744, 0.1016, 0.1904, 0.3592, 0.636, 1.033, 1.558, 2.218, 3.025, 3.982",\
                 "0.075, 0.1032, 0.1908, 0.3596, 0.6368, 1.034, 1.556, 2.215, 3.024, 3.984",\
                 "0.0766, 0.1036, 0.1922, 0.3604, 0.6364, 1.034, 1.558, 2.219, 3.022, 3.983",\
                 "0.078, 0.105, 0.1936, 0.3616, 0.6382, 1.035, 1.556, 2.215, 3.025, 3.983",\
                 "0.0796, 0.1068, 0.1952, 0.362, 0.637, 1.034, 1.559, 2.216, 3.021, 3.988");
        }
      }
    }
  }

