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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.282, 0.2835, 0.2967, 0.3344, 0.4047, 0.5137, 0.6641, 0.8584, \
                  1.098, 1.386");
        }

        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.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.2057, 0.206, 0.2146, 0.2402, 0.2857, 0.3524, 0.4512, 0.5863, \
                  0.7576, 0.9662");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.1245, 0.125, 0.1331, 0.1552, 0.1944, 0.2531, 0.3328, 0.4348, \
                  0.5599, 0.7101");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.02515, 0.02546, 0.0311, 0.0483, 0.08134, 0.1321, 0.2016, 0.2912, \
                  0.402, 0.5349");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.002584 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.211 ;
      max_transition : 2.6 ;
      min_capacitance : 0.003584 ;
      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.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.2431, 0.2412, 0.2373, 0.2334, 0.2307, 0.2286, 0.2272, 0.2261, 0.2253, 0.2247",\
                 "0.2443, 0.2424, 0.2387, 0.235, 0.2322, 0.2304, 0.2288, 0.2277, 0.2269, 0.2262",\
                 "0.256, 0.2544, 0.2507, 0.2474, 0.245, 0.2433, 0.242, 0.241, 0.2402, 0.2396",\
                 "0.2841, 0.2829, 0.2803, 0.278, 0.2765, 0.2754, 0.2746, 0.274, 0.2734, 0.2731",\
                 "0.3331, 0.3324, 0.3312, 0.3302, 0.3295, 0.3292, 0.3288, 0.3286, 0.3283, 0.3281",\
                 "0.4097, 0.4092, 0.4087, 0.4083, 0.4083, 0.4082, 0.4081, 0.408, 0.408, 0.408",\
                 "0.5146, 0.5142, 0.514, 0.5138, 0.5139, 0.5141, 0.5141, 0.514, 0.514, 0.514",\
                 "0.6473, 0.6471, 0.6472, 0.6469, 0.647, 0.647, 0.647, 0.6471, 0.6471, 0.6471",\
                 "0.8089, 0.8089, 0.8087, 0.8086, 0.8087, 0.8087, 0.8087, 0.8088, 0.8088, 0.8089",\
                 "1, 1, 1, 0.9998, 0.9998, 0.9999, 1, 0.9999, 1, 1");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.1263, 0.126, 0.1256, 0.1253, 0.1256, 0.1253, 0.1256, 0.1271, 0.129, 0.1304",\
                 "0.1267, 0.1264, 0.1261, 0.126, 0.126, 0.1257, 0.1259, 0.1274, 0.1296, 0.131",\
                 "0.1363, 0.1359, 0.1354, 0.1356, 0.1356, 0.1358, 0.136, 0.1363, 0.1377, 0.1414",\
                 "0.1678, 0.1679, 0.1677, 0.1674, 0.1678, 0.1681, 0.1683, 0.1685, 0.1701, 0.1728",\
                 "0.23, 0.2301, 0.2299, 0.231, 0.2308, 0.2303, 0.2315, 0.2323, 0.2342, 0.2349",\
                 "0.3275, 0.3275, 0.3269, 0.327, 0.329, 0.329, 0.3287, 0.3291, 0.3321, 0.3328",\
                 "0.4616, 0.4617, 0.4616, 0.4615, 0.4616, 0.4636, 0.4642, 0.4629, 0.465, 0.467",\
                 "0.6356, 0.6357, 0.6352, 0.6351, 0.6354, 0.6363, 0.6385, 0.6391, 0.6403, 0.6397",\
                 "0.8503, 0.8503, 0.8506, 0.8506, 0.851, 0.8508, 0.8519, 0.855, 0.8559, 0.8575",\
                 "1.109, 1.109, 1.109, 1.109, 1.109, 1.109, 1.109, 1.111, 1.117, 1.117");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.3999, 0.3955, 0.3858, 0.377, 0.3706, 0.3659, 0.3626, 0.3604, 0.3587, 0.3574",\
                 "0.4002, 0.3958, 0.3862, 0.377, 0.3707, 0.3661, 0.3629, 0.3606, 0.3589, 0.3576",\
                 "0.4061, 0.4018, 0.3921, 0.3831, 0.3766, 0.372, 0.3688, 0.3665, 0.3648, 0.3636",\
                 "0.4254, 0.421, 0.4112, 0.4023, 0.3956, 0.391, 0.3879, 0.3856, 0.3838, 0.3826",\
                 "0.463, 0.4585, 0.4486, 0.4394, 0.4327, 0.4283, 0.4251, 0.4227, 0.4208, 0.4195",\
                 "0.5207, 0.5163, 0.5061, 0.4966, 0.4896, 0.4847, 0.4813, 0.4788, 0.477, 0.4757",\
                 "0.5995, 0.5955, 0.585, 0.5749, 0.5675, 0.5625, 0.5588, 0.5562, 0.5541, 0.5529",\
                 "0.701, 0.6961, 0.6857, 0.6749, 0.6671, 0.6619, 0.658, 0.6552, 0.6531, 0.6517",\
                 "0.8255, 0.8207, 0.8093, 0.7982, 0.7898, 0.7841, 0.78, 0.777, 0.7749, 0.7733",\
                 "0.9743, 0.9695, 0.9572, 0.9454, 0.9366, 0.9304, 0.9261, 0.9228, 0.9206, 0.919");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.3277, 0.3256, 0.3218, 0.3185, 0.317, 0.3169, 0.317, 0.3175, 0.3208, 0.322",\
                 "0.3286, 0.3261, 0.3223, 0.3189, 0.3176, 0.3173, 0.3171, 0.3186, 0.3212, 0.3226",\
                 "0.3367, 0.3345, 0.3308, 0.3272, 0.326, 0.3254, 0.3255, 0.3272, 0.3292, 0.3319",\
                 "0.3612, 0.359, 0.3551, 0.3514, 0.3499, 0.3495, 0.3493, 0.3509, 0.3531, 0.3545",\
                 "0.4054, 0.4032, 0.399, 0.3952, 0.3934, 0.3926, 0.3927, 0.3931, 0.396, 0.3968",\
                 "0.4724, 0.4702, 0.4656, 0.4612, 0.4589, 0.4579, 0.4577, 0.4578, 0.4605, 0.4617",\
                 "0.5633, 0.5606, 0.5549, 0.5505, 0.5486, 0.5465, 0.545, 0.5455, 0.548, 0.5492",\
                 "0.6785, 0.6759, 0.6699, 0.6637, 0.6607, 0.6599, 0.6586, 0.6573, 0.6592, 0.6603",\
                 "0.8195, 0.8168, 0.8101, 0.8032, 0.7984, 0.7975, 0.7975, 0.7973, 0.7972, 0.7967",\
                 "0.9883, 0.9853, 0.9786, 0.9705, 0.9655, 0.9613, 0.9616, 0.9638, 0.9633, 0.9628");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.1132, 0.1176, 0.1349, 0.1715, 0.223, 0.2846, 0.3544, 0.4331, \
                  0.52, 0.6152");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.163, 0.167, 0.1859, 0.2228, 0.2747, 0.3372, 0.4091, 0.491, 0.5832, \
                  0.6852");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.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.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.1175, 0.1305, 0.167, 0.2225, 0.2958, 0.3878, 0.5021, 0.6428, 0.8135, 1.017",\
                 "0.121, 0.1338, 0.1702, 0.2257, 0.2991, 0.391, 0.5053, 0.646, 0.8166, 1.02",\
                 "0.1347, 0.1474, 0.1836, 0.2389, 0.3122, 0.4041, 0.5183, 0.6591, 0.8297, 1.033",\
                 "0.1557, 0.1685, 0.2046, 0.2597, 0.3327, 0.4245, 0.5388, 0.6796, 0.8503, 1.053",\
                 "0.1703, 0.1841, 0.2219, 0.278, 0.3506, 0.4423, 0.5565, 0.6974, 0.8681, 1.071",\
                 "0.1766, 0.1909, 0.2293, 0.2847, 0.3566, 0.4478, 0.5617, 0.7023, 0.8731, 1.076",\
                 "0.1738, 0.1886, 0.2273, 0.2822, 0.3533, 0.4435, 0.5568, 0.6971, 0.8676, 1.071",\
                 "0.1623, 0.1776, 0.2167, 0.2716, 0.3422, 0.4318, 0.5448, 0.685, 0.8554, 1.058",\
                 "0.1394, 0.1556, 0.1958, 0.2511, 0.3217, 0.4113, 0.5241, 0.6642, 0.8347, 1.038",\
                 "0.1067, 0.1234, 0.1649, 0.2207, 0.2915, 0.381, 0.4937, 0.6338, 0.8043, 1.007");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.1051, 0.1191, 0.1614, 0.2329, 0.339, 0.4865, 0.6806, 0.9253, 1.225, 1.581",\
                 "0.1077, 0.1217, 0.164, 0.2354, 0.3416, 0.4891, 0.6831, 0.9279, 1.227, 1.583",\
                 "0.118, 0.132, 0.1745, 0.246, 0.3521, 0.4998, 0.6939, 0.9385, 1.238, 1.594",\
                 "0.1306, 0.1457, 0.1896, 0.2618, 0.3681, 0.5157, 0.7098, 0.9547, 1.254, 1.61",\
                 "0.1383, 0.1554, 0.2023, 0.2762, 0.3833, 0.531, 0.7252, 0.9702, 1.268, 1.625",\
                 "0.1369, 0.1569, 0.2094, 0.287, 0.3955, 0.5439, 0.7381, 0.9826, 1.281, 1.637",\
                 "0.1249, 0.1483, 0.2081, 0.2911, 0.4032, 0.5532, 0.7478, 0.9925, 1.291, 1.647",\
                 "0.1015, 0.1287, 0.1973, 0.2872, 0.4036, 0.5575, 0.7544, 0.9993, 1.298, 1.654",\
                 "0.0653, 0.097, 0.1746, 0.2739, 0.3955, 0.5535, 0.7548, 1.003, 1.302, 1.658",\
                 "0.0162, 0.0523, 0.1397, 0.2498, 0.3777, 0.5401, 0.7461, 0.9989, 1.301, 1.657");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.0661, 0.07844, 0.1166, 0.1811, 0.2729, 0.3989, 0.571, 0.7931, 1.071, 1.405",\
                 "0.06562, 0.07802, 0.1164, 0.1812, 0.2731, 0.3995, 0.5703, 0.7926, 1.07, 1.402",\
                 "0.06408, 0.07656, 0.1153, 0.1804, 0.2724, 0.3991, 0.57, 0.7927, 1.069, 1.404",\
                 "0.06416, 0.07594, 0.1135, 0.1786, 0.2711, 0.3981, 0.5695, 0.7926, 1.069, 1.405",\
                 "0.06846, 0.08026, 0.1173, 0.1786, 0.2691, 0.3974, 0.5699, 0.7925, 1.071, 1.403",\
                 "0.07196, 0.08284, 0.1168, 0.1769, 0.2667, 0.3942, 0.5669, 0.7916, 1.071, 1.403",\
                 "0.07564, 0.0856, 0.1168, 0.175, 0.2636, 0.3915, 0.5646, 0.7886, 1.067, 1.403",\
                 "0.0794, 0.0882, 0.118, 0.1746, 0.2624, 0.3894, 0.5632, 0.7878, 1.066, 1.399",\
                 "0.0854, 0.093, 0.12, 0.175, 0.2622, 0.3886, 0.563, 0.7878, 1.066, 1.399",\
                 "0.09, 0.0984, 0.123, 0.176, 0.2632, 0.3886, 0.5634, 0.7878, 1.066, 1.399");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.06874, 0.08526, 0.1425, 0.2519, 0.4292, 0.6831, 1.019, 1.444, 1.965, 2.585",\
                 "0.06868, 0.08524, 0.1425, 0.2521, 0.4292, 0.6831, 1.019, 1.444, 1.965, 2.584",\
                 "0.06944, 0.0859, 0.1429, 0.2521, 0.4294, 0.6837, 1.02, 1.444, 1.965, 2.584",\
                 "0.07424, 0.09042, 0.1456, 0.2533, 0.4294, 0.6832, 1.019, 1.445, 1.965, 2.584",\
                 "0.08528, 0.1002, 0.152, 0.2572, 0.431, 0.6833, 1.021, 1.446, 1.961, 2.58",\
                 "0.1012, 0.1155, 0.1647, 0.2647, 0.4347, 0.6853, 1.02, 1.444, 1.96, 2.579",\
                 "0.1187, 0.1345, 0.1823, 0.2776, 0.4449, 0.6906, 1.021, 1.446, 1.961, 2.578",\
                 "0.1406, 0.156, 0.2038, 0.2942, 0.4584, 0.703, 1.029, 1.447, 1.962, 2.577",\
                 "0.1628, 0.178, 0.2292, 0.315, 0.4734, 0.7196, 1.046, 1.456, 1.965, 2.58",\
                 "0.189, 0.2054, 0.2564, 0.3414, 0.492, 0.737, 1.067, 1.478, 1.979, 2.583");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.2459, 0.2586, 0.2952, 0.3509, 0.4245, 0.5166, 0.6308, 0.7712, 0.9416, 1.144",\
                 "0.2487, 0.2614, 0.2979, 0.3537, 0.4273, 0.5194, 0.6336, 0.7741, 0.9444, 1.147",\
                 "0.259, 0.2717, 0.3083, 0.3642, 0.4377, 0.5297, 0.6439, 0.7844, 0.9547, 1.158",\
                 "0.2715, 0.2843, 0.3208, 0.3766, 0.4501, 0.5421, 0.6563, 0.7968, 0.9671, 1.17",\
                 "0.2806, 0.2932, 0.3299, 0.3856, 0.4592, 0.5512, 0.6654, 0.8059, 0.9763, 1.179",\
                 "0.2842, 0.2969, 0.3336, 0.3893, 0.4629, 0.555, 0.6691, 0.8096, 0.9799, 1.183",\
                 "0.2801, 0.2933, 0.33, 0.3857, 0.4594, 0.5515, 0.6657, 0.8061, 0.9764, 1.179",\
                 "0.2677, 0.2805, 0.3178, 0.3735, 0.4474, 0.5396, 0.6538, 0.7943, 0.9646, 1.167",\
                 "0.2461, 0.259, 0.2958, 0.3519, 0.4258, 0.5181, 0.6324, 0.7729, 0.9431, 1.146",\
                 "0.2141, 0.2271, 0.2636, 0.3198, 0.3939, 0.4863, 0.6006, 0.741, 0.9113, 1.114");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.2664, 0.2795, 0.3204, 0.3907, 0.4962, 0.6437, 0.8379, 1.083, 1.381, 1.738",\
                 "0.2706, 0.2836, 0.3246, 0.3949, 0.5004, 0.6479, 0.8421, 1.087, 1.386, 1.742",\
                 "0.2889, 0.3019, 0.343, 0.4132, 0.5188, 0.6662, 0.8602, 1.105, 1.404, 1.76",\
                 "0.3251, 0.3382, 0.379, 0.4492, 0.5547, 0.7022, 0.8963, 1.141, 1.44, 1.796",\
                 "0.3755, 0.3886, 0.4292, 0.4994, 0.6047, 0.7519, 0.946, 1.191, 1.49, 1.846",\
                 "0.4378, 0.4508, 0.4914, 0.5613, 0.6665, 0.8136, 1.008, 1.252, 1.55, 1.907",\
                 "0.5103, 0.5234, 0.5639, 0.6337, 0.7386, 0.8853, 1.079, 1.323, 1.623, 1.978",\
                 "0.5937, 0.6067, 0.6472, 0.7169, 0.8214, 0.9681, 1.161, 1.406, 1.704, 2.06",\
                 "0.6873, 0.7005, 0.7407, 0.8103, 0.9146, 1.061, 1.254, 1.498, 1.796, 2.152",\
                 "0.7925, 0.8057, 0.8463, 0.9153, 1.019, 1.166, 1.359, 1.603, 1.9, 2.256");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.07566, 0.0883, 0.1256, 0.1879, 0.2782, 0.4026, 0.572, 0.7935, 1.071, 1.404",\
                 "0.07566, 0.08832, 0.1256, 0.188, 0.278, 0.402, 0.5724, 0.7937, 1.07, 1.403",\
                 "0.07586, 0.08842, 0.1254, 0.1878, 0.2782, 0.4026, 0.5722, 0.7938, 1.071, 1.403",\
                 "0.07578, 0.0882, 0.1255, 0.1879, 0.2781, 0.4025, 0.5723, 0.7937, 1.071, 1.402",\
                 "0.07574, 0.08862, 0.1255, 0.1882, 0.2782, 0.4024, 0.5724, 0.7933, 1.071, 1.403",\
                 "0.07652, 0.08948, 0.1263, 0.1886, 0.2782, 0.4021, 0.5723, 0.793, 1.069, 1.405",\
                 "0.07768, 0.09014, 0.1275, 0.1897, 0.2794, 0.403, 0.5718, 0.7928, 1.07, 1.403",\
                 "0.0782, 0.091, 0.1284, 0.1906, 0.28, 0.4038, 0.573, 0.793, 1.069, 1.402",\
                 "0.0796, 0.0922, 0.1296, 0.1916, 0.281, 0.4048, 0.5738, 0.794, 1.07, 1.402",\
                 "0.0802, 0.0936, 0.1308, 0.1928, 0.2822, 0.4052, 0.5744, 0.7942, 1.069, 1.403");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003584, 0.005016, 0.01004, 0.01964, 0.03459, 0.05556, 0.08317, 0.1179, 0.1604, 0.211");
          values("0.07116, 0.0877, 0.1443, 0.2531, 0.4296, 0.6846, 1.021, 1.446, 1.961, 2.579",\
                 "0.07116, 0.08724, 0.1443, 0.253, 0.4298, 0.6839, 1.021, 1.444, 1.965, 2.584",\
                 "0.0709, 0.08752, 0.1443, 0.253, 0.4297, 0.683, 1.019, 1.444, 1.964, 2.581",\
                 "0.0709, 0.08728, 0.1443, 0.2528, 0.4296, 0.6839, 1.02, 1.444, 1.965, 2.584",\
                 "0.07082, 0.08728, 0.1445, 0.2531, 0.4295, 0.684, 1.021, 1.445, 1.965, 2.585",\
                 "0.07146, 0.08784, 0.1446, 0.2535, 0.4298, 0.6838, 1.021, 1.446, 1.961, 2.58",\
                 "0.0726, 0.0888, 0.145, 0.254, 0.4306, 0.6832, 1.02, 1.443, 1.964, 2.583",\
                 "0.0728, 0.0896, 0.146, 0.2544, 0.43, 0.6832, 1.019, 1.443, 1.962, 2.583",\
                 "0.0736, 0.0898, 0.1464, 0.2544, 0.4302, 0.6846, 1.019, 1.443, 1.96, 2.575",\
                 "0.0748, 0.091, 0.1476, 0.255, 0.4302, 0.6844, 1.02, 1.443, 1.959, 2.579");
        }
      }
    }
  }

