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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1878, 0.1869, 0.1951, 0.2225, 0.275, 0.3561, 0.468, 0.6132, \
                  0.7926, 1.009");
        }

        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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1231, 0.1225, 0.1291, 0.1475, 0.1795, 0.2274, 0.2986, 0.3955, \
                  0.5184, 0.6684");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.09717, 0.09632, 0.101, 0.1163, 0.1444, 0.1868, 0.2451, 0.3201, \
                  0.4127, 0.5239");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.03303, 0.0328, 0.03607, 0.04818, 0.07203, 0.1087, 0.1596, 0.2253, \
                  0.3064, 0.404");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.006266 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 1.039 ;
      max_transition : 5.2 ;
      min_capacitance : 0.007266 ;
      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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.1924, 0.1924, 0.1923, 0.1922, 0.1922, 0.1923, 0.1924, 0.1924, 0.1924, 0.1924",\
                 "0.1934, 0.1934, 0.1933, 0.1932, 0.1933, 0.1933, 0.1934, 0.1934, 0.1934, 0.1934",\
                 "0.2038, 0.2037, 0.2036, 0.2035, 0.2036, 0.2036, 0.2036, 0.2037, 0.2037, 0.2037",\
                 "0.2279, 0.228, 0.2279, 0.2278, 0.2279, 0.228, 0.2279, 0.228, 0.228, 0.228",\
                 "0.2683, 0.2681, 0.2681, 0.2681, 0.2681, 0.2681, 0.2682, 0.2682, 0.2682, 0.2682",\
                 "0.3259, 0.3258, 0.3256, 0.3256, 0.3256, 0.3257, 0.3257, 0.3257, 0.3257, 0.3257",\
                 "0.4018, 0.4018, 0.4016, 0.4015, 0.4016, 0.4016, 0.4016, 0.4016, 0.4016, 0.4016",\
                 "0.4969, 0.497, 0.4968, 0.4965, 0.4967, 0.4967, 0.4967, 0.4968, 0.4968, 0.4968",\
                 "0.6124, 0.6124, 0.6123, 0.612, 0.6122, 0.6122, 0.6123, 0.6122, 0.6123, 0.6123",\
                 "0.7493, 0.7493, 0.7492, 0.7489, 0.749, 0.749, 0.749, 0.749, 0.7491, 0.7491");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.1378, 0.138, 0.138, 0.1381, 0.1381, 0.1386, 0.142, 0.1449, 0.1459, 0.1503",\
                 "0.1371, 0.1373, 0.1372, 0.1375, 0.1377, 0.139, 0.1409, 0.1441, 0.1466, 0.151",\
                 "0.1437, 0.1436, 0.1437, 0.144, 0.144, 0.1457, 0.1478, 0.1492, 0.1516, 0.156",\
                 "0.1674, 0.1674, 0.1682, 0.1682, 0.1681, 0.1694, 0.1712, 0.1744, 0.1765, 0.1812",\
                 "0.2142, 0.2143, 0.2137, 0.2154, 0.2159, 0.2161, 0.2173, 0.2205, 0.2251, 0.2273",\
                 "0.2867, 0.2869, 0.2867, 0.2863, 0.2888, 0.2902, 0.2896, 0.2928, 0.2949, 0.2975",\
                 "0.3863, 0.3867, 0.3869, 0.3863, 0.3866, 0.3906, 0.3919, 0.3922, 0.3932, 0.3969",\
                 "0.515, 0.5154, 0.5157, 0.5155, 0.5146, 0.5162, 0.5215, 0.5236, 0.5257, 0.5261",\
                 "0.6741, 0.6741, 0.6749, 0.6754, 0.6746, 0.6746, 0.677, 0.6838, 0.6862, 0.6878",\
                 "0.8654, 0.8654, 0.8663, 0.866, 0.8661, 0.8654, 0.8667, 0.8706, 0.881, 0.8829");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.3249, 0.3229, 0.3224, 0.323, 0.3236, 0.3241, 0.3244, 0.3246, 0.3247, 0.3248",\
                 "0.3245, 0.3225, 0.322, 0.3226, 0.3231, 0.3236, 0.3239, 0.3241, 0.3242, 0.3243",\
                 "0.328, 0.3259, 0.3254, 0.326, 0.3267, 0.3272, 0.3275, 0.3276, 0.3278, 0.3279",\
                 "0.3426, 0.3403, 0.3391, 0.3396, 0.3404, 0.3409, 0.3411, 0.3414, 0.3416, 0.3416",\
                 "0.3708, 0.3687, 0.3667, 0.3671, 0.3676, 0.3681, 0.3683, 0.3686, 0.3687, 0.3687",\
                 "0.4147, 0.4119, 0.4095, 0.4092, 0.4098, 0.4101, 0.4103, 0.4105, 0.4106, 0.4107",\
                 "0.4752, 0.4719, 0.4685, 0.4676, 0.4679, 0.4682, 0.4685, 0.4686, 0.4686, 0.4686",\
                 "0.5525, 0.5487, 0.5439, 0.5427, 0.5426, 0.5426, 0.5428, 0.5429, 0.5431, 0.5432",\
                 "0.6477, 0.6432, 0.6376, 0.6355, 0.6347, 0.6347, 0.6349, 0.635, 0.6351, 0.6351",\
                 "0.7605, 0.7555, 0.749, 0.7457, 0.7449, 0.7448, 0.7447, 0.7447, 0.7447, 0.7448");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.276, 0.277, 0.2804, 0.2845, 0.2879, 0.2912, 0.295, 0.2978, 0.3017, 0.3061",\
                 "0.2753, 0.2761, 0.2795, 0.2839, 0.287, 0.2905, 0.2939, 0.2964, 0.3013, 0.3043",\
                 "0.2801, 0.281, 0.2843, 0.2884, 0.2922, 0.2959, 0.2986, 0.3014, 0.3064, 0.3093",\
                 "0.2974, 0.298, 0.3014, 0.3052, 0.3087, 0.3114, 0.3141, 0.3183, 0.3211, 0.3266",\
                 "0.3298, 0.3304, 0.3332, 0.3362, 0.3399, 0.343, 0.3468, 0.3497, 0.355, 0.3565",\
                 "0.379, 0.3789, 0.38, 0.3848, 0.3876, 0.3898, 0.3922, 0.3979, 0.4, 0.4051",\
                 "0.4467, 0.4461, 0.4458, 0.4485, 0.4535, 0.4561, 0.4588, 0.4616, 0.4644, 0.4717",\
                 "0.5332, 0.532, 0.5317, 0.5324, 0.5351, 0.5414, 0.5441, 0.5466, 0.5476, 0.552",\
                 "0.6396, 0.6381, 0.6364, 0.6376, 0.6387, 0.6429, 0.6485, 0.6517, 0.6538, 0.6553",\
                 "0.7675, 0.7649, 0.7623, 0.763, 0.7645, 0.7657, 0.7702, 0.7791, 0.7794, 0.7842");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.153, 0.163, 0.2, 0.274, 0.37, 0.487, 0.623, 0.78, 0.956, 1.152");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.184, 0.193, 0.232, 0.298, 0.387, 0.497, 0.627, 0.776, 0.948, \
                  1.141");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.1231, 0.1515, 0.2222, 0.3206, 0.4498, 0.6196, 0.839, 1.114, 1.451, 1.851",\
                 "0.1314, 0.1597, 0.2303, 0.3286, 0.4579, 0.6277, 0.8471, 1.123, 1.459, 1.859",\
                 "0.1614, 0.1894, 0.2592, 0.357, 0.4862, 0.656, 0.8753, 1.151, 1.487, 1.887",\
                 "0.1912, 0.2221, 0.2932, 0.3908, 0.5196, 0.6893, 0.9087, 1.184, 1.52, 1.921",\
                 "0.2004, 0.2314, 0.3023, 0.3995, 0.5281, 0.6973, 0.9165, 1.192, 1.528, 1.929",\
                 "0.1893, 0.2206, 0.2914, 0.3881, 0.5163, 0.6855, 0.9044, 1.179, 1.515, 1.916",\
                 "0.1585, 0.1904, 0.2615, 0.3583, 0.4863, 0.6552, 0.8741, 1.149, 1.485, 1.885",\
                 "0.1072, 0.1397, 0.2115, 0.3084, 0.4364, 0.6054, 0.8244, 1.099, 1.435, 1.835",\
                 "0.0335, 0.0669, 0.1398, 0.2372, 0.3651, 0.5342, 0.7532, 1.028, 1.364, 1.764",\
                 "-0.0638, -0.0292, 0.0448, 0.1427, 0.271, 0.4401, 0.6592, 0.9344, 1.27, 1.67");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.1206, 0.151, 0.233, 0.3724, 0.5864, 0.8863, 1.28, 1.778, 2.386, 3.11",\
                 "0.1278, 0.1582, 0.2402, 0.3796, 0.5934, 0.8934, 1.288, 1.786, 2.392, 3.118",\
                 "0.1514, 0.1825, 0.2651, 0.4046, 0.6185, 0.9181, 1.312, 1.811, 2.418, 3.143",\
                 "0.1709, 0.2062, 0.2923, 0.433, 0.6469, 0.9464, 1.341, 1.839, 2.446, 3.171",\
                 "0.1756, 0.2175, 0.3103, 0.4526, 0.6671, 0.9668, 1.362, 1.858, 2.466, 3.188",\
                 "0.1613, 0.2113, 0.3155, 0.4619, 0.6769, 0.9771, 1.371, 1.868, 2.476, 3.199",\
                 "0.1266, 0.1849, 0.3038, 0.4573, 0.6756, 0.9763, 1.371, 1.868, 2.474, 3.199",\
                 "0.0698, 0.1367, 0.2725, 0.4353, 0.6586, 0.9633, 1.359, 1.856, 2.462, 3.185",\
                 "-0.0106, 0.0652, 0.2189, 0.3941, 0.6228, 0.9331, 1.333, 1.831, 2.438, 3.16",\
                 "-0.116, -0.0305, 0.1423, 0.3323, 0.5676, 0.8835, 1.29, 1.793, 2.4, 3.123");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.06226, 0.09102, 0.1658, 0.2808, 0.4599, 0.7223, 1.08, 1.534, 2.093, 2.756",\
                 "0.06208, 0.09092, 0.1659, 0.2814, 0.4604, 0.7232, 1.08, 1.535, 2.09, 2.756",\
                 "0.06128, 0.08938, 0.1644, 0.2806, 0.4602, 0.7229, 1.078, 1.535, 2.091, 2.759",\
                 "0.07064, 0.09698, 0.165, 0.2793, 0.4597, 0.7233, 1.079, 1.535, 2.09, 2.756",\
                 "0.074, 0.0978, 0.1649, 0.2792, 0.4576, 0.7206, 1.078, 1.535, 2.091, 2.759",\
                 "0.0752, 0.0986, 0.1644, 0.278, 0.4572, 0.7202, 1.076, 1.531, 2.091, 2.756",\
                 "0.0772, 0.1004, 0.1648, 0.2778, 0.4562, 0.7198, 1.076, 1.53, 2.087, 2.752",\
                 "0.0796, 0.1024, 0.1658, 0.278, 0.4572, 0.7204, 1.078, 1.531, 2.087, 2.75",\
                 "0.0834, 0.1052, 0.1674, 0.2786, 0.4566, 0.7194, 1.078, 1.532, 2.087, 2.752",\
                 "0.0876, 0.1086, 0.1698, 0.2796, 0.4572, 0.7204, 1.077, 1.533, 2.088, 2.751");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.0664, 0.1012, 0.2153, 0.445, 0.8146, 1.336, 2.022, 2.888, 3.945, 5.203",\
                 "0.06622, 0.1012, 0.2152, 0.445, 0.8149, 1.336, 2.025, 2.894, 3.952, 5.207",\
                 "0.06928, 0.1029, 0.216, 0.4452, 0.8148, 1.337, 2.022, 2.889, 3.946, 5.203",\
                 "0.0817, 0.1129, 0.2211, 0.4477, 0.8151, 1.337, 2.024, 2.894, 3.953, 5.205",\
                 "0.09894, 0.1301, 0.2298, 0.4498, 0.8166, 1.337, 2.025, 2.888, 3.944, 5.21",\
                 "0.1187, 0.1532, 0.2458, 0.4566, 0.819, 1.337, 2.024, 2.887, 3.949, 5.211",\
                 "0.1398, 0.1792, 0.2702, 0.4694, 0.8262, 1.339, 2.023, 2.886, 3.944, 5.206",\
                 "0.1628, 0.2068, 0.3, 0.488, 0.8408, 1.351, 2.027, 2.886, 3.947, 5.198",\
                 "0.1882, 0.236, 0.3346, 0.5098, 0.8598, 1.37, 2.042, 2.892, 3.941, 5.198",\
                 "0.216, 0.2662, 0.3734, 0.5386, 0.8774, 1.395, 2.066, 2.91, 3.949, 5.199");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.2543, 0.2833, 0.357, 0.4576, 0.5876, 0.7577, 0.9772, 1.253, 1.589, 1.989",\
                 "0.2617, 0.2906, 0.3644, 0.4649, 0.5951, 0.7652, 0.9846, 1.26, 1.596, 1.997",\
                 "0.2846, 0.3136, 0.3873, 0.4879, 0.618, 0.7881, 1.008, 1.283, 1.619, 2.019",\
                 "0.3041, 0.3329, 0.4066, 0.5072, 0.6373, 0.8075, 1.027, 1.302, 1.638, 2.039",\
                 "0.3119, 0.3407, 0.4142, 0.5149, 0.6454, 0.8155, 1.035, 1.31, 1.646, 2.047",\
                 "0.3044, 0.3333, 0.4072, 0.5081, 0.6384, 0.8086, 1.028, 1.303, 1.639, 2.04",\
                 "0.2795, 0.3083, 0.3825, 0.4837, 0.6142, 0.7845, 1.004, 1.279, 1.615, 2.016",\
                 "0.235, 0.264, 0.3384, 0.44, 0.5707, 0.7411, 0.9606, 1.236, 1.572, 1.972",\
                 "0.1696, 0.1984, 0.2731, 0.3752, 0.5063, 0.6767, 0.8964, 1.172, 1.508, 1.908",\
                 "0.0811, 0.1101, 0.1852, 0.2878, 0.419, 0.5896, 0.8091, 1.085, 1.421, 1.821");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.3132, 0.3447, 0.4287, 0.5698, 0.785, 1.086, 1.481, 1.979, 2.587, 3.311",\
                 "0.3217, 0.3532, 0.4371, 0.5783, 0.7936, 1.094, 1.489, 1.988, 2.595, 3.319",\
                 "0.3603, 0.3918, 0.4757, 0.617, 0.8322, 1.133, 1.528, 2.026, 2.634, 3.356",\
                 "0.432, 0.4635, 0.5475, 0.6885, 0.9036, 1.205, 1.6, 2.098, 2.705, 3.43",\
                 "0.5272, 0.5585, 0.6423, 0.7834, 0.9984, 1.299, 1.695, 2.191, 2.798, 3.522",\
                 "0.6452, 0.6767, 0.7606, 0.9016, 1.116, 1.417, 1.812, 2.31, 2.916, 3.641",\
                 "0.7852, 0.8165, 0.9006, 1.041, 1.256, 1.557, 1.952, 2.45, 3.057, 3.781",\
                 "0.9471, 0.9787, 1.063, 1.204, 1.419, 1.719, 2.114, 2.611, 3.218, 3.94",\
                 "1.132, 1.164, 1.248, 1.389, 1.604, 1.904, 2.299, 2.797, 3.403, 4.126",\
                 "1.341, 1.373, 1.458, 1.599, 1.814, 2.114, 2.509, 3.006, 3.613, 4.336");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.06672, 0.0966, 0.1722, 0.2844, 0.462, 0.7231, 1.08, 1.535, 2.091, 2.759",\
                 "0.06672, 0.09662, 0.1722, 0.2847, 0.4615, 0.7228, 1.078, 1.535, 2.091, 2.759",\
                 "0.06654, 0.09664, 0.1719, 0.2844, 0.4616, 0.7231, 1.08, 1.535, 2.09, 2.756",\
                 "0.06672, 0.09686, 0.1722, 0.2848, 0.4624, 0.7233, 1.078, 1.534, 2.092, 2.756",\
                 "0.06716, 0.09756, 0.1732, 0.2853, 0.4616, 0.7228, 1.078, 1.535, 2.091, 2.756",\
                 "0.0682, 0.0982, 0.1738, 0.2856, 0.462, 0.7228, 1.078, 1.534, 2.09, 2.756",\
                 "0.0694, 0.0996, 0.1756, 0.287, 0.4628, 0.7234, 1.079, 1.532, 2.089, 2.756",\
                 "0.0708, 0.1008, 0.1768, 0.2884, 0.4638, 0.7234, 1.078, 1.532, 2.089, 2.752",\
                 "0.0722, 0.1022, 0.1786, 0.2896, 0.4644, 0.7248, 1.08, 1.533, 2.089, 2.752",\
                 "0.0744, 0.1042, 0.1812, 0.2912, 0.4654, 0.7256, 1.08, 1.533, 2.091, 2.754");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.007266, 0.01439, 0.03939, 0.08714, 0.1615, 0.2659, 0.4033, 0.5763, 0.7875, 1.039");
          values("0.06836, 0.1024, 0.2155, 0.4451, 0.8149, 1.336, 2.023, 2.888, 3.945, 5.203",\
                 "0.06842, 0.1024, 0.2156, 0.445, 0.815, 1.338, 2.024, 2.892, 3.945, 5.205",\
                 "0.0688, 0.1027, 0.2156, 0.4452, 0.8146, 1.337, 2.026, 2.889, 3.943, 5.209",\
                 "0.06882, 0.1026, 0.2157, 0.4451, 0.8147, 1.338, 2.027, 2.894, 3.953, 5.205",\
                 "0.0689, 0.103, 0.216, 0.4454, 0.8148, 1.338, 2.027, 2.89, 3.95, 5.213",\
                 "0.0698, 0.104, 0.2164, 0.445, 0.8156, 1.336, 2.023, 2.891, 3.944, 5.201",\
                 "0.071, 0.1056, 0.2176, 0.4464, 0.8146, 1.336, 2.023, 2.89, 3.947, 5.2",\
                 "0.0722, 0.107, 0.2186, 0.4462, 0.8164, 1.335, 2.02, 2.889, 3.941, 5.198",\
                 "0.0736, 0.1084, 0.2204, 0.4466, 0.8158, 1.336, 2.021, 2.884, 3.939, 5.195",\
                 "0.0758, 0.1108, 0.2218, 0.4472, 0.8156, 1.336, 2.022, 2.885, 3.938, 5.201");
        }
      }
    }
  }

