/*
 * 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_8) {
    area : 74.636800 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.119, 0.1183, 0.1261, 0.1486, 0.1876, 0.2455, 0.3277, 0.442, \
                  0.5894, 0.7704");
        }

        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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.2336, 0.2326, 0.2425, 0.2754, 0.3378, 0.4341, 0.5673, 0.7407, \
                  0.9568, 1.218");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.07958, 0.07932, 0.07936, 0.07926, 0.07921, 0.07942, 0.07934, \
                  0.07934, 0.07932, 0.07934");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.07904, -0.07904, -0.079, -0.07906, -0.07909, -0.07916, -0.07916, \
                  -0.0792, -0.07921, -0.07925");
        }
      }
    }

    pin(Z) {
      capacitance : 0.01492 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 2.795 ;
      max_transition : 7.4 ;
      min_capacitance : 0.01592 ;
      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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.383, 0.3828, 0.3826, 0.3827, 0.3826, 0.3827, 0.3829, 0.3829, 0.3829, 0.3829",\
                 "0.3844, 0.3842, 0.384, 0.384, 0.384, 0.3841, 0.3842, 0.3843, 0.3844, 0.3843",\
                 "0.397, 0.3966, 0.3964, 0.3963, 0.3963, 0.3965, 0.3966, 0.3966, 0.3967, 0.3967",\
                 "0.4243, 0.4242, 0.424, 0.4239, 0.4238, 0.424, 0.4241, 0.4242, 0.4242, 0.4242",\
                 "0.4699, 0.4697, 0.4697, 0.4697, 0.4697, 0.4695, 0.4696, 0.4696, 0.4696, 0.4696",\
                 "0.5357, 0.5358, 0.5357, 0.5355, 0.5356, 0.5357, 0.5356, 0.5356, 0.5356, 0.5356",\
                 "0.6233, 0.6233, 0.6231, 0.623, 0.6228, 0.6229, 0.623, 0.6231, 0.6229, 0.6229",\
                 "0.7337, 0.7337, 0.7336, 0.7332, 0.7332, 0.7332, 0.7333, 0.7334, 0.7335, 0.7334",\
                 "0.8678, 0.8681, 0.8679, 0.8678, 0.8677, 0.8677, 0.8678, 0.8678, 0.8679, 0.8681",\
                 "1.027, 1.027, 1.028, 1.027, 1.027, 1.027, 1.027, 1.027, 1.027, 1.027");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.3402, 0.3408, 0.3402, 0.3411, 0.3435, 0.3485, 0.3536, 0.3587, 0.362, 0.3864",\
                 "0.3402, 0.3404, 0.3409, 0.3412, 0.3432, 0.3481, 0.3529, 0.3576, 0.3652, 0.3864",\
                 "0.3479, 0.3484, 0.3487, 0.3487, 0.3504, 0.355, 0.3619, 0.3673, 0.3757, 0.3884",\
                 "0.3743, 0.3752, 0.3763, 0.3769, 0.3785, 0.3834, 0.3885, 0.3958, 0.4009, 0.4192",\
                 "0.4265, 0.4266, 0.426, 0.4298, 0.4325, 0.436, 0.4403, 0.4454, 0.4534, 0.4792",\
                 "0.5094, 0.5092, 0.5096, 0.5091, 0.5167, 0.5202, 0.5257, 0.5275, 0.5345, 0.5592",\
                 "0.6248, 0.6249, 0.6255, 0.6246, 0.6261, 0.6354, 0.643, 0.6474, 0.654, 0.6808",\
                 "0.7751, 0.7754, 0.7777, 0.7778, 0.7759, 0.7798, 0.7931, 0.8036, 0.81, 0.8428",\
                 "0.9633, 0.9642, 0.9653, 0.9669, 0.9635, 0.9645, 0.9717, 0.9909, 1.006, 1.049",\
                 "1.19, 1.191, 1.193, 1.193, 1.192, 1.192, 1.195, 1.205, 1.23, 1.307");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.6465, 0.6496, 0.6595, 0.6663, 0.6699, 0.6721, 0.6734, 0.6742, 0.6746, 0.6749",\
                 "0.6415, 0.6437, 0.6533, 0.6602, 0.6639, 0.6662, 0.6672, 0.6681, 0.6683, 0.669",\
                 "0.6595, 0.6595, 0.6652, 0.6714, 0.6753, 0.6779, 0.6792, 0.6801, 0.6806, 0.6811",\
                 "0.7347, 0.7292, 0.7283, 0.7322, 0.7363, 0.7385, 0.7403, 0.7413, 0.7418, 0.7422",\
                 "0.874, 0.865, 0.8588, 0.8596, 0.8628, 0.8653, 0.8673, 0.8686, 0.8695, 0.8702",\
                 "1.091, 1.079, 1.067, 1.064, 1.066, 1.068, 1.07, 1.072, 1.073, 1.073",\
                 "1.393, 1.378, 1.359, 1.352, 1.351, 1.353, 1.355, 1.356, 1.357, 1.358",\
                 "1.785, 1.766, 1.742, 1.729, 1.724, 1.724, 1.725, 1.727, 1.727, 1.729",\
                 "2.271, 2.249, 2.218, 2.199, 2.19, 2.187, 2.187, 2.187, 2.188, 2.189",\
                 "2.856, 2.832, 2.793, 2.768, 2.754, 2.747, 2.744, 2.743, 2.743, 2.744");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.3256, 0.3361, 0.3548, 0.3661, 0.3734, 0.3798, 0.3856, 0.3918, 0.4012, 0.4227",\
                 "0.3204, 0.3306, 0.3488, 0.3599, 0.3669, 0.3744, 0.3827, 0.3896, 0.394, 0.4155",\
                 "0.3197, 0.3268, 0.3416, 0.3541, 0.3637, 0.3729, 0.3787, 0.3856, 0.3961, 0.4175",\
                 "0.3555, 0.3615, 0.3733, 0.3858, 0.3968, 0.4068, 0.4169, 0.4242, 0.4293, 0.4539",\
                 "0.4519, 0.4549, 0.4612, 0.4756, 0.4864, 0.4968, 0.5065, 0.516, 0.5272, 0.5515",\
                 "0.6231, 0.6234, 0.6272, 0.6333, 0.6491, 0.6602, 0.6714, 0.6794, 0.6928, 0.7143",\
                 "0.8768, 0.8729, 0.8722, 0.8747, 0.8842, 0.9007, 0.9126, 0.921, 0.9312, 0.9603",\
                 "1.218, 1.211, 1.206, 1.204, 1.207, 1.217, 1.235, 1.249, 1.258, 1.299",\
                 "1.648, 1.637, 1.624, 1.619, 1.616, 1.62, 1.633, 1.655, 1.67, 1.732",\
                 "2.171, 2.155, 2.138, 2.125, 2.12, 2.116, 2.121, 2.137, 2.166, 2.247");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.474, 0.487, 0.54, 0.653, 0.841, 1.077, 1.363, 1.692, 2.065, \
                  2.482");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.366, 0.378, 0.436, 0.54, 0.685, 0.865, 1.08, 1.332, 1.623, 1.956");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.1817, 0.2324, 0.3509, 0.5136, 0.717, 0.9684, 1.28, 1.664, 2.129, 2.683",\
                 "0.1931, 0.2436, 0.3619, 0.5248, 0.7281, 0.9795, 1.291, 1.675, 2.14, 2.694",\
                 "0.2327, 0.2833, 0.4016, 0.5642, 0.7675, 1.019, 1.331, 1.714, 2.18, 2.733",\
                 "0.2674, 0.3254, 0.4534, 0.6203, 0.8253, 1.078, 1.39, 1.773, 2.238, 2.792",\
                 "0.2671, 0.3312, 0.4682, 0.6387, 0.8446, 1.097, 1.409, 1.792, 2.258, 2.811",\
                 "0.2312, 0.299, 0.439, 0.6109, 0.8174, 1.07, 1.381, 1.765, 2.23, 2.783",\
                 "0.1588, 0.229, 0.3718, 0.5451, 0.752, 1.005, 1.317, 1.7, 2.165, 2.718",\
                 "0.0486, 0.1213, 0.2664, 0.4416, 0.65, 0.9035, 1.216, 1.6, 2.064, 2.617",\
                 "-0.1013, -0.0255, 0.1234, 0.3004, 0.5099, 0.7641, 1.077, 1.461, 1.926, 2.478",\
                 "-0.2937, -0.2142, -0.0612, 0.1177, 0.3286, 0.5835, 0.8965, 1.28, 1.745, 2.298");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.2104, 0.268, 0.3998, 0.5973, 0.8877, 1.293, 1.825, 2.496, 3.313, 4.29",\
                 "0.2201, 0.2777, 0.4093, 0.607, 0.8972, 1.302, 1.835, 2.505, 3.325, 4.302",\
                 "0.2527, 0.3112, 0.4435, 0.6413, 0.9318, 1.336, 1.869, 2.538, 3.359, 4.336",\
                 "0.2802, 0.3488, 0.491, 0.6915, 0.9822, 1.387, 1.919, 2.59, 3.408, 4.384",\
                 "0.2732, 0.356, 0.5189, 0.7276, 1.02, 1.424, 1.957, 2.628, 3.447, 4.424",\
                 "0.2258, 0.3241, 0.5141, 0.738, 1.034, 1.439, 1.971, 2.641, 3.459, 4.437",\
                 "0.1341, 0.2489, 0.4701, 0.7155, 1.021, 1.429, 1.961, 2.631, 3.449, 4.423",\
                 "-0.0056, 0.128, 0.3822, 0.6552, 0.9732, 1.388, 1.924, 2.595, 3.412, 4.387",\
                 "-0.1976, -0.0417, 0.2474, 0.5529, 0.8874, 1.311, 1.855, 2.531, 3.349, 4.324",\
                 "-0.4466, -0.2646, 0.0632, 0.4048, 0.7605, 1.194, 1.747, 2.431, 3.257, 4.232");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.09976, 0.1491, 0.2765, 0.4665, 0.7277, 1.093, 1.586, 2.225, 3.011, 3.962",\
                 "0.09956, 0.1486, 0.2766, 0.4675, 0.7278, 1.092, 1.583, 2.221, 3.012, 3.963",\
                 "0.1002, 0.1488, 0.2765, 0.4665, 0.7284, 1.093, 1.586, 2.225, 3.017, 3.966",\
                 "0.1195, 0.1696, 0.2916, 0.4749, 0.7328, 1.096, 1.584, 2.226, 3.016, 3.964",\
                 "0.1349, 0.1887, 0.3088, 0.4834, 0.7352, 1.097, 1.585, 2.222, 3.016, 3.962",\
                 "0.1472, 0.199, 0.3138, 0.4872, 0.7378, 1.096, 1.584, 2.222, 3.012, 3.964",\
                 "0.157, 0.2062, 0.3194, 0.4906, 0.7406, 1.097, 1.585, 2.219, 3.009, 3.963",\
                 "0.1664, 0.2138, 0.3242, 0.494, 0.7444, 1.1, 1.587, 2.22, 3.009, 3.956",\
                 "0.177, 0.2244, 0.3302, 0.4992, 0.748, 1.102, 1.588, 2.221, 3.013, 3.957",\
                 "0.1898, 0.2328, 0.3376, 0.5046, 0.7512, 1.105, 1.59, 2.224, 3.012, 3.957");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.1125, 0.168, 0.3277, 0.641, 1.159, 1.897, 2.874, 4.105, 5.598, 7.388",\
                 "0.1125, 0.1674, 0.3277, 0.6403, 1.16, 1.897, 2.875, 4.105, 5.605, 7.396",\
                 "0.1155, 0.1697, 0.3288, 0.6404, 1.158, 1.897, 2.873, 4.105, 5.606, 7.397",\
                 "0.1396, 0.1928, 0.3403, 0.6445, 1.159, 1.897, 2.874, 4.099, 5.606, 7.387",\
                 "0.1708, 0.2297, 0.3706, 0.6576, 1.162, 1.896, 2.871, 4.105, 5.607, 7.398",\
                 "0.2058, 0.2718, 0.4158, 0.6826, 1.171, 1.9, 2.877, 4.104, 5.607, 7.396",\
                 "0.2452, 0.3184, 0.4732, 0.722, 1.191, 1.908, 2.875, 4.104, 5.606, 7.385",\
                 "0.2954, 0.3692, 0.5384, 0.7746, 1.223, 1.933, 2.887, 4.104, 5.606, 7.386",\
                 "0.3566, 0.4286, 0.609, 0.8406, 1.265, 1.964, 2.917, 4.124, 5.608, 7.392",\
                 "0.4296, 0.4982, 0.6852, 0.9192, 1.316, 2.002, 2.957, 4.164, 5.64, 7.402");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.2553, 0.3063, 0.4276, 0.5916, 0.7952, 1.047, 1.359, 1.743, 2.208, 2.761",\
                 "0.2643, 0.3153, 0.4365, 0.6006, 0.8042, 1.056, 1.368, 1.752, 2.217, 2.77",\
                 "0.3093, 0.3598, 0.4808, 0.6452, 0.8492, 1.101, 1.413, 1.797, 2.262, 2.816",\
                 "0.3954, 0.446, 0.5689, 0.735, 0.9401, 1.192, 1.505, 1.888, 2.354, 2.907",\
                 "0.5189, 0.5744, 0.7042, 0.876, 1.085, 1.339, 1.652, 2.036, 2.502, 3.055",\
                 "0.6698, 0.7345, 0.8842, 1.074, 1.295, 1.555, 1.871, 2.256, 2.721, 3.275",\
                 "0.8455, 0.9201, 1.095, 1.317, 1.568, 1.846, 2.169, 2.556, 3.023, 3.576",\
                 "1.047, 1.133, 1.334, 1.593, 1.888, 2.205, 2.548, 2.943, 3.412, 3.966",\
                 "1.277, 1.374, 1.602, 1.9, 2.244, 2.615, 3, 3.417, 3.892, 4.447",\
                 "1.537, 1.644, 1.901, 2.241, 2.633, 3.063, 3.508, 3.966, 4.462, 5.024");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.2744, 0.3338, 0.4679, 0.6666, 0.9578, 1.363, 1.896, 2.567, 3.387, 4.364",\
                 "0.2798, 0.3391, 0.4728, 0.6717, 0.9633, 1.368, 1.901, 2.572, 3.389, 4.364",\
                 "0.2938, 0.3526, 0.4862, 0.6858, 0.9777, 1.383, 1.917, 2.587, 3.407, 4.383",\
                 "0.303, 0.3637, 0.4995, 0.7003, 0.9926, 1.399, 1.932, 2.604, 3.421, 4.397",\
                 "0.2964, 0.3654, 0.5125, 0.7179, 1.012, 1.418, 1.951, 2.623, 3.443, 4.417",\
                 "0.2592, 0.3392, 0.5082, 0.7321, 1.034, 1.441, 1.974, 2.646, 3.466, 4.443",\
                 "0.1899, 0.2818, 0.4765, 0.726, 1.05, 1.468, 2.003, 2.674, 3.493, 4.469",\
                 "0.0915, 0.1947, 0.4158, 0.6941, 1.046, 1.49, 2.038, 2.711, 3.53, 4.506",\
                 "-0.0364, 0.0779, 0.326, 0.6349, 1.017, 1.491, 2.068, 2.755, 3.576, 4.552",\
                 "-0.1952, -0.0701, 0.2051, 0.5451, 0.9598, 1.467, 2.076, 2.794, 3.63, 4.61");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.09658, 0.1485, 0.2765, 0.4665, 0.7279, 1.093, 1.583, 2.224, 3.016, 3.963",\
                 "0.097, 0.1487, 0.2767, 0.4669, 0.7278, 1.093, 1.584, 2.223, 3.015, 3.966",\
                 "0.0979, 0.1502, 0.2785, 0.4675, 0.7279, 1.092, 1.584, 2.223, 3.017, 3.966",\
                 "0.1045, 0.1567, 0.2849, 0.4727, 0.7308, 1.093, 1.586, 2.225, 3.016, 3.963",\
                 "0.1222, 0.175, 0.3014, 0.4866, 0.74, 1.098, 1.589, 2.224, 3.015, 3.964",\
                 "0.1504, 0.2104, 0.3462, 0.5282, 0.7702, 1.117, 1.597, 2.229, 3.014, 3.965",\
                 "0.1812, 0.2514, 0.4114, 0.615, 0.8528, 1.169, 1.623, 2.238, 3.02, 3.968",\
                 "0.2158, 0.296, 0.4838, 0.7248, 0.9942, 1.291, 1.696, 2.272, 3.032, 3.97",\
                 "0.2542, 0.3448, 0.5612, 0.8448, 1.161, 1.484, 1.852, 2.365, 3.072, 3.98",\
                 "0.2932, 0.3972, 0.6468, 0.9706, 1.34, 1.713, 2.089, 2.543, 3.179, 4.029");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.01592, 0.03509, 0.1024, 0.231, 0.4313, 0.7123, 1.082, 1.548, 2.117, 2.795");
          values("0.1074, 0.1621, 0.323, 0.6394, 1.159, 1.896, 2.873, 4.105, 5.608, 7.398",\
                 "0.1074, 0.1623, 0.3239, 0.64, 1.159, 1.898, 2.871, 4.103, 5.605, 7.385",\
                 "0.1089, 0.1633, 0.3248, 0.6397, 1.159, 1.897, 2.873, 4.105, 5.599, 7.393",\
                 "0.1156, 0.1704, 0.3295, 0.6413, 1.159, 1.9, 2.872, 4.105, 5.598, 7.383",\
                 "0.1359, 0.1931, 0.3464, 0.649, 1.161, 1.9, 2.873, 4.104, 5.606, 7.387",\
                 "0.164, 0.229, 0.3882, 0.685, 1.175, 1.901, 2.875, 4.104, 5.606, 7.398",\
                 "0.194, 0.2672, 0.442, 0.7476, 1.23, 1.927, 2.878, 4.102, 5.606, 7.384",\
                 "0.2272, 0.31, 0.502, 0.8178, 1.315, 2.003, 2.917, 4.111, 5.607, 7.382",\
                 "0.262, 0.3558, 0.5654, 0.8976, 1.41, 2.114, 3.014, 4.165, 5.617, 7.399",\
                 "0.301, 0.4042, 0.6358, 0.983, 1.513, 2.237, 3.152, 4.279, 5.686, 7.412");
        }
      }
    }
  }

