/*
 * 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_1) {
    area : 30.732800 ;

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.2036, 0.204, 0.2129, 0.2385, 0.2841, 0.3508, 0.4499, 0.5853, \
                  0.7565, 0.9652");
        }

        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.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.2761, 0.2773, 0.2911, 0.3288, 0.3992, 0.5082, 0.6586, 0.8528, \
                  1.093, 1.381");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.02561, 0.0256, 0.02548, 0.0255, 0.02548, 0.02546, 0.02554, 0.02548, \
                  0.0255, 0.02549");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("-0.02547, -0.02542, -0.02541, -0.02539, -0.02536, -0.02537, -0.02542, \
                  -0.02542, -0.02544, -0.02543");
        }
      }
    }

    pin(Z) {
      capacitance : 0.002673 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 0.2363 ;
      max_transition : 2.6 ;
      min_capacitance : 0.003673 ;
      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.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.2466, 0.2442, 0.2395, 0.2351, 0.2322, 0.2298, 0.2283, 0.227, 0.2261, 0.2253",\
                 "0.2476, 0.2452, 0.2406, 0.2364, 0.2334, 0.2311, 0.2296, 0.2284, 0.2275, 0.2268",\
                 "0.2594, 0.2574, 0.253, 0.2493, 0.2465, 0.2445, 0.2431, 0.242, 0.2412, 0.2406",\
                 "0.2866, 0.2851, 0.282, 0.2794, 0.2777, 0.2765, 0.2756, 0.2748, 0.2742, 0.2738",\
                 "0.3349, 0.3342, 0.3327, 0.3316, 0.3308, 0.3303, 0.33, 0.3297, 0.3294, 0.3292",\
                 "0.4107, 0.4106, 0.4098, 0.4093, 0.4091, 0.4089, 0.4088, 0.4088, 0.4087, 0.4086",\
                 "0.5152, 0.5152, 0.5148, 0.5146, 0.5146, 0.5148, 0.5147, 0.5147, 0.5147, 0.5147",\
                 "0.6479, 0.6477, 0.6475, 0.6475, 0.6475, 0.6476, 0.6476, 0.6476, 0.6476, 0.6476",\
                 "0.8089, 0.8088, 0.8089, 0.8087, 0.8086, 0.8087, 0.8087, 0.8088, 0.8088, 0.8088",\
                 "1, 0.9998, 0.9998, 0.9996, 0.9995, 0.9996, 0.9997, 0.9996, 0.9996, 0.9996");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.1293, 0.1289, 0.1285, 0.1283, 0.1283, 0.1281, 0.1282, 0.1291, 0.1322, 0.1334",\
                 "0.1296, 0.1293, 0.1285, 0.1288, 0.1288, 0.1288, 0.1294, 0.1295, 0.131, 0.134",\
                 "0.1395, 0.139, 0.1384, 0.1387, 0.1387, 0.1387, 0.1385, 0.1395, 0.1421, 0.145",\
                 "0.171, 0.171, 0.1707, 0.1705, 0.1708, 0.1712, 0.1715, 0.1734, 0.1752, 0.1763",\
                 "0.2335, 0.2334, 0.2332, 0.2341, 0.2343, 0.2339, 0.234, 0.2361, 0.2385, 0.239",\
                 "0.3313, 0.331, 0.3308, 0.3307, 0.3326, 0.3328, 0.3326, 0.3331, 0.3364, 0.3369",\
                 "0.4658, 0.466, 0.4659, 0.4656, 0.4659, 0.4683, 0.4676, 0.468, 0.4695, 0.4722",\
                 "0.6396, 0.6396, 0.6396, 0.6395, 0.6392, 0.6402, 0.6432, 0.6438, 0.6455, 0.6449",\
                 "0.8548, 0.8548, 0.855, 0.8554, 0.8547, 0.8552, 0.8566, 0.8601, 0.8594, 0.8616",\
                 "1.113, 1.113, 1.114, 1.114, 1.114, 1.113, 1.113, 1.116, 1.121, 1.121");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.4055, 0.4008, 0.3898, 0.3801, 0.3729, 0.3682, 0.3648, 0.3623, 0.3607, 0.3593",\
                 "0.4051, 0.4004, 0.3894, 0.3796, 0.3726, 0.3677, 0.3644, 0.3619, 0.3601, 0.3589",\
                 "0.4086, 0.4036, 0.3925, 0.3828, 0.3756, 0.3707, 0.3674, 0.365, 0.3633, 0.362",\
                 "0.4271, 0.4219, 0.4101, 0.3993, 0.3917, 0.3861, 0.3825, 0.3799, 0.378, 0.3766",\
                 "0.4734, 0.4674, 0.4532, 0.4399, 0.4295, 0.4222, 0.4172, 0.4138, 0.4112, 0.4093",\
                 "0.5482, 0.5415, 0.5246, 0.5069, 0.4927, 0.4824, 0.4749, 0.4696, 0.4657, 0.4629",\
                 "0.65, 0.6425, 0.6226, 0.6007, 0.5823, 0.568, 0.5575, 0.5498, 0.5441, 0.54",\
                 "0.779, 0.7701, 0.7475, 0.7214, 0.6983, 0.6802, 0.666, 0.6555, 0.6477, 0.6418",\
                 "0.9353, 0.9262, 0.9009, 0.87, 0.8425, 0.8201, 0.802, 0.7883, 0.7777, 0.7699",\
                 "1.121, 1.111, 1.083, 1.049, 1.016, 0.9887, 0.9666, 0.9493, 0.9361, 0.9259");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.1826, 0.1798, 0.1759, 0.1731, 0.1718, 0.1715, 0.1722, 0.1733, 0.1743, 0.1765",\
                 "0.1822, 0.1796, 0.1755, 0.1726, 0.1716, 0.1712, 0.1714, 0.1722, 0.1749, 0.1765",\
                 "0.1837, 0.1814, 0.1773, 0.174, 0.1728, 0.1723, 0.1724, 0.1737, 0.176, 0.1776",\
                 "0.1999, 0.1971, 0.1914, 0.1864, 0.1839, 0.1823, 0.1815, 0.1823, 0.1853, 0.187",\
                 "0.2382, 0.2345, 0.2274, 0.2194, 0.2138, 0.2101, 0.2084, 0.2084, 0.2095, 0.2117",\
                 "0.2981, 0.2932, 0.2826, 0.2725, 0.2645, 0.2573, 0.2527, 0.2514, 0.253, 0.2524",\
                 "0.3815, 0.3761, 0.3631, 0.3486, 0.3381, 0.3291, 0.3223, 0.3173, 0.3162, 0.3168",\
                 "0.4897, 0.483, 0.4682, 0.4505, 0.4349, 0.4235, 0.4147, 0.4091, 0.4031, 0.4015",\
                 "0.6242, 0.6166, 0.5981, 0.5786, 0.5583, 0.5424, 0.5327, 0.5243, 0.517, 0.512",\
                 "0.7845, 0.7757, 0.7555, 0.7321, 0.7103, 0.6904, 0.6737, 0.6628, 0.6578, 0.649");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.1133, 0.1177, 0.1351, 0.1718, 0.2235, 0.2849, 0.355, 0.4337, \
                  0.5208, 0.6162");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0.1619, 0.1664, 0.1848, 0.2218, 0.2732, 0.3351, 0.4068, 0.4874, \
                  0.5794, 0.6812");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          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.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.119, 0.1333, 0.1733, 0.234, 0.3144, 0.416, 0.5432, 0.7006, 0.8919, 1.12",\
                 "0.1224, 0.1366, 0.1765, 0.2372, 0.3177, 0.4192, 0.5465, 0.7039, 0.8951, 1.123",\
                 "0.1359, 0.15, 0.1897, 0.2503, 0.3306, 0.4321, 0.5594, 0.7168, 0.908, 1.136",\
                 "0.156, 0.1703, 0.21, 0.2705, 0.3506, 0.4521, 0.5794, 0.7369, 0.9281, 1.156",\
                 "0.1697, 0.1849, 0.2267, 0.288, 0.368, 0.4694, 0.5967, 0.7542, 0.9455, 1.173",\
                 "0.175, 0.1908, 0.2328, 0.2934, 0.3727, 0.4736, 0.6006, 0.758, 0.9494, 1.177",\
                 "0.1716, 0.1877, 0.2299, 0.2903, 0.3685, 0.4685, 0.5949, 0.752, 0.9432, 1.171",\
                 "0.1593, 0.176, 0.2183, 0.2782, 0.356, 0.4555, 0.5816, 0.7386, 0.9296, 1.157",\
                 "0.1362, 0.1533, 0.1969, 0.257, 0.3347, 0.4341, 0.5601, 0.717, 0.9081, 1.136",\
                 "0.1023, 0.1204, 0.1651, 0.2257, 0.3035, 0.4028, 0.5287, 0.6857, 0.8768, 1.105");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.1019, 0.1164, 0.1596, 0.2321, 0.3392, 0.4882, 0.6843, 0.9313, 1.233, 1.593",\
                 "0.1045, 0.119, 0.1623, 0.2347, 0.3418, 0.4909, 0.687, 0.9342, 1.235, 1.595",\
                 "0.1148, 0.1294, 0.1728, 0.2452, 0.3524, 0.5015, 0.6976, 0.9447, 1.246, 1.606",\
                 "0.1271, 0.1429, 0.1878, 0.261, 0.3684, 0.5174, 0.7133, 0.9605, 1.263, 1.622",\
                 "0.1341, 0.1521, 0.2004, 0.2753, 0.3834, 0.5326, 0.7287, 0.9756, 1.278, 1.637",\
                 "0.1321, 0.1532, 0.2074, 0.2861, 0.3957, 0.5455, 0.7415, 0.9884, 1.29, 1.649",\
                 "0.1192, 0.1439, 0.2059, 0.2902, 0.4035, 0.5549, 0.7514, 0.9983, 1.3, 1.659",\
                 "0.09485, 0.1235, 0.1945, 0.2861, 0.4038, 0.5591, 0.7578, 1.005, 1.307, 1.666",\
                 "0.0583, 0.0914, 0.1718, 0.2728, 0.3957, 0.5552, 0.7581, 1.008, 1.31, 1.669",\
                 "0.0083, 0.0462, 0.1362, 0.2485, 0.3778, 0.5417, 0.7495, 1.004, 1.31, 1.669");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.0674, 0.08116, 0.1237, 0.1953, 0.2974, 0.4396, 0.6336, 0.8841, 1.197, 1.57",\
                 "0.06712, 0.08112, 0.1235, 0.1952, 0.2971, 0.4396, 0.6336, 0.8848, 1.196, 1.57",\
                 "0.0658, 0.07966, 0.1224, 0.1945, 0.2965, 0.4392, 0.6333, 0.8838, 1.197, 1.57",\
                 "0.06578, 0.07904, 0.1208, 0.1927, 0.2953, 0.4381, 0.633, 0.8839, 1.196, 1.57",\
                 "0.06968, 0.08318, 0.1245, 0.1925, 0.2942, 0.4374, 0.6325, 0.8845, 1.195, 1.571",\
                 "0.0724, 0.08526, 0.1235, 0.1907, 0.2918, 0.4349, 0.63, 0.8831, 1.195, 1.57",\
                 "0.07648, 0.08722, 0.1233, 0.1884, 0.2886, 0.4322, 0.6278, 0.8806, 1.194, 1.57",\
                 "0.08, 0.09, 0.1238, 0.1876, 0.2868, 0.4302, 0.6266, 0.8796, 1.192, 1.567",\
                 "0.0844, 0.0942, 0.126, 0.1882, 0.2866, 0.4294, 0.6268, 0.8796, 1.192, 1.566",\
                 "0.0902, 0.0994, 0.1282, 0.189, 0.2866, 0.4296, 0.6268, 0.8802, 1.193, 1.566");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.06602, 0.08282, 0.1407, 0.2511, 0.4297, 0.6863, 1.026, 1.454, 1.979, 2.604",\
                 "0.06594, 0.08282, 0.1406, 0.2508, 0.4295, 0.6871, 1.027, 1.456, 1.976, 2.598",\
                 "0.06668, 0.08334, 0.1409, 0.2511, 0.4297, 0.6867, 1.027, 1.455, 1.977, 2.603",\
                 "0.0718, 0.08804, 0.1437, 0.2522, 0.4296, 0.6856, 1.025, 1.454, 1.979, 2.604",\
                 "0.08328, 0.09826, 0.1505, 0.2559, 0.4315, 0.6874, 1.026, 1.453, 1.979, 2.604",\
                 "0.09876, 0.1135, 0.1633, 0.2638, 0.435, 0.6877, 1.025, 1.453, 1.975, 2.599",\
                 "0.1165, 0.1324, 0.1812, 0.277, 0.4445, 0.6932, 1.027, 1.455, 1.975, 2.597",\
                 "0.137, 0.1528, 0.203, 0.2932, 0.4588, 0.7058, 1.035, 1.456, 1.976, 2.596",\
                 "0.16, 0.1778, 0.2278, 0.3144, 0.4742, 0.7218, 1.051, 1.466, 1.979, 2.597",\
                 "0.1872, 0.2026, 0.2546, 0.341, 0.4922, 0.7392, 1.074, 1.487, 1.993, 2.603");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.1994, 0.2133, 0.253, 0.3135, 0.394, 0.4956, 0.6226, 0.7797, 0.9706, 1.198",\
                 "0.2028, 0.2167, 0.2563, 0.3169, 0.3973, 0.499, 0.6259, 0.783, 0.974, 1.202",\
                 "0.2181, 0.232, 0.2716, 0.3322, 0.4126, 0.5142, 0.6412, 0.7983, 0.9892, 1.217",\
                 "0.2538, 0.2676, 0.307, 0.3673, 0.4476, 0.5491, 0.676, 0.8331, 1.024, 1.251",\
                 "0.3114, 0.3254, 0.3647, 0.4248, 0.5052, 0.6064, 0.7331, 0.8899, 1.081, 1.308",\
                 "0.3844, 0.399, 0.4401, 0.5014, 0.5821, 0.6832, 0.81, 0.9663, 1.157, 1.384",\
                 "0.4689, 0.4846, 0.5284, 0.5925, 0.6749, 0.7775, 0.9042, 1.06, 1.25, 1.477",\
                 "0.5638, 0.5808, 0.6277, 0.6956, 0.7821, 0.8881, 1.016, 1.173, 1.362, 1.588",\
                 "0.669, 0.6873, 0.7375, 0.8097, 0.8999, 1.011, 1.144, 1.303, 1.493, 1.718",\
                 "0.7848, 0.8044, 0.8582, 0.9345, 1.029, 1.145, 1.284, 1.449, 1.642, 1.868");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.1846, 0.1982, 0.2404, 0.312, 0.4187, 0.5676, 0.7635, 1.011, 1.313, 1.672",\
                 "0.187, 0.2008, 0.2428, 0.3144, 0.4211, 0.57, 0.7661, 1.013, 1.315, 1.675",\
                 "0.1968, 0.2106, 0.2526, 0.3241, 0.4307, 0.5796, 0.7756, 1.023, 1.324, 1.684",\
                 "0.2184, 0.232, 0.2734, 0.3442, 0.4504, 0.5988, 0.7946, 1.041, 1.343, 1.702",\
                 "0.2444, 0.2581, 0.2994, 0.3697, 0.4748, 0.6223, 0.8175, 1.064, 1.364, 1.724",\
                 "0.2657, 0.28, 0.3222, 0.3927, 0.4971, 0.6436, 0.8378, 1.083, 1.385, 1.744",\
                 "0.2792, 0.2945, 0.3385, 0.4104, 0.5153, 0.6609, 0.8541, 1.099, 1.399, 1.758",\
                 "0.2829, 0.2995, 0.346, 0.4199, 0.5266, 0.6733, 0.866, 1.11, 1.409, 1.767",\
                 "0.2771, 0.2949, 0.3438, 0.4198, 0.5282, 0.6773, 0.8721, 1.116, 1.414, 1.771",\
                 "0.2604, 0.2789, 0.3311, 0.4095, 0.5205, 0.6714, 0.8688, 1.115, 1.414, 1.77");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.0761, 0.09056, 0.1315, 0.2009, 0.3015, 0.4427, 0.6342, 0.8851, 1.197, 1.571",\
                 "0.0762, 0.09048, 0.1316, 0.201, 0.3016, 0.4421, 0.6342, 0.885, 1.197, 1.571",\
                 "0.0764, 0.09056, 0.1315, 0.2011, 0.3019, 0.4425, 0.6343, 0.8853, 1.196, 1.571",\
                 "0.07666, 0.0907, 0.1321, 0.2017, 0.3022, 0.443, 0.6348, 0.8854, 1.196, 1.571",\
                 "0.08142, 0.09536, 0.1358, 0.2046, 0.3043, 0.4434, 0.6348, 0.8856, 1.197, 1.571",\
                 "0.09126, 0.1056, 0.1457, 0.212, 0.3103, 0.4473, 0.6372, 0.8852, 1.197, 1.57",\
                 "0.1046, 0.1194, 0.161, 0.2266, 0.3216, 0.4554, 0.6414, 0.888, 1.198, 1.573",\
                 "0.1182, 0.1348, 0.1784, 0.2454, 0.3422, 0.472, 0.6512, 0.8918, 1.2, 1.571",\
                 "0.1318, 0.1508, 0.1976, 0.2656, 0.3648, 0.4998, 0.6752, 0.9064, 1.204, 1.572",\
                 "0.147, 0.1668, 0.2168, 0.2886, 0.3896, 0.5286, 0.7086, 0.9384, 1.226, 1.582");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03781, 0.1003, 0.2197, 0.4057, 0.6666, 1.01, 1.443, 1.971, 2.6");
          index_2("0.003673, 0.005278, 0.01092, 0.02168, 0.03845, 0.06198, 0.09295, 0.132, 0.1796, 0.2363");
          values("0.0689, 0.08544, 0.1423, 0.2519, 0.4297, 0.6856, 1.025, 1.453, 1.979, 2.604",\
                 "0.06904, 0.08546, 0.1425, 0.2519, 0.4299, 0.686, 1.027, 1.454, 1.978, 2.603",\
                 "0.0692, 0.08516, 0.1425, 0.2519, 0.43, 0.6865, 1.026, 1.455, 1.978, 2.604",\
                 "0.06886, 0.08576, 0.1429, 0.2522, 0.43, 0.6871, 1.026, 1.454, 1.978, 2.598",\
                 "0.07308, 0.08932, 0.1455, 0.2538, 0.4303, 0.6861, 1.027, 1.453, 1.975, 2.602",\
                 "0.081, 0.09688, 0.151, 0.2576, 0.4318, 0.6864, 1.026, 1.453, 1.979, 2.603",\
                 "0.0887, 0.1064, 0.1594, 0.2657, 0.437, 0.688, 1.026, 1.452, 1.975, 2.602",\
                 "0.0994, 0.1164, 0.1696, 0.2758, 0.4478, 0.696, 1.028, 1.454, 1.977, 2.597",\
                 "0.1094, 0.1276, 0.1808, 0.2868, 0.4602, 0.7094, 1.04, 1.459, 1.975, 2.595",\
                 "0.1198, 0.14, 0.1954, 0.2982, 0.4726, 0.726, 1.06, 1.475, 1.987, 2.599");
        }
      }
    }
  }

