/*
 * 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_12) {
    area : 118.540800 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.5934, 0.5919, 0.6021, 0.639, 0.714, 0.8335, 1.001, 1.22, 1.496, \
                 1.832");
        }

        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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.2443, 0.2432, 0.2518, 0.2795, 0.3285, 0.4017, 0.5008, 0.628, \
                 0.7973, 1.017");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.6242, 0.6205, 0.6385, 0.7069, 0.8368, 1.034, 1.308, 1.662, 2.1, \
                 2.627");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.2119, 0.2107, 0.2235, 0.2734, 0.3783, 0.5462, 0.7817, 1.09, \
                 1.476, 1.94");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.02245 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 2.789 ;
      max_transition : 4 ;
      min_capacitance : 0.02345 ;
      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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("1.078, 1.078, 1.078, 1.077, 1.077, 1.078, 1.077, 1.078, 1.078, 1.078",\
                 "1.079, 1.079, 1.078, 1.078, 1.078, 1.078, 1.079, 1.079, 1.079, 1.079",\
                 "1.094, 1.094, 1.093, 1.093, 1.093, 1.093, 1.093, 1.094, 1.094, 1.094",\
                 "1.131, 1.13, 1.13, 1.129, 1.129, 1.129, 1.13, 1.13, 1.13, 1.13",\
                 "1.193, 1.193, 1.193, 1.192, 1.192, 1.192, 1.192, 1.192, 1.192, 1.192",\
                 "1.284, 1.283, 1.284, 1.283, 1.283, 1.283, 1.283, 1.283, 1.283, 1.283",\
                 "1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404",\
                 "1.557, 1.557, 1.557, 1.557, 1.557, 1.557, 1.557, 1.557, 1.557, 1.557",\
                 "1.744, 1.744, 1.744, 1.743, 1.743, 1.743, 1.743, 1.743, 1.744, 1.744",\
                 "1.965, 1.965, 1.965, 1.965, 1.965, 1.964, 1.964, 1.964, 1.964, 1.965");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.9881, 0.9883, 0.9884, 0.9892, 0.99, 0.9956, 1.005, 1.015, 1.037, 1.042",\
                 "0.9871, 0.9878, 0.9877, 0.9882, 0.99, 0.9941, 1.003, 1.015, 1.032, 1.042",\
                 "0.9941, 0.9951, 0.9968, 0.9957, 0.997, 1.001, 1.01, 1.022, 1.037, 1.052",\
                 "1.023, 1.024, 1.024, 1.024, 1.026, 1.03, 1.042, 1.052, 1.067, 1.087",\
                 "1.084, 1.086, 1.089, 1.089, 1.093, 1.095, 1.106, 1.12, 1.132, 1.152",\
                 "1.184, 1.184, 1.185, 1.192, 1.198, 1.198, 1.207, 1.221, 1.237, 1.252",\
                 "1.33, 1.331, 1.336, 1.329, 1.338, 1.35, 1.354, 1.365, 1.377, 1.392",\
                 "1.522, 1.523, 1.527, 1.525, 1.521, 1.532, 1.554, 1.564, 1.567, 1.582",\
                 "1.766, 1.767, 1.768, 1.772, 1.77, 1.77, 1.79, 1.822, 1.832, 1.832",\
                 "2.063, 2.064, 2.07, 2.065, 2.063, 2.062, 2.072, 2.096, 2.147, 2.137");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("1.807, 1.819, 1.85, 1.879, 1.898, 1.909, 1.916, 1.92, 1.923, 1.925",\
                 "1.806, 1.818, 1.848, 1.878, 1.897, 1.908, 1.915, 1.919, 1.922, 1.924",\
                 "1.821, 1.831, 1.862, 1.891, 1.91, 1.922, 1.929, 1.933, 1.936, 1.937",\
                 "1.884, 1.893, 1.922, 1.951, 1.97, 1.981, 1.989, 1.993, 1.996, 1.998",\
                 "2.012, 2.021, 2.046, 2.074, 2.093, 2.105, 2.112, 2.117, 2.12, 2.122",\
                 "2.214, 2.22, 2.245, 2.271, 2.291, 2.303, 2.311, 2.316, 2.319, 2.321",\
                 "2.497, 2.502, 2.524, 2.549, 2.57, 2.583, 2.591, 2.597, 2.6, 2.603",\
                 "2.862, 2.866, 2.885, 2.91, 2.931, 2.945, 2.954, 2.96, 2.964, 2.967",\
                 "3.315, 3.318, 3.336, 3.359, 3.38, 3.394, 3.404, 3.41, 3.415, 3.418",\
                 "3.857, 3.861, 3.878, 3.899, 3.921, 3.937, 3.947, 3.954, 3.959, 3.962");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("1.789, 1.804, 1.837, 1.867, 1.895, 1.913, 1.934, 1.955, 1.973, 1.992",\
                 "1.785, 1.8, 1.835, 1.866, 1.891, 1.911, 1.929, 1.949, 1.973, 1.987",\
                 "1.803, 1.818, 1.854, 1.884, 1.909, 1.93, 1.951, 1.969, 1.988, 2.007",\
                 "1.878, 1.894, 1.926, 1.957, 1.982, 2.001, 2.021, 2.038, 2.058, 2.082",\
                 "2.025, 2.04, 2.067, 2.095, 2.122, 2.144, 2.164, 2.188, 2.218, 2.217",\
                 "2.253, 2.268, 2.294, 2.322, 2.349, 2.37, 2.391, 2.411, 2.433, 2.442",\
                 "2.569, 2.582, 2.602, 2.636, 2.662, 2.686, 2.709, 2.724, 2.748, 2.772",\
                 "2.98, 2.991, 3.012, 3.037, 3.063, 3.101, 3.112, 3.137, 3.158, 3.182",\
                 "3.491, 3.501, 3.523, 3.546, 3.561, 3.595, 3.629, 3.646, 3.663, 3.682",\
                 "4.1, 4.112, 4.128, 4.158, 4.174, 4.193, 4.224, 4.281, 4.288, 4.297");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.519, 0.528, 0.553, 0.607, 0.7, 0.837, 1.008, 1.201, 1.423, 1.667");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0.391, 0.398, 0.427, 0.482, 0.558, 0.655, 0.771, 0.902, 1.053, \
                 1.22");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 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.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.1855, 0.2189, 0.3005, 0.4118, 0.5498, 0.7145, 0.9112, 1.147, 1.429, 1.761",\
                 "0.191, 0.2244, 0.3059, 0.4174, 0.5551, 0.7198, 0.9167, 1.153, 1.434, 1.767",\
                 "0.2128, 0.246, 0.3275, 0.4388, 0.5767, 0.7414, 0.9383, 1.174, 1.456, 1.788",\
                 "0.2466, 0.2809, 0.3635, 0.4755, 0.6136, 0.7784, 0.9754, 1.211, 1.493, 1.826",\
                 "0.2709, 0.3095, 0.4, 0.5177, 0.6587, 0.8248, 1.022, 1.259, 1.54, 1.873",\
                 "0.2779, 0.3195, 0.4165, 0.5393, 0.6822, 0.8494, 1.047, 1.283, 1.565, 1.898",\
                 "0.2679, 0.3117, 0.4121, 0.5364, 0.6801, 0.8476, 1.046, 1.282, 1.563, 1.896",\
                 "0.2408, 0.286, 0.3882, 0.5137, 0.6582, 0.826, 1.024, 1.26, 1.542, 1.874",\
                 "0.1957, 0.2424, 0.3457, 0.4723, 0.6176, 0.7861, 0.9845, 1.221, 1.502, 1.835",\
                 "0.132, 0.1799, 0.2853, 0.413, 0.5591, 0.728, 0.9267, 1.163, 1.445, 1.777");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.2232, 0.264, 0.3593, 0.4872, 0.6567, 0.8837, 1.18, 1.553, 2.009, 2.553",\
                 "0.2282, 0.2691, 0.3644, 0.4923, 0.6615, 0.8887, 1.185, 1.559, 2.015, 2.557",\
                 "0.2467, 0.2876, 0.3828, 0.5108, 0.6801, 0.9072, 1.204, 1.577, 2.033, 2.577",\
                 "0.2767, 0.3189, 0.4156, 0.5441, 0.7137, 0.9407, 1.237, 1.61, 2.066, 2.61",\
                 "0.3001, 0.3481, 0.4547, 0.5879, 0.759, 0.9861, 1.282, 1.656, 2.112, 2.655",\
                 "0.3068, 0.3616, 0.4819, 0.6255, 0.8004, 1.028, 1.325, 1.698, 2.153, 2.698",\
                 "0.2948, 0.3564, 0.4921, 0.6499, 0.8314, 1.061, 1.357, 1.73, 2.185, 2.73",\
                 "0.2629, 0.3314, 0.4825, 0.6575, 0.849, 1.082, 1.379, 1.752, 2.207, 2.75",\
                 "0.2097, 0.2853, 0.4521, 0.6454, 0.8503, 1.089, 1.388, 1.761, 2.216, 2.759",\
                 "0.1345, 0.2172, 0.3993, 0.6122, 0.8326, 1.08, 1.383, 1.758, 2.213, 2.756");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.0919, 0.1226, 0.2026, 0.3241, 0.4855, 0.6937, 0.9714, 1.327, 1.777, 2.321",\
                 "0.09198, 0.1225, 0.2026, 0.3241, 0.4848, 0.6942, 0.9713, 1.327, 1.777, 2.321",\
                 "0.09174, 0.1222, 0.2024, 0.3239, 0.4849, 0.694, 0.9705, 1.327, 1.776, 2.321",\
                 "0.09682, 0.1259, 0.2043, 0.3248, 0.4859, 0.695, 0.9716, 1.328, 1.777, 2.321",\
                 "0.11, 0.1421, 0.2217, 0.3371, 0.493, 0.7, 0.9742, 1.33, 1.777, 2.321",\
                 "0.1199, 0.1543, 0.2372, 0.3498, 0.4998, 0.7028, 0.975, 1.331, 1.778, 2.319",\
                 "0.1282, 0.1634, 0.244, 0.354, 0.5032, 0.7046, 0.9748, 1.33, 1.777, 2.32",\
                 "0.135, 0.1694, 0.2484, 0.3572, 0.5054, 0.7066, 0.9768, 1.33, 1.775, 2.319",\
                 "0.1408, 0.1746, 0.252, 0.3606, 0.5074, 0.7084, 0.9782, 1.332, 1.776, 2.317",\
                 "0.1466, 0.1794, 0.2558, 0.3638, 0.5108, 0.71, 0.98, 1.333, 1.777, 2.317");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.111, 0.1459, 0.2382, 0.3955, 0.6562, 1.044, 1.567, 2.229, 3.04, 4.005",\
                 "0.1107, 0.1457, 0.2379, 0.3961, 0.6567, 1.045, 1.566, 2.23, 3.039, 4.005",\
                 "0.1108, 0.1457, 0.2379, 0.3957, 0.6566, 1.043, 1.566, 2.232, 3.042, 4.002",\
                 "0.1163, 0.1503, 0.2398, 0.3966, 0.6575, 1.046, 1.566, 2.228, 3.04, 4.005",\
                 "0.1342, 0.1701, 0.2565, 0.4047, 0.659, 1.047, 1.569, 2.232, 3.041, 4.002",\
                 "0.1539, 0.1942, 0.2858, 0.4256, 0.6682, 1.049, 1.566, 2.227, 3.039, 4",\
                 "0.1748, 0.2192, 0.3198, 0.4554, 0.684, 1.053, 1.57, 2.228, 3.038, 4.003",\
                 "0.1962, 0.2454, 0.3566, 0.4932, 0.7072, 1.063, 1.571, 2.232, 3.037, 4",\
                 "0.2188, 0.2718, 0.3936, 0.5386, 0.7414, 1.082, 1.58, 2.232, 3.04, 4.004",\
                 "0.2444, 0.2988, 0.4326, 0.5872, 0.783, 1.109, 1.597, 2.243, 3.044, 4.001");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.3249, 0.3591, 0.4426, 0.5551, 0.6932, 0.8581, 1.055, 1.291, 1.572, 1.905",\
                 "0.3299, 0.364, 0.4476, 0.5602, 0.6984, 0.8631, 1.06, 1.296, 1.577, 1.91",\
                 "0.3482, 0.3823, 0.4658, 0.5784, 0.7165, 0.8813, 1.078, 1.314, 1.596, 1.929",\
                 "0.3711, 0.4052, 0.4886, 0.6014, 0.7395, 0.9044, 1.101, 1.337, 1.619, 1.952",\
                 "0.3863, 0.4204, 0.5037, 0.6165, 0.7548, 0.9197, 1.116, 1.352, 1.634, 1.967",\
                 "0.3909, 0.4247, 0.5083, 0.6211, 0.7594, 0.9245, 1.121, 1.357, 1.639, 1.972",\
                 "0.3828, 0.4169, 0.5003, 0.6134, 0.7521, 0.9172, 1.114, 1.35, 1.632, 1.965",\
                 "0.3604, 0.3945, 0.4782, 0.5914, 0.7303, 0.8956, 1.093, 1.329, 1.611, 1.943",\
                 "0.3231, 0.3572, 0.4412, 0.5546, 0.6937, 0.8591, 1.056, 1.293, 1.574, 1.907",\
                 "0.2697, 0.304, 0.3882, 0.5019, 0.6411, 0.8068, 1.004, 1.241, 1.522, 1.855");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.4067, 0.4483, 0.5447, 0.6736, 0.844, 1.072, 1.369, 1.743, 2.2, 2.741",\
                 "0.4124, 0.4541, 0.5505, 0.6794, 0.8498, 1.078, 1.375, 1.748, 2.204, 2.749",\
                 "0.4403, 0.482, 0.5783, 0.7072, 0.8777, 1.106, 1.402, 1.776, 2.232, 2.777",\
                 "0.4972, 0.5389, 0.6352, 0.764, 0.9345, 1.163, 1.46, 1.834, 2.29, 2.833",\
                 "0.5761, 0.6179, 0.7142, 0.8429, 1.013, 1.242, 1.539, 1.912, 2.369, 2.913",\
                 "0.6745, 0.7162, 0.8125, 0.9413, 1.112, 1.34, 1.637, 2.011, 2.468, 3.011",\
                 "0.7914, 0.8331, 0.9299, 1.059, 1.23, 1.458, 1.755, 2.129, 2.585, 3.129",\
                 "0.9269, 0.969, 1.066, 1.196, 1.366, 1.594, 1.892, 2.265, 2.722, 3.266",\
                 "1.081, 1.124, 1.222, 1.352, 1.523, 1.751, 2.048, 2.422, 2.878, 3.421",\
                 "1.256, 1.299, 1.398, 1.529, 1.7, 1.928, 2.226, 2.6, 3.056, 3.598");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.08916, 0.1205, 0.2003, 0.3214, 0.4829, 0.6925, 0.969, 1.327, 1.777, 2.321",\
                 "0.0892, 0.1204, 0.2003, 0.3214, 0.4826, 0.6924, 0.97, 1.328, 1.777, 2.322",\
                 "0.0892, 0.1204, 0.2003, 0.3216, 0.4828, 0.6924, 0.97, 1.328, 1.777, 2.321",\
                 "0.08934, 0.1205, 0.201, 0.3221, 0.4826, 0.6917, 0.9704, 1.327, 1.776, 2.32",\
                 "0.08956, 0.121, 0.2008, 0.3223, 0.4826, 0.692, 0.9704, 1.327, 1.777, 2.321",\
                 "0.09006, 0.1216, 0.2018, 0.3228, 0.4828, 0.693, 0.9688, 1.327, 1.776, 2.321",\
                 "0.0904, 0.1224, 0.2024, 0.323, 0.4842, 0.6932, 0.969, 1.327, 1.776, 2.321",\
                 "0.091, 0.1232, 0.2032, 0.324, 0.4846, 0.6934, 0.9702, 1.327, 1.774, 2.319",\
                 "0.092, 0.1238, 0.204, 0.3248, 0.4846, 0.6942, 0.9702, 1.327, 1.776, 2.318",\
                 "0.0928, 0.1246, 0.2046, 0.3256, 0.4858, 0.6944, 0.971, 1.329, 1.775, 2.319");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04747, 0.1439, 0.328, 0.6149, 1.017, 1.547, 2.214, 3.029, 4");
          index_2("0.02345, 0.04254, 0.1095, 0.2375, 0.4368, 0.7165, 1.085, 1.548, 2.114, 2.789");
          values("0.1062, 0.1411, 0.2331, 0.3924, 0.6547, 1.045, 1.566, 2.228, 3.036, 4.005",\
                 "0.1064, 0.1409, 0.2331, 0.3926, 0.6547, 1.044, 1.566, 2.228, 3.04, 4.002",\
                 "0.1063, 0.1411, 0.2333, 0.3927, 0.6549, 1.044, 1.569, 2.227, 3.04, 4.001",\
                 "0.1063, 0.1412, 0.2335, 0.3927, 0.6554, 1.045, 1.567, 2.231, 3.039, 4.005",\
                 "0.1066, 0.1415, 0.2334, 0.3928, 0.6552, 1.045, 1.568, 2.232, 3.038, 4.002",\
                 "0.1076, 0.1428, 0.2338, 0.3934, 0.6554, 1.045, 1.567, 2.23, 3.036, 4.004",\
                 "0.1082, 0.1434, 0.235, 0.3942, 0.655, 1.044, 1.569, 2.227, 3.04, 4.006",\
                 "0.1102, 0.1444, 0.2366, 0.3946, 0.6562, 1.044, 1.567, 2.232, 3.041, 4.005",\
                 "0.1126, 0.1476, 0.2378, 0.3958, 0.657, 1.047, 1.566, 2.229, 3.04, 4",\
                 "0.117, 0.1504, 0.2402, 0.3976, 0.6568, 1.045, 1.568, 2.229, 3.036, 3.999");
        }
      }
    }
  }

