/*
 * 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__bufz_16) {
    area : 127.321600 ;

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

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

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

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

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

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

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

    pin(EN) {
      capacitance : 0.008171 ;
      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.1147, 0.114, 0.1196, 0.1353, 0.1631, 0.2041, 0.2597, 0.3316, \
                  0.4275, 0.5512");
        }

        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.3187, 0.3179, 0.324, 0.345, 0.387, 0.4541, 0.5482, 0.6722, 0.8275, \
                  1.017");
        }

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

    pin(I) {
      capacitance : 0.03485 ;
      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.1514, 0.151, 0.1509, 0.1508, 0.1508, 0.1505, 0.151, 0.1511, \
                  0.1512, 0.151");
        }

        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.1507, -0.1504, -0.1504, -0.1502, -0.1502, -0.1504, -0.1507, \
                  -0.1508, -0.1508, -0.1509");
        }
      }
    }

    pin(Z) {
      capacitance : 0.02973 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 5.482 ;
      max_transition : 5.2 ;
      min_capacitance : 0.03073 ;
      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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.6939, 0.6938, 0.6936, 0.6935, 0.6932, 0.6936, 0.6937, 0.6939, 0.6941, 0.694",\
                 "0.6946, 0.6949, 0.6945, 0.6944, 0.6944, 0.6948, 0.6948, 0.6949, 0.6949, 0.695",\
                 "0.7041, 0.7035, 0.7039, 0.7037, 0.7035, 0.7036, 0.7039, 0.704, 0.704, 0.7041",\
                 "0.7249, 0.7249, 0.7246, 0.7242, 0.7242, 0.7241, 0.7243, 0.7245, 0.7245, 0.7246",\
                 "0.7595, 0.7594, 0.7594, 0.7592, 0.759, 0.759, 0.7592, 0.7594, 0.7594, 0.7595",\
                 "0.8096, 0.8097, 0.8097, 0.8096, 0.8096, 0.8093, 0.8094, 0.8095, 0.8094, 0.8095",\
                 "0.8757, 0.8757, 0.8757, 0.8756, 0.8754, 0.8755, 0.8757, 0.8755, 0.8755, 0.8757",\
                 "0.9592, 0.9591, 0.9594, 0.9592, 0.9589, 0.9588, 0.9591, 0.9591, 0.9591, 0.9591",\
                 "1.061, 1.061, 1.061, 1.061, 1.06, 1.06, 1.06, 1.061, 1.061, 1.061",\
                 "1.181, 1.181, 1.182, 1.182, 1.181, 1.181, 1.181, 1.181, 1.181, 1.181");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.6628, 0.6638, 0.6655, 0.6638, 0.6657, 0.6701, 0.6836, 0.6988, 0.7133, 0.7276",\
                 "0.6631, 0.664, 0.6639, 0.6635, 0.666, 0.673, 0.6836, 0.6952, 0.7169, 0.7384",\
                 "0.6671, 0.6678, 0.6709, 0.6681, 0.6689, 0.6769, 0.6836, 0.6988, 0.7169, 0.724",\
                 "0.685, 0.6854, 0.6865, 0.6854, 0.6873, 0.6921, 0.7049, 0.7204, 0.7349, 0.7492",\
                 "0.7199, 0.7195, 0.7239, 0.7261, 0.7269, 0.7342, 0.7452, 0.7564, 0.7781, 0.7852",\
                 "0.7761, 0.777, 0.7752, 0.7769, 0.7877, 0.7911, 0.7988, 0.814, 0.8285, 0.8428",\
                 "0.8581, 0.8583, 0.8606, 0.8579, 0.8612, 0.8778, 0.8852, 0.8896, 0.9041, 0.9148",\
                 "0.9658, 0.9671, 0.967, 0.9666, 0.962, 0.9747, 1.001, 1.008, 1.012, 1.034",\
                 "1.102, 1.102, 1.109, 1.107, 1.101, 1.104, 1.12, 1.163, 1.17, 1.164",\
                 "1.268, 1.268, 1.27, 1.271, 1.274, 1.271, 1.269, 1.296, 1.343, 1.34");
        }
      }

      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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("1.136, 1.156, 1.19, 1.209, 1.219, 1.223, 1.226, 1.228, 1.229, 1.229",\
                 "1.125, 1.144, 1.178, 1.198, 1.207, 1.212, 1.215, 1.216, 1.217, 1.218",\
                 "1.136, 1.151, 1.181, 1.202, 1.213, 1.22, 1.223, 1.226, 1.227, 1.228",\
                 "1.207, 1.219, 1.243, 1.265, 1.28, 1.288, 1.293, 1.297, 1.299, 1.3",\
                 "1.359, 1.369, 1.391, 1.415, 1.431, 1.441, 1.448, 1.453, 1.456, 1.458",\
                 "1.613, 1.623, 1.644, 1.665, 1.682, 1.695, 1.703, 1.709, 1.713, 1.715",\
                 "1.981, 1.991, 2.01, 2.03, 2.047, 2.06, 2.07, 2.076, 2.081, 2.085",\
                 "2.472, 2.48, 2.498, 2.516, 2.532, 2.546, 2.557, 2.564, 2.57, 2.574",\
                 "3.094, 3.1, 3.115, 3.131, 3.147, 3.161, 3.171, 3.18, 3.186, 3.191",\
                 "3.849, 3.855, 3.868, 3.881, 3.894, 3.907, 3.918, 3.928, 3.935, 3.94");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.6267, 0.6505, 0.6795, 0.6958, 0.7038, 0.7151, 0.7243, 0.7423, 0.7532, 0.7675",\
                 "0.6155, 0.6372, 0.6638, 0.6818, 0.6926, 0.7018, 0.7181, 0.7279, 0.746, 0.7747",\
                 "0.6011, 0.616, 0.6413, 0.6627, 0.6772, 0.6913, 0.7041, 0.7207, 0.7388, 0.7495",\
                 "0.633, 0.6456, 0.6654, 0.685, 0.7034, 0.7205, 0.7372, 0.7567, 0.7712, 0.7855",\
                 "0.7422, 0.7501, 0.7681, 0.7938, 0.8118, 0.8299, 0.8449, 0.8647, 0.89, 0.9151",\
                 "0.9489, 0.9552, 0.9733, 0.9882, 1.014, 1.03, 1.049, 1.07, 1.088, 1.102",\
                 "1.265, 1.272, 1.288, 1.299, 1.319, 1.351, 1.367, 1.38, 1.405, 1.434",\
                 "1.701, 1.705, 1.722, 1.727, 1.748, 1.768, 1.808, 1.826, 1.833, 1.862",\
                 "2.256, 2.261, 2.276, 2.285, 2.294, 2.302, 2.339, 2.38, 2.395, 2.409",\
                 "2.934, 2.94, 2.949, 2.954, 2.964, 2.973, 2.993, 3.032, 3.075, 3.086");
        }
      }

      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.622, 0.631, 0.666, 0.739, 0.865, 1.048, 1.273, 1.529, 1.822, \
                  2.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.372, 0.381, 0.421, 0.493, 0.589, 0.713, 0.866, 1.042, 1.244, \
                  1.475");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.1812, 0.2273, 0.3321, 0.4707, 0.6377, 0.8349, 1.07, 1.352, 1.69, 2.089",\
                 "0.1896, 0.2358, 0.3404, 0.4791, 0.6461, 0.8436, 1.078, 1.36, 1.698, 2.097",\
                 "0.2189, 0.265, 0.3698, 0.5083, 0.6754, 0.8727, 1.107, 1.389, 1.727, 2.127",\
                 "0.2575, 0.3081, 0.4172, 0.5579, 0.7262, 0.924, 1.159, 1.441, 1.779, 2.178",\
                 "0.2745, 0.3321, 0.4558, 0.6067, 0.7791, 0.9787, 1.214, 1.497, 1.834, 2.234",\
                 "0.2662, 0.3284, 0.4585, 0.6118, 0.785, 0.9848, 1.221, 1.503, 1.84, 2.24",\
                 "0.2315, 0.2959, 0.4278, 0.5819, 0.7558, 0.9561, 1.192, 1.474, 1.812, 2.211",\
                 "0.17, 0.2355, 0.3687, 0.5245, 0.6991, 0.8999, 1.136, 1.419, 1.756, 2.155",\
                 "0.0819, 0.1474, 0.2821, 0.4388, 0.6147, 0.816, 1.053, 1.335, 1.672, 2.072",\
                 "-0.0355, 0.0318, 0.168, 0.3263, 0.5029, 0.7047, 0.942, 1.225, 1.562, 1.962");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.2218, 0.2748, 0.3886, 0.5442, 0.7619, 1.062, 1.455, 1.952, 2.559, 3.28",\
                 "0.2293, 0.2822, 0.396, 0.5517, 0.7693, 1.069, 1.463, 1.96, 2.566, 3.289",\
                 "0.255, 0.308, 0.4218, 0.5776, 0.7951, 1.095, 1.488, 1.986, 2.591, 3.312",\
                 "0.2926, 0.3497, 0.4668, 0.6235, 0.8413, 1.141, 1.535, 2.031, 2.638, 3.359",\
                 "0.3131, 0.38, 0.5132, 0.6766, 0.8955, 1.195, 1.589, 2.085, 2.691, 3.414",\
                 "0.3101, 0.3873, 0.5391, 0.7145, 0.9369, 1.237, 1.63, 2.126, 2.732, 3.455",\
                 "0.2806, 0.368, 0.5407, 0.7327, 0.9606, 1.261, 1.654, 2.15, 2.755, 3.477",\
                 "0.2229, 0.3205, 0.5148, 0.7265, 0.9642, 1.267, 1.66, 2.155, 2.76, 3.482",\
                 "0.1361, 0.2431, 0.4584, 0.693, 0.9437, 1.251, 1.645, 2.14, 2.745, 3.466",\
                 "0.0192, 0.1358, 0.3707, 0.6299, 0.8971, 1.211, 1.608, 2.105, 2.709, 3.43");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.09362, 0.1359, 0.239, 0.3873, 0.5754, 0.8231, 1.152, 1.582, 2.121, 2.775",\
                 "0.09356, 0.1358, 0.2391, 0.3875, 0.5753, 0.823, 1.152, 1.583, 2.12, 2.775",\
                 "0.09358, 0.136, 0.2393, 0.387, 0.5755, 0.8222, 1.152, 1.582, 2.12, 2.774",\
                 "0.1072, 0.1481, 0.2459, 0.3918, 0.5785, 0.8237, 1.153, 1.582, 2.12, 2.776",\
                 "0.1245, 0.1719, 0.2764, 0.4132, 0.5908, 0.8312, 1.157, 1.585, 2.121, 2.777",\
                 "0.1372, 0.1876, 0.29, 0.4208, 0.5948, 0.833, 1.158, 1.584, 2.122, 2.775",\
                 "0.1456, 0.1946, 0.294, 0.4238, 0.5974, 0.835, 1.157, 1.582, 2.121, 2.777",\
                 "0.1504, 0.1986, 0.298, 0.4272, 0.5994, 0.8368, 1.159, 1.584, 2.119, 2.772",\
                 "0.1544, 0.2016, 0.3008, 0.4306, 0.6028, 0.8398, 1.161, 1.584, 2.12, 2.772",\
                 "0.1572, 0.2058, 0.3046, 0.4334, 0.6056, 0.8428, 1.162, 1.586, 2.121, 2.775");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.1039, 0.1484, 0.2603, 0.4684, 0.8209, 1.335, 2.02, 2.885, 3.945, 5.203",\
                 "0.1042, 0.1487, 0.2607, 0.4688, 0.8207, 1.336, 2.019, 2.886, 3.942, 5.203",\
                 "0.1042, 0.1482, 0.2607, 0.4681, 0.8206, 1.335, 2.021, 2.886, 3.941, 5.199",\
                 "0.1163, 0.1576, 0.2642, 0.4703, 0.8212, 1.335, 2.02, 2.885, 3.945, 5.203",\
                 "0.1377, 0.1863, 0.2893, 0.4804, 0.8238, 1.337, 2.019, 2.884, 3.938, 5.197",\
                 "0.1604, 0.215, 0.3242, 0.5024, 0.8306, 1.338, 2.02, 2.884, 3.942, 5.206",\
                 "0.1834, 0.2462, 0.3662, 0.5334, 0.844, 1.341, 2.02, 2.884, 3.939, 5.195",\
                 "0.2058, 0.2766, 0.4122, 0.577, 0.8672, 1.348, 2.024, 2.886, 3.939, 5.191",\
                 "0.2278, 0.306, 0.4598, 0.6274, 0.8982, 1.364, 2.029, 2.886, 3.935, 5.189",\
                 "0.2504, 0.3368, 0.5048, 0.6836, 0.939, 1.386, 2.044, 2.892, 3.94, 5.19");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : positive_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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.2328, 0.2805, 0.3864, 0.5247, 0.691, 0.8876, 1.122, 1.404, 1.742, 2.141",\
                 "0.237, 0.2846, 0.3906, 0.5289, 0.6954, 0.8921, 1.127, 1.409, 1.746, 2.146",\
                 "0.264, 0.3113, 0.4173, 0.556, 0.7226, 0.9196, 1.154, 1.436, 1.774, 2.174",\
                 "0.3184, 0.3665, 0.4737, 0.6135, 0.7806, 0.9779, 1.213, 1.495, 1.832, 2.232",\
                 "0.4081, 0.4575, 0.5662, 0.7079, 0.8765, 1.074, 1.309, 1.592, 1.929, 2.329",\
                 "0.5314, 0.587, 0.7037, 0.8488, 1.02, 1.22, 1.457, 1.739, 2.077, 2.477",\
                 "0.6808, 0.7481, 0.8844, 1.043, 1.223, 1.427, 1.666, 1.95, 2.288, 2.688",\
                 "0.8601, 0.9406, 1.103, 1.288, 1.485, 1.7, 1.942, 2.228, 2.567, 2.967",\
                 "1.075, 1.17, 1.361, 1.577, 1.803, 2.037, 2.288, 2.578, 2.918, 3.319",\
                 "1.329, 1.439, 1.659, 1.908, 2.168, 2.432, 2.702, 2.999, 3.342, 3.743");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.2769, 0.3307, 0.4445, 0.6, 0.8179, 1.118, 1.512, 2.009, 2.615, 3.336",\
                 "0.2779, 0.3314, 0.4451, 0.6008, 0.8192, 1.119, 1.514, 2.009, 2.617, 3.339",\
                 "0.2815, 0.3347, 0.4489, 0.6053, 0.8237, 1.124, 1.518, 2.015, 2.622, 3.344",\
                 "0.2851, 0.339, 0.4539, 0.6109, 0.8295, 1.13, 1.524, 2.021, 2.628, 3.351",\
                 "0.2978, 0.3536, 0.4706, 0.6289, 0.8485, 1.149, 1.543, 2.04, 2.647, 3.37",\
                 "0.3095, 0.3745, 0.5032, 0.6654, 0.8859, 1.187, 1.582, 2.079, 2.685, 3.406",\
                 "0.3129, 0.3909, 0.5402, 0.7166, 0.9417, 1.243, 1.638, 2.135, 2.741, 3.464",\
                 "0.3103, 0.4024, 0.5773, 0.7728, 1.012, 1.317, 1.712, 2.209, 2.815, 3.538",\
                 "0.3014, 0.4094, 0.6118, 0.8304, 1.087, 1.406, 1.805, 2.302, 2.908, 3.63",\
                 "0.286, 0.4102, 0.642, 0.8866, 1.163, 1.5, 1.911, 2.411, 3.017, 3.74");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.08846, 0.1305, 0.2334, 0.3829, 0.5717, 0.8199, 1.15, 1.582, 2.122, 2.775",\
                 "0.0887, 0.1304, 0.2338, 0.3829, 0.5723, 0.8201, 1.151, 1.581, 2.122, 2.775",\
                 "0.08964, 0.1315, 0.2347, 0.3839, 0.5721, 0.8197, 1.151, 1.581, 2.12, 2.777",\
                 "0.0938, 0.1355, 0.2375, 0.3855, 0.5734, 0.8206, 1.152, 1.581, 2.119, 2.776",\
                 "0.09814, 0.1391, 0.2414, 0.3894, 0.5764, 0.8224, 1.152, 1.581, 2.121, 2.775",\
                 "0.1166, 0.1574, 0.2534, 0.3982, 0.585, 0.8286, 1.156, 1.584, 2.122, 2.776",\
                 "0.1458, 0.1924, 0.292, 0.4276, 0.6052, 0.8422, 1.164, 1.589, 2.125, 2.777",\
                 "0.1808, 0.2356, 0.3486, 0.488, 0.6522, 0.8716, 1.18, 1.597, 2.13, 2.78",\
                 "0.2214, 0.2838, 0.4138, 0.5676, 0.7344, 0.9324, 1.215, 1.614, 2.138, 2.781",\
                 "0.2648, 0.336, 0.4818, 0.6546, 0.843, 1.032, 1.28, 1.648, 2.151, 2.788");
        }

        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.03073, 0.06836, 0.2004, 0.4527, 0.8456, 1.397, 2.123, 3.037, 4.152, 5.482");
          values("0.09606, 0.1396, 0.2543, 0.4657, 0.8201, 1.335, 2.021, 2.886, 3.942, 5.202",\
                 "0.09622, 0.141, 0.2545, 0.4656, 0.8201, 1.336, 2.019, 2.884, 3.943, 5.203",\
                 "0.0976, 0.1418, 0.2553, 0.4665, 0.8198, 1.335, 2.02, 2.886, 3.944, 5.206",\
                 "0.1007, 0.1449, 0.2573, 0.4671, 0.8197, 1.335, 2.02, 2.885, 3.945, 5.206",\
                 "0.1076, 0.151, 0.2611, 0.47, 0.8214, 1.336, 2.021, 2.885, 3.941, 5.198",\
                 "0.1308, 0.1752, 0.2796, 0.4772, 0.8242, 1.338, 2.022, 2.885, 3.943, 5.198",\
                 "0.162, 0.2114, 0.3164, 0.503, 0.8328, 1.339, 2.021, 2.884, 3.934, 5.197",\
                 "0.1978, 0.253, 0.3636, 0.5468, 0.8646, 1.35, 2.023, 2.884, 3.938, 5.193",\
                 "0.236, 0.2994, 0.4182, 0.5996, 0.915, 1.386, 2.036, 2.885, 3.938, 5.199",\
                 "0.2762, 0.3456, 0.4778, 0.6576, 0.9758, 1.448, 2.078, 2.901, 3.938, 5.191");
        }
      }
    }
  }

