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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.1702, 0.1682, 0.1708, 0.1849, 0.2136, 0.2596, 0.3241, 0.409, \
                 0.5152, 0.6436");
        }

        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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.1039, 0.1024, 0.1052, 0.1152, 0.133, 0.1601, 0.1981, 0.2512, \
                 0.3203, 0.4063");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.09434, 0.09313, 0.09442, 0.1022, 0.1176, 0.1417, 0.1749, 0.2185, \
                 0.2729, 0.3386");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.03254, 0.03207, 0.03307, 0.03883, 0.05151, 0.0722, 0.1015, 0.1399, \
                 0.188, 0.2461");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.007223 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 1.399 ;
      max_transition : 8.6 ;
      min_capacitance : 0.008223 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.188, 0.188, 0.1879, 0.1878, 0.1878, 0.1879, 0.1879, 0.188, 0.188, 0.188",\
                 "0.1884, 0.1883, 0.1882, 0.1882, 0.1882, 0.1883, 0.1884, 0.1883, 0.1883, 0.1884",\
                 "0.1944, 0.1944, 0.1942, 0.1943, 0.1943, 0.1944, 0.1945, 0.1945, 0.1945, 0.1945",\
                 "0.2085, 0.2085, 0.2084, 0.2083, 0.2084, 0.2084, 0.2085, 0.2084, 0.2085, 0.2085",\
                 "0.2321, 0.2321, 0.232, 0.232, 0.232, 0.232, 0.2321, 0.2321, 0.232, 0.2321",\
                 "0.2663, 0.2663, 0.2662, 0.2661, 0.2662, 0.2663, 0.2662, 0.2662, 0.2663, 0.2663",\
                 "0.3117, 0.3118, 0.3117, 0.3115, 0.3116, 0.3116, 0.3117, 0.3117, 0.3117, 0.3117",\
                 "0.3689, 0.3689, 0.3689, 0.3687, 0.3688, 0.3688, 0.3688, 0.3689, 0.3689, 0.3689",\
                 "0.4387, 0.4386, 0.4386, 0.4384, 0.4384, 0.4384, 0.4385, 0.4385, 0.4385, 0.4386",\
                 "0.5213, 0.5214, 0.5212, 0.5211, 0.521, 0.521, 0.5211, 0.5211, 0.5211, 0.5211");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.1427, 0.1427, 0.1427, 0.143, 0.1437, 0.1452, 0.148, 0.1513, 0.1544, 0.1669",\
                 "0.1417, 0.1417, 0.1416, 0.1419, 0.1428, 0.1442, 0.1461, 0.1503, 0.1528, 0.1656",\
                 "0.1435, 0.1437, 0.1437, 0.1441, 0.1448, 0.1462, 0.148, 0.1509, 0.1554, 0.1684",\
                 "0.1555, 0.1555, 0.1562, 0.1562, 0.157, 0.1591, 0.1616, 0.1645, 0.167, 0.1821",\
                 "0.181, 0.1815, 0.1806, 0.1824, 0.1828, 0.1841, 0.1853, 0.1892, 0.1927, 0.2104",\
                 "0.2223, 0.2225, 0.2226, 0.2222, 0.2245, 0.2264, 0.2272, 0.2288, 0.235, 0.2541",\
                 "0.2804, 0.2805, 0.2808, 0.2806, 0.2809, 0.2851, 0.287, 0.2881, 0.2905, 0.3155",\
                 "0.3564, 0.3566, 0.3569, 0.3569, 0.3565, 0.358, 0.3645, 0.3669, 0.3678, 0.3998",\
                 "0.4512, 0.4517, 0.4517, 0.4519, 0.4514, 0.4518, 0.4546, 0.4623, 0.4682, 0.5141",\
                 "0.5656, 0.5661, 0.5668, 0.5661, 0.5658, 0.5663, 0.5675, 0.5719, 0.589, 0.6557");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.3124, 0.3132, 0.3162, 0.3191, 0.3209, 0.3219, 0.3225, 0.3227, 0.323, 0.3231",\
                 "0.3119, 0.3125, 0.3158, 0.3186, 0.3203, 0.3213, 0.3219, 0.3223, 0.3225, 0.3227",\
                 "0.3127, 0.3131, 0.3164, 0.3192, 0.321, 0.322, 0.3226, 0.3229, 0.3232, 0.3234",\
                 "0.3199, 0.3201, 0.3229, 0.3258, 0.3276, 0.3287, 0.3293, 0.3297, 0.3298, 0.33",\
                 "0.335, 0.3353, 0.3378, 0.3404, 0.3422, 0.3433, 0.3439, 0.3443, 0.3445, 0.3447",\
                 "0.3603, 0.3602, 0.3619, 0.3643, 0.3663, 0.3672, 0.3679, 0.3683, 0.3686, 0.3688",\
                 "0.396, 0.3955, 0.3963, 0.3985, 0.4002, 0.4013, 0.402, 0.4024, 0.4026, 0.4029",\
                 "0.4425, 0.4412, 0.4412, 0.4429, 0.4446, 0.4457, 0.4464, 0.4468, 0.4472, 0.4473",\
                 "0.4999, 0.498, 0.4971, 0.4984, 0.4998, 0.5009, 0.5015, 0.502, 0.5023, 0.5026",\
                 "0.5689, 0.5663, 0.5644, 0.5652, 0.5666, 0.5675, 0.5681, 0.5686, 0.5689, 0.5691");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.2722, 0.275, 0.2803, 0.2848, 0.2886, 0.292, 0.2948, 0.2984, 0.3022, 0.3178",\
                 "0.2709, 0.2734, 0.279, 0.2837, 0.2878, 0.2907, 0.2945, 0.2971, 0.3009, 0.3174",\
                 "0.2719, 0.2746, 0.2797, 0.2845, 0.2887, 0.292, 0.2958, 0.2984, 0.3022, 0.3186",\
                 "0.2807, 0.2831, 0.2883, 0.293, 0.2969, 0.3009, 0.3037, 0.3083, 0.3111, 0.3282",\
                 "0.2981, 0.3007, 0.3055, 0.3097, 0.314, 0.3181, 0.3212, 0.3254, 0.3286, 0.3491",\
                 "0.3253, 0.3274, 0.3311, 0.3368, 0.341, 0.3441, 0.3473, 0.3512, 0.3564, 0.3815",\
                 "0.3636, 0.3652, 0.3687, 0.3731, 0.3785, 0.3831, 0.3859, 0.3896, 0.3931, 0.4287",\
                 "0.4135, 0.4151, 0.4185, 0.4222, 0.4263, 0.4332, 0.4377, 0.4391, 0.4435, 0.4932",\
                 "0.4764, 0.4774, 0.4803, 0.4841, 0.4871, 0.491, 0.4998, 0.505, 0.5124, 0.5858",\
                 "0.5521, 0.5529, 0.5558, 0.5591, 0.5625, 0.5652, 0.5684, 0.5804, 0.5954, 0.7251");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.27, 0.288, 0.355, 0.488, 0.653, 0.851, 1.083, 1.347, 1.646, \
                 1.981");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.311, 0.326, 0.395, 0.508, 0.651, 0.829, 1.038, 1.28, 1.557, \
                 1.868");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.2136, 0.267, 0.391, 0.556, 0.7665, 1.037, 1.383, 1.815, 2.342, 2.97",\
                 "0.229, 0.2823, 0.4068, 0.5716, 0.7821, 1.053, 1.399, 1.831, 2.358, 2.986",\
                 "0.2851, 0.3379, 0.4609, 0.6253, 0.8356, 1.106, 1.452, 1.885, 2.412, 3.04",\
                 "0.3506, 0.4076, 0.5316, 0.6953, 0.9052, 1.176, 1.522, 1.954, 2.481, 3.109",\
                 "0.3777, 0.4345, 0.5582, 0.7214, 0.9309, 1.201, 1.546, 1.979, 2.506, 3.134",\
                 "0.3693, 0.4262, 0.5495, 0.7126, 0.9218, 1.192, 1.537, 1.968, 2.496, 3.124",\
                 "0.3285, 0.3863, 0.51, 0.6728, 0.8816, 1.151, 1.496, 1.928, 2.454, 3.082",\
                 "0.2557, 0.3142, 0.4389, 0.6019, 0.8107, 1.08, 1.425, 1.857, 2.384, 3.011",\
                 "0.1479, 0.2078, 0.3339, 0.4975, 0.7065, 0.976, 1.321, 1.753, 2.28, 2.907",\
                 "0.0026, 0.0643, 0.1921, 0.3565, 0.5657, 0.8353, 1.181, 1.613, 2.139, 2.767");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.21, 0.2631, 0.3991, 0.6271, 0.9765, 1.466, 2.111, 2.923, 3.916, 5.096",\
                 "0.2238, 0.2769, 0.4128, 0.6409, 0.9903, 1.48, 2.124, 2.938, 3.93, 5.111",\
                 "0.2717, 0.3255, 0.462, 0.6901, 1.039, 1.529, 2.172, 2.987, 3.978, 5.161",\
                 "0.3205, 0.3823, 0.5254, 0.755, 1.104, 1.594, 2.238, 3.052, 4.044, 5.224",\
                 "0.3443, 0.4172, 0.5713, 0.8039, 1.154, 1.643, 2.288, 3.098, 4.09, 5.272",\
                 "0.3385, 0.4252, 0.5966, 0.834, 1.184, 1.674, 2.318, 3.131, 4.12, 5.3",\
                 "0.3004, 0.4015, 0.5955, 0.8426, 1.195, 1.685, 2.329, 3.14, 4.131, 5.314",\
                 "0.2274, 0.3435, 0.5627, 0.824, 1.182, 1.674, 2.319, 3.13, 4.12, 5.3",\
                 "0.1177, 0.2493, 0.4963, 0.775, 1.14, 1.639, 2.285, 3.097, 4.087, 5.268",\
                 "-0.0315, 0.1159, 0.3925, 0.6923, 1.067, 1.572, 2.227, 3.041, 4.031, 5.212");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.1055, 0.1576, 0.2821, 0.4673, 0.7491, 1.158, 1.719, 2.439, 3.319, 4.377",\
                 "0.1054, 0.1575, 0.2821, 0.468, 0.7493, 1.158, 1.719, 2.437, 3.32, 4.38",\
                 "0.1035, 0.1554, 0.2803, 0.4671, 0.7484, 1.158, 1.719, 2.439, 3.32, 4.379",\
                 "0.1187, 0.1655, 0.2801, 0.4647, 0.7486, 1.158, 1.72, 2.437, 3.322, 4.38",\
                 "0.122, 0.1662, 0.2802, 0.4642, 0.7452, 1.157, 1.718, 2.439, 3.32, 4.379",\
                 "0.1228, 0.1668, 0.2794, 0.4644, 0.7462, 1.156, 1.714, 2.435, 3.32, 4.38",\
                 "0.1248, 0.1686, 0.28, 0.4628, 0.745, 1.156, 1.714, 2.432, 3.315, 4.371",\
                 "0.1282, 0.1712, 0.281, 0.4642, 0.7446, 1.154, 1.715, 2.435, 3.314, 4.368",\
                 "0.1322, 0.175, 0.2832, 0.4652, 0.7454, 1.156, 1.716, 2.435, 3.317, 4.369",\
                 "0.1372, 0.1792, 0.2868, 0.4668, 0.7462, 1.156, 1.716, 2.435, 3.317, 4.37");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.1034, 0.1597, 0.3475, 0.7288, 1.34, 2.205, 3.345, 4.773, 6.52, 8.607",\
                 "0.1033, 0.1597, 0.3476, 0.729, 1.34, 2.202, 3.341, 4.774, 6.523, 8.603",\
                 "0.1059, 0.1618, 0.348, 0.7287, 1.34, 2.204, 3.34, 4.774, 6.518, 8.609",\
                 "0.1273, 0.1793, 0.3558, 0.731, 1.342, 2.204, 3.344, 4.774, 6.522, 8.607",\
                 "0.1536, 0.206, 0.3706, 0.7354, 1.344, 2.203, 3.346, 4.774, 6.523, 8.607",\
                 "0.1842, 0.2404, 0.3936, 0.7418, 1.344, 2.206, 3.343, 4.769, 6.516, 8.61",\
                 "0.2166, 0.28, 0.4292, 0.7578, 1.349, 2.206, 3.34, 4.775, 6.516, 8.603",\
                 "0.2496, 0.3224, 0.4726, 0.7836, 1.364, 2.213, 3.342, 4.77, 6.519, 8.599",\
                 "0.286, 0.367, 0.5234, 0.8152, 1.388, 2.234, 3.354, 4.773, 6.516, 8.614",\
                 "0.3252, 0.414, 0.5798, 0.8554, 1.414, 2.261, 3.378, 4.79, 6.522, 8.598");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.4484, 0.5062, 0.6383, 0.807, 1.019, 1.29, 1.636, 2.069, 2.596, 3.224",\
                 "0.4626, 0.5205, 0.6526, 0.8212, 1.033, 1.304, 1.65, 2.083, 2.61, 3.238",\
                 "0.5097, 0.5677, 0.6997, 0.8682, 1.08, 1.351, 1.697, 2.13, 2.657, 3.285",\
                 "0.5573, 0.6154, 0.7473, 0.9161, 1.128, 1.4, 1.746, 2.178, 2.705, 3.333",\
                 "0.585, 0.6431, 0.7754, 0.9445, 1.156, 1.428, 1.774, 2.206, 2.734, 3.361",\
                 "0.59, 0.6478, 0.7805, 0.9497, 1.162, 1.433, 1.78, 2.212, 2.74, 3.368",\
                 "0.5668, 0.625, 0.7584, 0.9283, 1.141, 1.413, 1.759, 2.191, 2.718, 3.346",\
                 "0.513, 0.5709, 0.7055, 0.8765, 1.09, 1.362, 1.708, 2.14, 2.667, 3.295",\
                 "0.4262, 0.4843, 0.6198, 0.7915, 1.005, 1.277, 1.624, 2.056, 2.583, 3.211",\
                 "0.3036, 0.3621, 0.4989, 0.6716, 0.8858, 1.158, 1.505, 1.937, 2.464, 3.093");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.5326, 0.5879, 0.7274, 0.9582, 1.309, 1.801, 2.446, 3.257, 4.248, 5.432",\
                 "0.5478, 0.6032, 0.7427, 0.9737, 1.325, 1.816, 2.462, 3.273, 4.263, 5.447",\
                 "0.6147, 0.6701, 0.8094, 1.04, 1.392, 1.882, 2.528, 3.342, 4.334, 5.517",\
                 "0.74, 0.7953, 0.9348, 1.166, 1.517, 2.008, 2.653, 3.467, 4.46, 5.642",\
                 "0.8987, 0.9546, 1.094, 1.325, 1.677, 2.168, 2.814, 3.625, 4.617, 5.797",\
                 "1.091, 1.148, 1.288, 1.519, 1.87, 2.361, 3.007, 3.82, 4.812, 5.993",\
                 "1.32, 1.377, 1.517, 1.748, 2.1, 2.59, 3.235, 4.048, 5.041, 6.222",\
                 "1.583, 1.641, 1.782, 2.014, 2.365, 2.857, 3.501, 4.313, 5.303, 6.485",\
                 "1.883, 1.941, 2.084, 2.316, 2.668, 3.159, 3.804, 4.616, 5.606, 6.786",\
                 "2.22, 2.28, 2.424, 2.656, 3.008, 3.499, 4.144, 4.956, 5.946, 7.127");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.1137, 0.1688, 0.2901, 0.4709, 0.7513, 1.159, 1.719, 2.439, 3.323, 4.379",\
                 "0.1137, 0.169, 0.2899, 0.4712, 0.7508, 1.16, 1.719, 2.438, 3.324, 4.378",\
                 "0.1137, 0.169, 0.29, 0.4716, 0.7508, 1.16, 1.721, 2.438, 3.32, 4.378",\
                 "0.1142, 0.1695, 0.2906, 0.4712, 0.7516, 1.159, 1.72, 2.439, 3.319, 4.376",\
                 "0.1148, 0.1702, 0.2912, 0.471, 0.751, 1.16, 1.719, 2.439, 3.319, 4.376",\
                 "0.1158, 0.1718, 0.2934, 0.4724, 0.751, 1.159, 1.718, 2.439, 3.32, 4.378",\
                 "0.1172, 0.174, 0.2952, 0.475, 0.7526, 1.161, 1.719, 2.435, 3.319, 4.375",\
                 "0.1192, 0.1766, 0.2978, 0.477, 0.7534, 1.161, 1.721, 2.436, 3.318, 4.37",\
                 "0.1214, 0.1796, 0.3018, 0.4794, 0.755, 1.163, 1.721, 2.438, 3.318, 4.373",\
                 "0.124, 0.1824, 0.3058, 0.4822, 0.7566, 1.164, 1.722, 2.437, 3.322, 4.372");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.008223, 0.01782, 0.05151, 0.1159, 0.2161, 0.3567, 0.5418, 0.775, 1.06, 1.399");
          values("0.1033, 0.1595, 0.3468, 0.7289, 1.34, 2.206, 3.34, 4.778, 6.533, 8.605",\
                 "0.1029, 0.1592, 0.3468, 0.7278, 1.342, 2.205, 3.34, 4.779, 6.533, 8.607",\
                 "0.1033, 0.159, 0.347, 0.7276, 1.342, 2.203, 3.345, 4.774, 6.524, 8.608",\
                 "0.1038, 0.1598, 0.3472, 0.7282, 1.341, 2.203, 3.342, 4.774, 6.523, 8.603",\
                 "0.1054, 0.1612, 0.3478, 0.728, 1.34, 2.207, 3.34, 4.773, 6.524, 8.615",\
                 "0.1066, 0.1622, 0.3486, 0.7278, 1.341, 2.204, 3.339, 4.772, 6.524, 8.603",\
                 "0.109, 0.1644, 0.35, 0.7284, 1.34, 2.201, 3.341, 4.768, 6.516, 8.603",\
                 "0.1114, 0.167, 0.352, 0.729, 1.341, 2.203, 3.337, 4.776, 6.519, 8.6",\
                 "0.115, 0.1704, 0.3538, 0.7302, 1.341, 2.202, 3.339, 4.766, 6.522, 8.593",\
                 "0.119, 0.1742, 0.3572, 0.7304, 1.342, 2.205, 3.338, 4.767, 6.511, 8.61");
        }
      }
    }
  }

