/*
 * 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 : "0.01388695" ;
    }

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.00892 ;
      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.4528, 0.454, 0.4774, 0.5475, 0.6796, 0.8841, 1.168, 1.534, 1.988, \
                  2.534");
        }

        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.3041, 0.3044, 0.3213, 0.3704, 0.457, 0.5856, 0.7774, 1.038, \
                  1.368, 1.77");
        }

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

    pin(I) {
      capacitance : 0.004614 ;
      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.2352, 0.2351, 0.2474, 0.2861, 0.3574, 0.4653, 0.6143, 0.8053, \
                  1.042, 1.325");
        }

        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.08187, 0.08202, 0.09121, 0.1205, 0.1793, 0.2719, 0.4005, 0.5677, \
                  0.775, 1.025");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.006291 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.6666 ;
      max_transition : 3.4 ;
      min_capacitance : 0.007291 ;
      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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.4973, 0.4934, 0.4853, 0.4794, 0.4758, 0.473, 0.4714, 0.4697, 0.4688, 0.468",\
                 "0.4994, 0.4952, 0.4872, 0.4814, 0.4778, 0.4752, 0.4735, 0.472, 0.471, 0.4702",\
                 "0.5205, 0.5166, 0.5096, 0.5044, 0.5012, 0.499, 0.4972, 0.4961, 0.4952, 0.4945",\
                 "0.5691, 0.5664, 0.5613, 0.5581, 0.5563, 0.5553, 0.5543, 0.5535, 0.553, 0.5525",\
                 "0.6593, 0.6576, 0.6551, 0.654, 0.6532, 0.6528, 0.6524, 0.6521, 0.652, 0.6518",\
                 "0.7997, 0.7988, 0.798, 0.7973, 0.7973, 0.7971, 0.7969, 0.7968, 0.7968, 0.7967",\
                 "0.9916, 0.9912, 0.9906, 0.9898, 0.9898, 0.99, 0.9902, 0.9895, 0.9895, 0.9895",\
                 "1.235, 1.235, 1.234, 1.234, 1.234, 1.234, 1.234, 1.234, 1.234, 1.234",\
                 "1.532, 1.532, 1.532, 1.531, 1.531, 1.532, 1.532, 1.532, 1.532, 1.532",\
                 "1.885, 1.886, 1.886, 1.885, 1.885, 1.886, 1.886, 1.886, 1.886, 1.886");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.3465, 0.3427, 0.3382, 0.3368, 0.3361, 0.337, 0.339, 0.3408, 0.3459, 0.349",\
                 "0.3469, 0.3433, 0.3381, 0.3373, 0.3366, 0.3372, 0.339, 0.3414, 0.3453, 0.3485",\
                 "0.3638, 0.36, 0.3551, 0.3543, 0.3541, 0.3549, 0.3566, 0.3612, 0.364, 0.3672",\
                 "0.4184, 0.4156, 0.4127, 0.4116, 0.412, 0.4134, 0.416, 0.4189, 0.4223, 0.4249",\
                 "0.5301, 0.5282, 0.5246, 0.5267, 0.528, 0.5286, 0.5315, 0.5344, 0.5384, 0.5415",\
                 "0.7088, 0.7077, 0.7066, 0.7046, 0.7087, 0.7112, 0.7135, 0.7165, 0.7188, 0.7252",\
                 "0.9588, 0.9589, 0.9582, 0.9564, 0.9575, 0.962, 0.9665, 0.9695, 0.9751, 0.9749",\
                 "1.285, 1.285, 1.286, 1.285, 1.282, 1.285, 1.293, 1.298, 1.305, 1.304",\
                 "1.689, 1.69, 1.69, 1.691, 1.69, 1.69, 1.693, 1.703, 1.71, 1.715",\
                 "2.176, 2.177, 2.178, 2.179, 2.178, 2.176, 2.179, 2.184, 2.196, 2.206");
        }
      }

      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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.8578, 0.8474, 0.8286, 0.8158, 0.8079, 0.8034, 0.7998, 0.7978, 0.796, 0.7956",\
                 "0.8581, 0.8476, 0.8283, 0.8159, 0.8081, 0.8032, 0.8001, 0.7979, 0.7965, 0.795",\
                 "0.8691, 0.8585, 0.8393, 0.8265, 0.8189, 0.8141, 0.8105, 0.8084, 0.8069, 0.8056",\
                 "0.9096, 0.8986, 0.8788, 0.8654, 0.8575, 0.8524, 0.849, 0.8467, 0.8452, 0.8438",\
                 "0.9892, 0.978, 0.9566, 0.9419, 0.9328, 0.9273, 0.9235, 0.9211, 0.9195, 0.9182",\
                 "1.114, 1.102, 1.079, 1.061, 1.052, 1.046, 1.041, 1.039, 1.037, 1.035",\
                 "1.285, 1.272, 1.246, 1.227, 1.215, 1.208, 1.203, 1.2, 1.198, 1.196",\
                 "1.506, 1.491, 1.462, 1.44, 1.426, 1.417, 1.412, 1.408, 1.406, 1.404",\
                 "1.775, 1.759, 1.728, 1.702, 1.686, 1.676, 1.67, 1.665, 1.662, 1.66",\
                 "2.099, 2.083, 2.048, 2.019, 2, 1.988, 1.98, 1.975, 1.971, 1.968");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.7414, 0.7325, 0.7211, 0.7151, 0.7157, 0.7175, 0.7214, 0.7271, 0.7311, 0.7342",\
                 "0.7412, 0.732, 0.72, 0.7151, 0.7155, 0.7175, 0.7209, 0.726, 0.73, 0.7342",\
                 "0.7545, 0.7454, 0.7332, 0.7282, 0.7285, 0.7307, 0.7341, 0.7376, 0.7421, 0.7469",\
                 "0.8008, 0.7916, 0.7789, 0.7737, 0.7734, 0.7752, 0.7792, 0.7843, 0.7883, 0.7925",\
                 "0.8925, 0.8832, 0.8693, 0.8616, 0.8598, 0.8616, 0.8655, 0.869, 0.8736, 0.8778",\
                 "1.034, 1.024, 1.008, 0.9997, 0.9958, 0.9969, 1, 1.002, 1.007, 1.011",\
                 "1.228, 1.216, 1.197, 1.185, 1.182, 1.18, 1.181, 1.185, 1.189, 1.192",\
                 "1.477, 1.464, 1.443, 1.426, 1.419, 1.419, 1.42, 1.421, 1.424, 1.426",\
                 "1.781, 1.768, 1.744, 1.724, 1.712, 1.71, 1.713, 1.715, 1.717, 1.72",\
                 "2.146, 2.132, 2.105, 2.083, 2.066, 2.057, 2.057, 2.063, 2.069, 2.07");
        }
      }

      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.175, 0.181, 0.204, 0.252, 0.328, 0.42, 0.526, 0.645, 0.779, \
                  0.928");
        }

        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.208, 0.213, 0.238, 0.286, 0.352, 0.433, 0.527, 0.635, 0.758, \
                  0.896");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.1216, 0.1417, 0.1948, 0.2737, 0.3775, 0.5092, 0.6747, 0.8798, 1.129, 1.426",\
                 "0.1259, 0.1459, 0.1989, 0.2777, 0.3815, 0.5131, 0.6787, 0.8838, 1.133, 1.43",\
                 "0.1425, 0.1623, 0.2151, 0.2938, 0.3975, 0.5291, 0.6946, 0.8998, 1.149, 1.446",\
                 "0.1629, 0.1841, 0.2384, 0.3174, 0.4211, 0.5528, 0.7184, 0.9237, 1.173, 1.47",\
                 "0.1712, 0.1943, 0.2524, 0.3334, 0.4372, 0.5688, 0.7344, 0.9396, 1.189, 1.486",\
                 "0.1653, 0.1903, 0.2506, 0.3319, 0.4355, 0.5666, 0.7317, 0.9368, 1.186, 1.483",\
                 "0.1455, 0.1725, 0.2345, 0.3165, 0.4201, 0.5512, 0.7161, 0.9208, 1.17, 1.467",\
                 "0.1097, 0.1391, 0.2039, 0.2868, 0.3909, 0.522, 0.6871, 0.8918, 1.141, 1.437",\
                 "0.0581, 0.0902, 0.1582, 0.2426, 0.3472, 0.4785, 0.6436, 0.8485, 1.098, 1.394",\
                 "-0.0115, 0.0236, 0.096, 0.1823, 0.2878, 0.4196, 0.5848, 0.7898, 1.039, 1.336");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.1228, 0.1449, 0.2039, 0.296, 0.4293, 0.613, 0.8541, 1.159, 1.529, 1.972",\
                 "0.126, 0.1481, 0.207, 0.2994, 0.4325, 0.6161, 0.8575, 1.162, 1.532, 1.976",\
                 "0.1379, 0.1604, 0.2197, 0.3122, 0.4453, 0.6289, 0.8705, 1.174, 1.546, 1.989",\
                 "0.1482, 0.1735, 0.2367, 0.3308, 0.4643, 0.6483, 0.8896, 1.194, 1.564, 2.008",\
                 "0.1462, 0.176, 0.2471, 0.3452, 0.4804, 0.6646, 0.906, 1.21, 1.581, 2.024",\
                 "0.1268, 0.1626, 0.2454, 0.3512, 0.49, 0.6755, 0.9172, 1.221, 1.593, 2.034",\
                 "0.08741, 0.1309, 0.2276, 0.3446, 0.4899, 0.6793, 0.9223, 1.227, 1.597, 2.04",\
                 "0.0253, 0.0786, 0.1915, 0.3233, 0.4765, 0.6717, 0.9196, 1.226, 1.597, 2.039",\
                 "-0.0618, 0.0031, 0.1354, 0.2851, 0.4487, 0.6501, 0.9042, 1.216, 1.59, 2.033",\
                 "-0.1774, -0.0981, 0.0576, 0.2274, 0.4047, 0.6135, 0.8741, 1.193, 1.573, 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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.07096, 0.08944, 0.1473, 0.2446, 0.3843, 0.5792, 0.8443, 1.186, 1.607, 2.114",\
                 "0.07062, 0.08902, 0.1468, 0.2444, 0.3843, 0.5792, 0.8441, 1.186, 1.608, 2.114",\
                 "0.06914, 0.08796, 0.1462, 0.2439, 0.3836, 0.5791, 0.8438, 1.184, 1.608, 2.115",\
                 "0.07418, 0.09216, 0.1474, 0.2437, 0.3826, 0.5786, 0.8435, 1.186, 1.609, 2.114",\
                 "0.08232, 0.1, 0.1552, 0.2468, 0.3833, 0.5783, 0.8432, 1.184, 1.608, 2.114",\
                 "0.09098, 0.1071, 0.1581, 0.2472, 0.382, 0.5763, 0.8416, 1.183, 1.609, 2.113",\
                 "0.1005, 0.1152, 0.1614, 0.2484, 0.3826, 0.5758, 0.8402, 1.182, 1.605, 2.113",\
                 "0.1116, 0.1246, 0.166, 0.2502, 0.3828, 0.5762, 0.8412, 1.182, 1.603, 2.109",\
                 "0.124, 0.136, 0.1724, 0.2534, 0.385, 0.5784, 0.8406, 1.182, 1.604, 2.11",\
                 "0.1392, 0.1486, 0.1802, 0.258, 0.3872, 0.5786, 0.8418, 1.183, 1.605, 2.11");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.07848, 0.1019, 0.1761, 0.3184, 0.5498, 0.8844, 1.326, 1.887, 2.567, 3.378",\
                 "0.07876, 0.102, 0.1762, 0.3185, 0.55, 0.8833, 1.327, 1.885, 2.566, 3.385",\
                 "0.07984, 0.1032, 0.1767, 0.3186, 0.5498, 0.8835, 1.326, 1.885, 2.567, 3.385",\
                 "0.0886, 0.112, 0.1826, 0.321, 0.5504, 0.8841, 1.326, 1.884, 2.567, 3.378",\
                 "0.1046, 0.1286, 0.1963, 0.3289, 0.5548, 0.8846, 1.326, 1.884, 2.566, 3.384",\
                 "0.1288, 0.1519, 0.2192, 0.3439, 0.5626, 0.8888, 1.329, 1.887, 2.566, 3.379",\
                 "0.1589, 0.1808, 0.2493, 0.3668, 0.579, 0.8998, 1.333, 1.889, 2.568, 3.38",\
                 "0.1988, 0.2184, 0.2856, 0.3984, 0.6008, 0.9206, 1.349, 1.895, 2.573, 3.379",\
                 "0.2474, 0.2656, 0.3276, 0.4388, 0.6282, 0.9438, 1.374, 1.916, 2.583, 3.384",\
                 "0.303, 0.3212, 0.3762, 0.4862, 0.6636, 0.9716, 1.404, 1.948, 2.609, 3.402");
        }
      }

      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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.2616, 0.2806, 0.3329, 0.4119, 0.5161, 0.648, 0.8135, 1.019, 1.268, 1.565",\
                 "0.2649, 0.2838, 0.3363, 0.4152, 0.5194, 0.6513, 0.8168, 1.022, 1.271, 1.568",\
                 "0.2778, 0.2967, 0.3491, 0.4281, 0.5323, 0.6642, 0.8297, 1.035, 1.284, 1.581",\
                 "0.2938, 0.3127, 0.365, 0.4439, 0.5481, 0.68, 0.8454, 1.051, 1.3, 1.597",\
                 "0.3028, 0.3216, 0.3739, 0.453, 0.557, 0.6889, 0.8544, 1.059, 1.309, 1.606",\
                 "0.3019, 0.3208, 0.373, 0.452, 0.5563, 0.6882, 0.8538, 1.059, 1.308, 1.605",\
                 "0.2889, 0.3078, 0.36, 0.439, 0.5435, 0.6755, 0.8412, 1.046, 1.295, 1.592",\
                 "0.2626, 0.2815, 0.3339, 0.4129, 0.5176, 0.6494, 0.8152, 1.02, 1.27, 1.566",\
                 "0.2212, 0.2404, 0.293, 0.3722, 0.477, 0.6094, 0.775, 0.98, 1.229, 1.526",\
                 "0.1652, 0.1844, 0.2376, 0.3173, 0.4223, 0.5548, 0.7205, 0.9256, 1.175, 1.471");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.3259, 0.3465, 0.4036, 0.4954, 0.6287, 0.8128, 1.054, 1.358, 1.73, 2.172",\
                 "0.3309, 0.3512, 0.4085, 0.5005, 0.6337, 0.8176, 1.059, 1.363, 1.735, 2.178",\
                 "0.3545, 0.375, 0.4321, 0.5241, 0.6573, 0.8412, 1.083, 1.387, 1.759, 2.202",\
                 "0.4033, 0.4236, 0.4809, 0.5728, 0.7058, 0.8899, 1.132, 1.435, 1.807, 2.249",\
                 "0.4738, 0.4943, 0.5512, 0.6428, 0.7759, 0.9597, 1.201, 1.506, 1.877, 2.32",\
                 "0.5619, 0.582, 0.6389, 0.7301, 0.8631, 1.047, 1.288, 1.593, 1.964, 2.407",\
                 "0.6653, 0.6857, 0.7427, 0.8341, 0.9666, 1.15, 1.391, 1.695, 2.067, 2.51",\
                 "0.7836, 0.8045, 0.8616, 0.9528, 1.085, 1.269, 1.509, 1.813, 2.184, 2.627",\
                 "0.9181, 0.9392, 0.9971, 1.089, 1.221, 1.404, 1.645, 1.948, 2.319, 2.761",\
                 "1.069, 1.091, 1.149, 1.242, 1.374, 1.557, 1.798, 2.101, 2.471, 2.913");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.0734, 0.09352, 0.152, 0.248, 0.3871, 0.5806, 0.8441, 1.187, 1.608, 2.112",\
                 "0.07288, 0.09368, 0.1515, 0.2482, 0.3871, 0.5806, 0.8443, 1.187, 1.608, 2.114",\
                 "0.07304, 0.0935, 0.1517, 0.2481, 0.3869, 0.5806, 0.8439, 1.185, 1.608, 2.113",\
                 "0.07322, 0.09356, 0.1519, 0.2484, 0.3874, 0.5809, 0.8446, 1.186, 1.609, 2.115",\
                 "0.07436, 0.09472, 0.1525, 0.249, 0.3873, 0.5808, 0.8447, 1.186, 1.607, 2.114",\
                 "0.07554, 0.09596, 0.1539, 0.2501, 0.3886, 0.5814, 0.8448, 1.185, 1.609, 2.113",\
                 "0.0772, 0.0974, 0.1554, 0.2514, 0.3892, 0.5824, 0.845, 1.185, 1.606, 2.115",\
                 "0.0794, 0.0998, 0.1574, 0.2532, 0.391, 0.5844, 0.8452, 1.185, 1.606, 2.113",\
                 "0.0814, 0.1022, 0.1596, 0.2556, 0.3926, 0.5844, 0.846, 1.187, 1.607, 2.112",\
                 "0.0852, 0.1058, 0.163, 0.258, 0.3946, 0.5866, 0.8472, 1.188, 1.608, 2.113");
        }

        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.007291, 0.01184, 0.02782, 0.05832, 0.1058, 0.1725, 0.2603, 0.3708, 0.5057, 0.6666");
          values("0.07926, 0.1026, 0.1775, 0.3193, 0.5499, 0.8838, 1.326, 1.885, 2.566, 3.38",\
                 "0.07888, 0.1029, 0.1772, 0.319, 0.5501, 0.8832, 1.326, 1.884, 2.566, 3.384",\
                 "0.0789, 0.1029, 0.1773, 0.3192, 0.5501, 0.8833, 1.326, 1.886, 2.567, 3.384",\
                 "0.07898, 0.1029, 0.1775, 0.3193, 0.5499, 0.8842, 1.326, 1.885, 2.566, 3.38",\
                 "0.07902, 0.1029, 0.1776, 0.3195, 0.5501, 0.8838, 1.327, 1.885, 2.566, 3.385",\
                 "0.0802, 0.1042, 0.1786, 0.3204, 0.5502, 0.8838, 1.326, 1.884, 2.566, 3.384",\
                 "0.0826, 0.1058, 0.18, 0.321, 0.551, 0.8858, 1.326, 1.887, 2.565, 3.385",\
                 "0.0846, 0.1088, 0.1822, 0.3228, 0.552, 0.884, 1.327, 1.887, 2.565, 3.383",\
                 "0.088, 0.1116, 0.1858, 0.3248, 0.5524, 0.886, 1.327, 1.885, 2.567, 3.383",\
                 "0.0902, 0.115, 0.1886, 0.3278, 0.5542, 0.8854, 1.328, 1.885, 2.567, 3.38");
        }
      }
    }
  }

