/*
 * 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_3) {
    area : 43.904000 ;

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "2.932038e-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.00699 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 21 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.02166, 0.02147, 0.02126, 0.02116, 0.0211, 0.02102, 0.02094, \
                  0.02087, 0.02081, 0.01978");
        }

        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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.03663, 0.03637, 0.03588, 0.03545, 0.03512, 0.03482, 0.03458, \
                  0.03444, 0.03431, 0.02853");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.005099, 0.005094, 0.00509, 0.005087, 0.005096, 0.005101, 0.005097, \
                  0.0051, 0.005096, 0.004256");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("-0.005074, -0.005076, -0.005075, -0.005075, -0.005088, -0.005086, \
                  -0.005083, -0.005081, -0.005082, -0.004607");
        }
      }
    }

    pin(Z) {
      capacitance : 0.006959 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.4831 ;
      max_transition : 21 ;
      min_capacitance : 0.007959 ;
      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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.0374, 0.03741, 0.03741, 0.03739, 0.03738, 0.03738, 0.03739, 0.03739, 0.03739, 0.0374",\
                 "0.03759, 0.0376, 0.03759, 0.03758, 0.03757, 0.03757, 0.03758, 0.03758, 0.03758, 0.03758",\
                 "0.03802, 0.03802, 0.03801, 0.038, 0.03798, 0.03799, 0.03799, 0.038, 0.038, 0.03801",\
                 "0.03824, 0.03827, 0.03824, 0.03824, 0.03823, 0.03821, 0.03823, 0.03823, 0.03823, 0.03822",\
                 "0.03842, 0.03842, 0.03843, 0.03841, 0.0384, 0.03839, 0.0384, 0.03841, 0.0384, 0.03841",\
                 "0.03859, 0.03858, 0.03857, 0.03857, 0.03855, 0.03856, 0.03857, 0.03857, 0.03857, 0.03856",\
                 "0.03875, 0.03872, 0.03872, 0.03872, 0.03871, 0.03871, 0.03871, 0.03871, 0.03871, 0.03869",\
                 "0.03889, 0.03889, 0.03889, 0.03887, 0.03888, 0.03888, 0.03889, 0.03889, 0.03888, 0.03877",\
                 "0.03907, 0.03906, 0.03906, 0.03905, 0.03904, 0.03904, 0.03904, 0.03903, 0.03883, 0.03798",\
                 "0.03975, 0.03977, 0.03976, 0.03974, 0.03971, 0.03967, 0.03937, 0.03815, 0.03642, 0.03511");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.02784, 0.02787, 0.02782, 0.02791, 0.02793, 0.0281, 0.02831, 0.02922, 0.0467, 0.1508",\
                 "0.02776, 0.02778, 0.02779, 0.0278, 0.02793, 0.02799, 0.02824, 0.0293, 0.0471, 0.1542",\
                 "0.02758, 0.02758, 0.02758, 0.0277, 0.02769, 0.02786, 0.02807, 0.02927, 0.05076, 0.1655",\
                 "0.02733, 0.02733, 0.02736, 0.02735, 0.02749, 0.02755, 0.02759, 0.02964, 0.05844, 0.1892",\
                 "0.02714, 0.02715, 0.02717, 0.02723, 0.02733, 0.02732, 0.02762, 0.031, 0.07648, 0.2274",\
                 "0.02696, 0.02694, 0.02696, 0.02702, 0.02707, 0.02716, 0.02758, 0.03599, 0.1106, 0.2701",\
                 "0.02683, 0.02687, 0.02681, 0.02685, 0.02701, 0.02721, 0.02811, 0.05204, 0.1675, 0.3104",\
                 "0.02672, 0.02673, 0.02677, 0.02672, 0.02678, 0.02718, 0.03342, 0.1022, 0.2292, 0.3317",\
                 "0.02664, 0.02664, 0.02668, 0.02671, 0.02666, 0.02916, 0.07396, 0.1757, 0.2558, 0.3127",\
                 "0.02689, 0.02689, 0.02694, 0.02699, 0.03066, 0.07957, 0.14, 0.1805, 0.2077, 0.2265");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.06075, 0.06093, 0.06135, 0.0617, 0.06191, 0.06205, 0.06214, 0.06219, 0.06223, 0.06225",\
                 "0.06061, 0.06079, 0.06121, 0.06156, 0.06178, 0.06192, 0.062, 0.06205, 0.06209, 0.06211",\
                 "0.06031, 0.06051, 0.06092, 0.06129, 0.06151, 0.06165, 0.06173, 0.06178, 0.06182, 0.06184",\
                 "0.06005, 0.06022, 0.06059, 0.06094, 0.06118, 0.06134, 0.06143, 0.0615, 0.06154, 0.06156",\
                 "0.05976, 0.0599, 0.06023, 0.06057, 0.06085, 0.06103, 0.06117, 0.06124, 0.0613, 0.06134",\
                 "0.05947, 0.05959, 0.0599, 0.06025, 0.06054, 0.06076, 0.06092, 0.06104, 0.0611, 0.06115",\
                 "0.05928, 0.05938, 0.05967, 0.06002, 0.0603, 0.06055, 0.06073, 0.06086, 0.06093, 0.06092",\
                 "0.05911, 0.05922, 0.0595, 0.0598, 0.06012, 0.06035, 0.06058, 0.06066, 0.06057, 0.05974",\
                 "0.05896, 0.05906, 0.0593, 0.05961, 0.05985, 0.05999, 0.05945, 0.05787, 0.05641, 0.05535",\
                 "0.03302, 0.03328, 0.03371, 0.03412, 0.03446, 0.03475, 0.03498, 0.03517, 0.0353, 0.03542");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.02892, 0.0291, 0.02952, 0.02998, 0.03028, 0.03038, 0.03062, 0.03209, 0.05187, 0.1642",\
                 "0.02883, 0.02902, 0.02948, 0.02988, 0.03024, 0.03046, 0.03078, 0.03195, 0.05328, 0.1674",\
                 "0.02861, 0.02877, 0.02916, 0.02957, 0.02987, 0.03022, 0.03054, 0.03222, 0.05667, 0.1795",\
                 "0.02821, 0.02831, 0.02864, 0.02901, 0.02943, 0.02972, 0.03019, 0.03233, 0.06617, 0.2028",\
                 "0.02787, 0.02798, 0.02824, 0.02865, 0.029, 0.02942, 0.02984, 0.0344, 0.08523, 0.238",\
                 "0.02761, 0.02771, 0.02796, 0.02828, 0.02867, 0.02887, 0.02973, 0.03993, 0.1219, 0.2806",\
                 "0.02739, 0.02748, 0.02768, 0.02799, 0.0284, 0.0287, 0.03035, 0.0589, 0.1794, 0.3176",\
                 "0.02723, 0.02728, 0.02748, 0.0277, 0.02806, 0.02858, 0.03704, 0.1137, 0.2374, 0.3342",\
                 "0.02712, 0.0272, 0.02737, 0.0276, 0.02776, 0.0316, 0.08461, 0.183, 0.2568, 0.309",\
                 "0.02734, 0.02742, 0.02757, 0.02782, 0.0347, 0.08902, 0.1412, 0.1755, 0.1986, 0.2143");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.708, 0.796, 1.073, 1.609, 2.438, 3.494, 4.742, 6.184, 7.828, \
                  9.675");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("1.344, 1.411, 1.678, 2.217, 3.059, 4.202, 5.564, 7.136, 8.909, \
                  10.88");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          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.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("2.07, 2.163, 2.405, 2.733, 3.13, 3.605, 4.173, 4.857, 5.675, 6.644",\
                 "2.146, 2.239, 2.481, 2.809, 3.206, 3.681, 4.249, 4.933, 5.751, 6.719",\
                 "2.397, 2.489, 2.732, 3.061, 3.458, 3.931, 4.5, 5.184, 6.002, 6.97",\
                 "2.854, 2.947, 3.189, 3.518, 3.915, 4.388, 4.957, 5.641, 6.458, 7.427",\
                 "3.478, 3.572, 3.815, 4.143, 4.54, 5.013, 5.582, 6.266, 7.084, 8.052",\
                 "4.137, 4.23, 4.472, 4.799, 5.195, 5.669, 6.238, 6.922, 7.74, 8.708",\
                 "4.855, 4.948, 5.19, 5.515, 5.912, 6.385, 6.952, 7.635, 8.452, 9.421",\
                 "5.633, 5.726, 5.968, 6.296, 6.692, 7.165, 7.732, 8.414, 9.229, 10.2",\
                 "6.478, 6.571, 6.813, 7.142, 7.538, 8.011, 8.579, 9.261, 10.08, 11.04",\
                 "7.39, 7.485, 7.726, 8.054, 8.451, 8.923, 9.492, 10.17, 10.99, 11.96");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("1.15, 1.253, 1.577, 2.155, 3.043, 4.287, 5.922, 7.988, 10.5, 13.51",\
                 "1.215, 1.317, 1.641, 2.219, 3.107, 4.351, 5.987, 8.049, 10.56, 13.58",\
                 "1.446, 1.549, 1.873, 2.451, 3.339, 4.584, 6.219, 8.286, 10.8, 13.8",\
                 "1.889, 1.991, 2.315, 2.893, 3.782, 5.025, 6.66, 8.72, 11.23, 14.25",\
                 "2.536, 2.64, 2.966, 3.544, 4.432, 5.676, 7.314, 9.376, 11.89, 14.89",\
                 "3.297, 3.405, 3.736, 4.319, 5.208, 6.452, 8.088, 10.16, 12.67, 15.67",\
                 "4.15, 4.263, 4.601, 5.187, 6.079, 7.324, 8.959, 11.02, 13.54, 16.55",\
                 "5.091, 5.209, 5.556, 6.144, 7.036, 8.282, 9.92, 11.98, 14.49, 17.5",\
                 "6.115, 6.24, 6.599, 7.192, 8.083, 9.329, 10.97, 13.03, 15.54, 18.54",\
                 "7.216, 7.352, 7.726, 8.324, 9.216, 10.46, 12.1, 14.16, 16.68, 19.67");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.5504, 0.618, 0.8074, 1.106, 1.537, 2.133, 2.935, 3.984, 5.3, 6.904",\
                 "0.5504, 0.6182, 0.808, 1.106, 1.537, 2.132, 2.933, 3.982, 5.299, 6.901",\
                 "0.5508, 0.6184, 0.8072, 1.107, 1.537, 2.134, 2.933, 3.984, 5.303, 6.901",\
                 "0.5496, 0.6182, 0.8072, 1.107, 1.54, 2.132, 2.935, 3.984, 5.303, 6.904",\
                 "0.5494, 0.617, 0.8072, 1.107, 1.539, 2.134, 2.935, 3.983, 5.303, 6.898",\
                 "0.5456, 0.6136, 0.8046, 1.106, 1.536, 2.133, 2.936, 3.983, 5.302, 6.9",\
                 "0.5476, 0.6152, 0.8052, 1.104, 1.53, 2.126, 2.926, 3.98, 5.296, 6.902",\
                 "0.548, 0.616, 0.806, 1.104, 1.532, 2.126, 2.928, 3.968, 5.286, 6.888",\
                 "0.55, 0.618, 0.808, 1.106, 1.538, 2.128, 2.928, 3.972, 5.288, 6.88",\
                 "0.552, 0.618, 0.808, 1.106, 1.536, 2.13, 2.928, 3.976, 5.294, 6.884");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.478, 0.6124, 1.076, 2.001, 3.476, 5.565, 8.298, 11.75, 15.96, 21",\
                 "0.4792, 0.6104, 1.076, 2.002, 3.476, 5.566, 8.299, 11.75, 15.97, 21.03",\
                 "0.478, 0.6122, 1.076, 2.001, 3.482, 5.564, 8.298, 11.75, 15.96, 20.99",\
                 "0.478, 0.6104, 1.076, 2.003, 3.476, 5.566, 8.298, 11.75, 15.97, 21.02",\
                 "0.4872, 0.6182, 1.079, 2.004, 3.477, 5.563, 8.3, 11.75, 15.97, 20.99",\
                 "0.5116, 0.641, 1.098, 2.012, 3.479, 5.566, 8.299, 11.75, 15.97, 21",\
                 "0.5444, 0.6694, 1.115, 2.024, 3.494, 5.566, 8.308, 11.75, 15.97, 21.05",\
                 "0.588, 0.706, 1.138, 2.034, 3.5, 5.578, 8.31, 11.75, 15.97, 20.99",\
                 "0.64, 0.754, 1.17, 2.048, 3.502, 5.584, 8.32, 11.76, 16, 21",\
                 "0.704, 0.816, 1.21, 2.064, 3.508, 5.582, 8.324, 11.77, 15.98, 21.02");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("2.975, 3.067, 3.306, 3.632, 4.026, 4.499, 5.067, 5.751, 6.569, 7.536",\
                 "3.051, 3.143, 3.382, 3.708, 4.102, 4.575, 5.143, 5.827, 6.645, 7.613",\
                 "3.328, 3.42, 3.66, 3.985, 4.38, 4.852, 5.42, 6.104, 6.923, 7.891",\
                 "3.867, 3.958, 4.198, 4.523, 4.918, 5.391, 5.959, 6.643, 7.461, 8.429",\
                 "4.709, 4.801, 5.04, 5.365, 5.761, 6.234, 6.803, 7.486, 8.305, 9.274",\
                 "5.882, 5.973, 6.213, 6.538, 6.936, 7.409, 7.978, 8.663, 9.48, 10.45",\
                 "7.375, 7.466, 7.708, 8.035, 8.432, 8.905, 9.473, 10.16, 10.98, 11.95",\
                 "9.132, 9.227, 9.472, 9.802, 10.2, 10.68, 11.25, 11.93, 12.75, 13.72",\
                 "11.13, 11.23, 11.48, 11.82, 12.22, 12.71, 13.28, 13.97, 14.79, 15.76",\
                 "13.35, 13.45, 13.72, 14.07, 14.48, 14.97, 15.55, 16.24, 17.06, 18.04");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("1.612, 1.716, 2.044, 2.629, 3.522, 4.769, 6.409, 8.472, 10.98, 14",\
                 "1.677, 1.782, 2.11, 2.695, 3.587, 4.835, 6.472, 8.536, 11.05, 14.06",\
                 "1.906, 2.01, 2.337, 2.922, 3.815, 5.063, 6.7, 8.767, 11.28, 14.3",\
                 "2.337, 2.441, 2.767, 3.351, 4.246, 5.494, 7.132, 9.196, 11.72, 14.72",\
                 "2.949, 3.053, 3.379, 3.964, 4.857, 6.107, 7.75, 9.809, 12.34, 15.34",\
                 "3.699, 3.805, 4.138, 4.723, 5.617, 6.866, 8.509, 10.57, 13.09, 16.08",\
                 "4.548, 4.66, 5, 5.59, 6.485, 7.734, 9.371, 11.44, 13.95, 16.97",\
                 "5.497, 5.613, 5.961, 6.556, 7.452, 8.701, 10.34, 12.41, 14.93, 17.92",\
                 "6.54, 6.662, 7.02, 7.618, 8.515, 9.767, 11.41, 13.47, 15.99, 18.99",\
                 "7.666, 7.794, 8.165, 8.771, 9.67, 10.92, 12.56, 14.62, 17.14, 20.14");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.514, 0.5836, 0.7804, 1.087, 1.523, 2.122, 2.929, 3.979, 5.302, 6.894",\
                 "0.5136, 0.5838, 0.7808, 1.086, 1.523, 2.124, 2.929, 3.979, 5.3, 6.895",\
                 "0.5136, 0.5838, 0.7802, 1.087, 1.523, 2.122, 2.927, 3.981, 5.297, 6.898",\
                 "0.5136, 0.584, 0.781, 1.088, 1.523, 2.123, 2.928, 3.978, 5.302, 6.894",\
                 "0.5156, 0.586, 0.7828, 1.088, 1.524, 2.126, 2.927, 3.98, 5.302, 6.902",\
                 "0.5182, 0.589, 0.785, 1.09, 1.526, 2.122, 2.928, 3.982, 5.302, 6.894",\
                 "0.524, 0.592, 0.788, 1.094, 1.528, 2.128, 2.93, 3.98, 5.296, 6.898",\
                 "0.538, 0.608, 0.8, 1.104, 1.536, 2.134, 2.936, 3.984, 5.298, 6.9",\
                 "0.562, 0.634, 0.83, 1.134, 1.562, 2.156, 2.952, 3.992, 5.306, 6.906",\
                 "0.588, 0.66, 0.86, 1.168, 1.602, 2.196, 2.984, 4.016, 5.322, 6.906");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.007959, 0.01124, 0.02275, 0.04474, 0.07899, 0.127, 0.1903, 0.27, 0.3672, 0.4831");
          values("0.4602, 0.596, 1.068, 1.999, 3.479, 5.559, 8.301, 11.75, 15.96, 21.02",\
                 "0.4614, 0.596, 1.069, 1.998, 3.48, 5.56, 8.298, 11.76, 15.96, 21",\
                 "0.461, 0.5968, 1.069, 2.001, 3.476, 5.564, 8.298, 11.75, 15.97, 21.03",\
                 "0.4628, 0.5978, 1.07, 2.001, 3.48, 5.564, 8.298, 11.75, 15.96, 21",\
                 "0.466, 0.6002, 1.071, 2.002, 3.477, 5.558, 8.302, 11.75, 16, 20.99",\
                 "0.4856, 0.6198, 1.084, 2.004, 3.479, 5.56, 8.298, 11.75, 15.97, 21",\
                 "0.5118, 0.645, 1.103, 2.019, 3.484, 5.56, 8.302, 11.75, 15.97, 20.98",\
                 "0.54, 0.674, 1.13, 2.03, 3.496, 5.57, 8.308, 11.77, 15.96, 20.98",\
                 "0.576, 0.708, 1.156, 2.046, 3.5, 5.576, 8.312, 11.76, 15.96, 20.98",\
                 "0.622, 0.752, 1.192, 2.066, 3.514, 5.584, 8.318, 11.76, 15.97, 21.02");
        }
      }
    }
  }

