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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "3.02832e-05" ;
    }

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.03019, 0.03, 0.02959, 0.02934, 0.02933, 0.02957, 0.0301, 0.03093, \
                 0.03206, 0.03352");
        }

        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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.02081, 0.02067, 0.02043, 0.02037, 0.02046, 0.02066, 0.02099, \
                 0.02148, 0.02212, 0.02295");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.01325, 0.01309, 0.01286, 0.01278, 0.01283, 0.01303, 0.01336, \
                 0.01384, 0.01447, 0.01527");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.00274, 0.002684, 0.002561, 0.002448, 0.002441, 0.002569, 0.002841, \
                 0.00326, 0.003827, 0.004564");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.003035 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.1873 ;
      max_transition : 12 ;
      min_capacitance : 0.004035 ;
      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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.02308, 0.02307, 0.02307, 0.02306, 0.02305, 0.02305, 0.02306, 0.02306, 0.02306, 0.02306",\
                 "0.02312, 0.02311, 0.02311, 0.02311, 0.0231, 0.0231, 0.0231, 0.02311, 0.02311, 0.02311",\
                 "0.02354, 0.02353, 0.02352, 0.02352, 0.02351, 0.02351, 0.02351, 0.02352, 0.02352, 0.02352",\
                 "0.024, 0.02401, 0.02398, 0.02398, 0.02398, 0.02398, 0.02399, 0.02397, 0.02399, 0.02399",\
                 "0.02446, 0.02448, 0.02447, 0.02446, 0.02446, 0.02446, 0.02446, 0.02447, 0.02447, 0.02447",\
                 "0.02506, 0.02505, 0.02505, 0.02504, 0.02504, 0.02503, 0.02504, 0.02504, 0.02504, 0.02504",\
                 "0.02581, 0.02581, 0.02581, 0.0258, 0.0258, 0.0258, 0.02581, 0.02581, 0.02581, 0.02581",\
                 "0.02678, 0.02679, 0.02679, 0.02677, 0.02677, 0.02677, 0.02677, 0.02678, 0.02678, 0.02678",\
                 "0.02796, 0.02796, 0.02795, 0.02795, 0.02794, 0.02794, 0.02794, 0.02795, 0.02795, 0.02795",\
                 "0.02938, 0.02937, 0.02938, 0.02936, 0.02936, 0.02936, 0.02936, 0.02936, 0.02937, 0.02937");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.01512, 0.01512, 0.01512, 0.01513, 0.01519, 0.01522, 0.01532, 0.01541, 0.01599, 0.01959",\
                 "0.01504, 0.01503, 0.01503, 0.01505, 0.0151, 0.01513, 0.01529, 0.01532, 0.0159, 0.01961",\
                 "0.01482, 0.01483, 0.01481, 0.01481, 0.01485, 0.01492, 0.01493, 0.01514, 0.01537, 0.01907",\
                 "0.0146, 0.0146, 0.01461, 0.01461, 0.01465, 0.01471, 0.01475, 0.01494, 0.01529, 0.01936",\
                 "0.01455, 0.01455, 0.01456, 0.01457, 0.01464, 0.01466, 0.01484, 0.01478, 0.01564, 0.02051",\
                 "0.01479, 0.01477, 0.01476, 0.0148, 0.01486, 0.01488, 0.01503, 0.01516, 0.01601, 0.02272",\
                 "0.01526, 0.01526, 0.01525, 0.01521, 0.01527, 0.01543, 0.01542, 0.01552, 0.01663, 0.0256",\
                 "0.01603, 0.01603, 0.01602, 0.01603, 0.01603, 0.01612, 0.01634, 0.01642, 0.01825, 0.03048",\
                 "0.01709, 0.01711, 0.0171, 0.01708, 0.01714, 0.01707, 0.01724, 0.01765, 0.02071, 0.03895",\
                 "0.01847, 0.01849, 0.01849, 0.01849, 0.0185, 0.01848, 0.01849, 0.01912, 0.02512, 0.05386");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.03736, 0.03744, 0.03762, 0.03784, 0.038, 0.03809, 0.03816, 0.03821, 0.03824, 0.03826",\
                 "0.03731, 0.03738, 0.03757, 0.03779, 0.03794, 0.03804, 0.03811, 0.03816, 0.03819, 0.03821",\
                 "0.03713, 0.0372, 0.0374, 0.03761, 0.03777, 0.03787, 0.03794, 0.03798, 0.03802, 0.03804",\
                 "0.03694, 0.03702, 0.03722, 0.03743, 0.03758, 0.03769, 0.03776, 0.0378, 0.03783, 0.03785",\
                 "0.03689, 0.03696, 0.03715, 0.03737, 0.03751, 0.03762, 0.0377, 0.03775, 0.03778, 0.0378",\
                 "0.03697, 0.03704, 0.03724, 0.03744, 0.03759, 0.0377, 0.03777, 0.03782, 0.03786, 0.03788",\
                 "0.03719, 0.03727, 0.03746, 0.03767, 0.03783, 0.03794, 0.03801, 0.03805, 0.03809, 0.03811",\
                 "0.03758, 0.03766, 0.03785, 0.03805, 0.03821, 0.03832, 0.0384, 0.03845, 0.03848, 0.0385",\
                 "0.03814, 0.03822, 0.0384, 0.0386, 0.03876, 0.03887, 0.03894, 0.03899, 0.03903, 0.03906",\
                 "0.03886, 0.03892, 0.03911, 0.03932, 0.03947, 0.03958, 0.03966, 0.03971, 0.03974, 0.03977");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.03306, 0.03312, 0.0333, 0.03351, 0.03376, 0.0339, 0.03418, 0.0341, 0.0349, 0.03895",\
                 "0.03291, 0.03297, 0.03313, 0.03336, 0.03361, 0.03373, 0.034, 0.03396, 0.03452, 0.03887",\
                 "0.03267, 0.03274, 0.03291, 0.03311, 0.03334, 0.0335, 0.03367, 0.03378, 0.03427, 0.03918",\
                 "0.03254, 0.03261, 0.03277, 0.033, 0.03323, 0.03339, 0.03362, 0.03367, 0.03427, 0.03998",\
                 "0.03256, 0.03263, 0.03279, 0.03301, 0.03323, 0.03339, 0.03351, 0.0338, 0.03483, 0.04215",\
                 "0.03271, 0.03276, 0.03292, 0.03312, 0.03337, 0.03352, 0.0338, 0.03382, 0.0354, 0.04467",\
                 "0.033, 0.03305, 0.0332, 0.03343, 0.03363, 0.03381, 0.03398, 0.03434, 0.03669, 0.05022",\
                 "0.03346, 0.03351, 0.03362, 0.03382, 0.03408, 0.03429, 0.03442, 0.03476, 0.0387, 0.06055",\
                 "0.03406, 0.0341, 0.03423, 0.03443, 0.03458, 0.03487, 0.03515, 0.03592, 0.04385, 0.07872",\
                 "0.03484, 0.03489, 0.03501, 0.03517, 0.03535, 0.03546, 0.03587, 0.03867, 0.05644, 0.1103");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.373, 0.412, 0.535, 0.774, 1.093, 1.446, 1.833, 2.257, 2.723, \
                 3.235");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.714, 0.745, 0.861, 1.102, 1.445, 1.836, 2.263, 2.729, 3.228, \
                 3.779");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.8794, 0.936, 1.091, 1.31, 1.579, 1.899, 2.278, 2.728, 3.259, 3.883",\
                 "0.911, 0.9679, 1.123, 1.342, 1.611, 1.931, 2.311, 2.76, 3.291, 3.915",\
                 "1.019, 1.075, 1.231, 1.45, 1.718, 2.039, 2.418, 2.867, 3.399, 4.023",\
                 "1.196, 1.252, 1.404, 1.622, 1.889, 2.209, 2.588, 3.037, 3.568, 4.193",\
                 "1.407, 1.461, 1.609, 1.823, 2.089, 2.407, 2.786, 3.235, 3.765, 4.39",\
                 "1.544, 1.597, 1.745, 1.958, 2.222, 2.539, 2.916, 3.365, 3.895, 4.519",\
                 "1.625, 1.678, 1.825, 2.038, 2.303, 2.62, 2.997, 3.444, 3.974, 4.597",\
                 "1.657, 1.71, 1.857, 2.07, 2.335, 2.652, 3.029, 3.477, 4.007, 4.629",\
                 "1.64, 1.693, 1.84, 2.053, 2.317, 2.635, 3.012, 3.46, 3.991, 4.613",\
                 "1.572, 1.625, 1.773, 1.985, 2.25, 2.568, 2.945, 3.394, 3.924, 4.547");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.6508, 0.7123, 0.9033, 1.233, 1.73, 2.422, 3.332, 4.477, 5.881, 7.546",\
                 "0.6758, 0.7373, 0.9283, 1.258, 1.755, 2.447, 3.356, 4.503, 5.906, 7.572",\
                 "0.7631, 0.8245, 1.016, 1.346, 1.842, 2.534, 3.444, 4.593, 5.994, 7.665",\
                 "0.9199, 0.9814, 1.173, 1.503, 1.999, 2.691, 3.601, 4.75, 6.15, 7.823",\
                 "1.082, 1.147, 1.342, 1.675, 2.172, 2.864, 3.775, 4.921, 6.319, 7.992",\
                 "1.218, 1.284, 1.485, 1.822, 2.323, 3.017, 3.926, 5.072, 6.476, 8.147",\
                 "1.315, 1.386, 1.594, 1.935, 2.437, 3.132, 4.044, 5.19, 6.59, 8.254",\
                 "1.372, 1.448, 1.665, 2.012, 2.514, 3.209, 4.121, 5.269, 6.668, 8.335",\
                 "1.381, 1.464, 1.693, 2.046, 2.55, 3.244, 4.156, 5.304, 6.705, 8.373",\
                 "1.341, 1.432, 1.675, 2.037, 2.543, 3.238, 4.149, 5.297, 6.697, 8.366");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.3887, 0.4294, 0.5536, 0.7606, 1.054, 1.448, 1.968, 2.64, 3.484, 4.51",\
                 "0.3895, 0.4298, 0.5538, 0.761, 1.055, 1.449, 1.969, 2.641, 3.485, 4.508",\
                 "0.3892, 0.4302, 0.5542, 0.7606, 1.054, 1.449, 1.969, 2.641, 3.485, 4.51",\
                 "0.3774, 0.4194, 0.5466, 0.7564, 1.051, 1.446, 1.967, 2.64, 3.484, 4.514",\
                 "0.3578, 0.4008, 0.5314, 0.7436, 1.042, 1.442, 1.965, 2.638, 3.483, 4.512",\
                 "0.3554, 0.3986, 0.5296, 0.7406, 1.038, 1.432, 1.957, 2.633, 3.477, 4.513",\
                 "0.3548, 0.3978, 0.529, 0.7416, 1.039, 1.435, 1.956, 2.625, 3.471, 4.502",\
                 "0.3544, 0.3982, 0.5292, 0.7426, 1.04, 1.436, 1.958, 2.63, 3.472, 4.495",\
                 "0.3542, 0.3976, 0.5288, 0.7416, 1.04, 1.438, 1.959, 2.629, 3.477, 4.497",\
                 "0.354, 0.3972, 0.5284, 0.7414, 1.042, 1.437, 1.961, 2.632, 3.476, 4.5");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.3669, 0.4429, 0.7007, 1.209, 2.035, 3.22, 4.781, 6.748, 9.166, 12.02",\
                 "0.367, 0.4428, 0.7017, 1.209, 2.035, 3.221, 4.784, 6.743, 9.166, 12.02",\
                 "0.368, 0.4431, 0.7026, 1.211, 2.038, 3.218, 4.777, 6.755, 9.166, 12",\
                 "0.3688, 0.4426, 0.703, 1.211, 2.038, 3.216, 4.783, 6.752, 9.139, 12",\
                 "0.3842, 0.4588, 0.7144, 1.218, 2.04, 3.219, 4.78, 6.745, 9.157, 12",\
                 "0.4082, 0.4792, 0.7306, 1.229, 2.047, 3.223, 4.78, 6.753, 9.165, 12.04",\
                 "0.442, 0.5094, 0.7494, 1.238, 2.055, 3.228, 4.779, 6.747, 9.146, 12.02",\
                 "0.48, 0.5462, 0.7754, 1.251, 2.056, 3.229, 4.786, 6.745, 9.147, 12",\
                 "0.5234, 0.5874, 0.8074, 1.269, 2.063, 3.232, 4.788, 6.749, 9.142, 12.01",\
                 "0.5702, 0.6338, 0.8486, 1.291, 2.071, 3.232, 4.79, 6.754, 9.144, 12");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("1.738, 1.798, 1.959, 2.184, 2.455, 2.776, 3.155, 3.605, 4.137, 4.761",\
                 "1.765, 1.826, 1.987, 2.21, 2.481, 2.803, 3.183, 3.633, 4.164, 4.789",\
                 "1.86, 1.92, 2.082, 2.306, 2.577, 2.898, 3.278, 3.728, 4.259, 4.883",\
                 "1.997, 2.058, 2.22, 2.444, 2.714, 3.035, 3.416, 3.865, 4.397, 5.021",\
                 "2.117, 2.178, 2.34, 2.563, 2.834, 3.155, 3.535, 3.985, 4.517, 5.141",\
                 "2.204, 2.265, 2.427, 2.65, 2.921, 3.243, 3.623, 4.073, 4.604, 5.229",\
                 "2.255, 2.316, 2.477, 2.702, 2.973, 3.294, 3.674, 4.124, 4.656, 5.28",\
                 "2.266, 2.327, 2.489, 2.713, 2.985, 3.306, 3.686, 4.136, 4.668, 5.292",\
                 "2.233, 2.294, 2.457, 2.68, 2.951, 3.273, 3.653, 4.103, 4.635, 5.259",\
                 "2.155, 2.216, 2.378, 2.602, 2.873, 3.195, 3.576, 4.026, 4.558, 5.182");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("1.51, 1.572, 1.765, 2.099, 2.599, 3.293, 4.205, 5.352, 6.753, 8.421",\
                 "1.54, 1.602, 1.796, 2.13, 2.629, 3.324, 4.235, 5.383, 6.782, 8.451",\
                 "1.659, 1.721, 1.915, 2.248, 2.748, 3.443, 4.354, 5.503, 6.901, 8.576",\
                 "1.897, 1.959, 2.153, 2.486, 2.986, 3.68, 4.591, 5.74, 7.138, 8.815",\
                 "2.241, 2.303, 2.497, 2.83, 3.33, 4.024, 4.937, 6.087, 7.487, 9.15",\
                 "2.637, 2.7, 2.893, 3.227, 3.727, 4.421, 5.333, 6.481, 7.881, 9.551",\
                 "3.072, 3.135, 3.329, 3.662, 4.161, 4.857, 5.769, 6.916, 8.316, 9.983",\
                 "3.548, 3.61, 3.805, 4.139, 4.638, 5.333, 6.245, 7.392, 8.794, 10.47",\
                 "4.068, 4.131, 4.326, 4.659, 5.159, 5.854, 6.765, 7.912, 9.313, 10.98",\
                 "4.639, 4.702, 4.897, 5.231, 5.731, 6.426, 7.339, 8.486, 9.885, 11.55");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.4112, 0.4464, 0.562, 0.7636, 1.053, 1.451, 1.969, 2.64, 3.484, 4.514",\
                 "0.4108, 0.4462, 0.562, 0.7644, 1.056, 1.45, 1.969, 2.64, 3.484, 4.513",\
                 "0.4104, 0.4458, 0.5616, 0.7642, 1.054, 1.448, 1.967, 2.638, 3.481, 4.512",\
                 "0.411, 0.4456, 0.5622, 0.7642, 1.055, 1.448, 1.967, 2.639, 3.482, 4.511",\
                 "0.4112, 0.4466, 0.5616, 0.7644, 1.054, 1.451, 1.969, 2.641, 3.485, 4.509",\
                 "0.4104, 0.4466, 0.562, 0.7628, 1.056, 1.448, 1.968, 2.641, 3.484, 4.508",\
                 "0.411, 0.4464, 0.5626, 0.7648, 1.054, 1.447, 1.966, 2.64, 3.481, 4.512",\
                 "0.4126, 0.4472, 0.5626, 0.7638, 1.053, 1.449, 1.97, 2.639, 3.48, 4.507",\
                 "0.412, 0.4478, 0.5634, 0.7646, 1.053, 1.449, 1.969, 2.64, 3.481, 4.506",\
                 "0.4116, 0.4482, 0.564, 0.7654, 1.055, 1.448, 1.968, 2.642, 3.484, 4.51");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.004035, 0.0053, 0.009741, 0.01822, 0.03143, 0.04997, 0.07436, 0.1051, 0.1426, 0.1873");
          values("0.359, 0.4352, 0.6974, 1.206, 2.035, 3.22, 4.783, 6.745, 9.159, 12",\
                 "0.3586, 0.4346, 0.6958, 1.209, 2.035, 3.219, 4.784, 6.745, 9.143, 12",\
                 "0.3592, 0.4348, 0.697, 1.207, 2.037, 3.219, 4.784, 6.742, 9.144, 12",\
                 "0.3596, 0.435, 0.6956, 1.207, 2.036, 3.218, 4.784, 6.742, 9.145, 12",\
                 "0.3592, 0.4344, 0.6972, 1.207, 2.037, 3.219, 4.777, 6.755, 9.162, 12.01",\
                 "0.3602, 0.4352, 0.6964, 1.207, 2.036, 3.22, 4.784, 6.745, 9.157, 12",\
                 "0.3614, 0.4374, 0.6966, 1.209, 2.034, 3.219, 4.784, 6.755, 9.156, 12",\
                 "0.3634, 0.4388, 0.6982, 1.209, 2.034, 3.215, 4.776, 6.745, 9.154, 12.03",\
                 "0.3656, 0.44, 0.7004, 1.209, 2.036, 3.216, 4.772, 6.738, 9.144, 12",\
                 "0.368, 0.444, 0.702, 1.21, 2.038, 3.218, 4.772, 6.734, 9.13, 11.98");
        }
      }
    }
  }

