/*
 * 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_2) {
    area : 37.318400 ;

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

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

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

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "2.67057e-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.007644 ;
      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.03391, 0.03364, 0.03312, 0.03265, 0.03231, 0.03206, 0.03188, \
                  0.03176, 0.03165, 0.03");
        }

        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.02336, 0.02315, 0.02293, 0.02283, 0.02275, 0.02266, 0.02258, \
                  0.02252, 0.02245, 0.02131");
        }

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

    pin(I) {
      capacitance : 0.004187 ;
      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.01696, 0.01676, 0.01646, 0.01626, 0.01618, 0.01613, 0.01608, \
                  0.01606, 0.01603, 0.01543");
        }

        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.003571, 0.003523, 0.003376, 0.003209, 0.003056, 0.002957, 0.002886, \
                  0.002834, 0.002797, 0.002975");
        }
      }
    }

    pin(ZN) {
      capacitance : 0.003734 ;
      direction : output ;
      function : "(!I)" ;
      max_capacitance : 0.324 ;
      max_transition : 21 ;
      min_capacitance : 0.004734 ;
      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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.02796, 0.02796, 0.02796, 0.02795, 0.02793, 0.02794, 0.02794, 0.02795, 0.02795, 0.02795",\
                 "0.02812, 0.02813, 0.02813, 0.02811, 0.0281, 0.0281, 0.02811, 0.02811, 0.02812, 0.02812",\
                 "0.02849, 0.0285, 0.02849, 0.02848, 0.02847, 0.02848, 0.02848, 0.02848, 0.02849, 0.02849",\
                 "0.02871, 0.02872, 0.02871, 0.02869, 0.0287, 0.0287, 0.0287, 0.0287, 0.0287, 0.02871",\
                 "0.02887, 0.02884, 0.02885, 0.02884, 0.02883, 0.02883, 0.02884, 0.02884, 0.02884, 0.02885",\
                 "0.02901, 0.029, 0.02899, 0.02898, 0.02897, 0.02899, 0.02899, 0.029, 0.029, 0.029",\
                 "0.02915, 0.02914, 0.02914, 0.02915, 0.02915, 0.02915, 0.02914, 0.02913, 0.02913, 0.02912",\
                 "0.0293, 0.02932, 0.02932, 0.02929, 0.0293, 0.02931, 0.02931, 0.02932, 0.02931, 0.02925",\
                 "0.02949, 0.02949, 0.02947, 0.02948, 0.02946, 0.02947, 0.02947, 0.02947, 0.02936, 0.02887",\
                 "0.03025, 0.03026, 0.03025, 0.03025, 0.03022, 0.0302, 0.03005, 0.02935, 0.0283, 0.02749");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.01841, 0.0184, 0.01842, 0.01844, 0.01847, 0.01851, 0.01859, 0.01916, 0.03047, 0.09984",\
                 "0.01832, 0.01833, 0.01831, 0.01833, 0.01839, 0.01841, 0.01851, 0.01898, 0.03116, 0.1021",\
                 "0.01809, 0.01808, 0.0181, 0.01811, 0.01813, 0.01827, 0.01825, 0.01895, 0.03321, 0.1095",\
                 "0.01777, 0.01778, 0.0178, 0.01779, 0.0179, 0.01788, 0.01799, 0.01908, 0.0383, 0.125",\
                 "0.01751, 0.01752, 0.01752, 0.01757, 0.01759, 0.0176, 0.01778, 0.01994, 0.0493, 0.149",\
                 "0.01732, 0.01731, 0.01731, 0.01737, 0.01745, 0.01744, 0.01761, 0.0227, 0.07122, 0.1784",\
                 "0.01718, 0.01718, 0.01717, 0.01717, 0.01734, 0.01732, 0.01798, 0.03249, 0.1078, 0.2063",\
                 "0.01706, 0.01707, 0.0171, 0.01709, 0.0171, 0.01739, 0.0208, 0.06259, 0.1502, 0.2225",\
                 "0.01699, 0.01699, 0.01698, 0.01702, 0.01701, 0.01805, 0.04327, 0.1135, 0.172, 0.2136",\
                 "0.0173, 0.01733, 0.01732, 0.01731, 0.01848, 0.04599, 0.09296, 0.1255, 0.1473, 0.1623");
        }
      }

      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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.04532, 0.04544, 0.04571, 0.04598, 0.04616, 0.04628, 0.04636, 0.04641, 0.04644, 0.04646",\
                 "0.04527, 0.04538, 0.04566, 0.04593, 0.04612, 0.04624, 0.04632, 0.04636, 0.04639, 0.04642",\
                 "0.04507, 0.04517, 0.04546, 0.04573, 0.04592, 0.04603, 0.04611, 0.04616, 0.04619, 0.04621",\
                 "0.04478, 0.0449, 0.04517, 0.04545, 0.04564, 0.04574, 0.04583, 0.04587, 0.04591, 0.04593",\
                 "0.04456, 0.04467, 0.04494, 0.04521, 0.04539, 0.04552, 0.0456, 0.04564, 0.04568, 0.0457",\
                 "0.04438, 0.0445, 0.04476, 0.04504, 0.04522, 0.04535, 0.04543, 0.04547, 0.04551, 0.04552",\
                 "0.04427, 0.04438, 0.04464, 0.04491, 0.0451, 0.04522, 0.0453, 0.04535, 0.04538, 0.04538",\
                 "0.04415, 0.04426, 0.04452, 0.0448, 0.04499, 0.04512, 0.04519, 0.04525, 0.04526, 0.04511",\
                 "0.04407, 0.04419, 0.04444, 0.04471, 0.0449, 0.04502, 0.04509, 0.04509, 0.04473, 0.04386",\
                 "0.04412, 0.04424, 0.04449, 0.04474, 0.04488, 0.04477, 0.04396, 0.04289, 0.04211, 0.04157");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.04, 0.04011, 0.04036, 0.04063, 0.04095, 0.04116, 0.04125, 0.04249, 0.06078, 0.1468",\
                 "0.03983, 0.03993, 0.04018, 0.04051, 0.04079, 0.04103, 0.04112, 0.04228, 0.06184, 0.149",\
                 "0.03952, 0.03963, 0.03988, 0.04015, 0.04047, 0.04061, 0.04082, 0.04257, 0.0654, 0.1579",\
                 "0.0393, 0.0394, 0.03964, 0.03994, 0.04026, 0.04047, 0.04061, 0.04312, 0.07414, 0.1756",\
                 "0.03914, 0.03922, 0.03948, 0.03979, 0.04001, 0.04021, 0.04047, 0.04581, 0.09399, 0.2016",\
                 "0.03902, 0.0391, 0.03937, 0.03964, 0.03988, 0.04009, 0.0409, 0.05499, 0.1295, 0.2287",\
                 "0.0389, 0.03899, 0.03922, 0.03948, 0.03982, 0.03997, 0.04347, 0.08494, 0.1728, 0.2454",\
                 "0.0388, 0.0389, 0.0391, 0.03943, 0.03969, 0.04092, 0.06711, 0.1375, 0.1951, 0.2359",\
                 "0.03873, 0.03882, 0.03899, 0.03926, 0.04131, 0.07281, 0.1165, 0.1456, 0.1649, 0.1782",\
                 "0.03642, 0.03663, 0.03887, 0.04079, 0.0418, 0.04232, 0.04262, 0.04279, 0.04291, 0.04298");
        }
      }

      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.497, 0.588, 0.862, 1.4, 2.183, 3.155, 4.315, 5.651, 7.189, 8.917");
        }

        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.206, 1.276, 1.549, 2.084, 2.931, 4.059, 5.405, 6.939, 8.689, \
                  10.64");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("1.987, 2.08, 2.319, 2.642, 3.036, 3.512, 4.084, 4.773, 5.597, 6.572",\
                 "2.071, 2.165, 2.403, 2.726, 3.12, 3.596, 4.169, 4.857, 5.681, 6.656",\
                 "2.324, 2.417, 2.655, 2.978, 3.373, 3.849, 4.422, 5.11, 5.934, 6.909",\
                 "2.746, 2.84, 3.078, 3.399, 3.794, 4.27, 4.843, 5.531, 6.355, 7.33",\
                 "3.328, 3.42, 3.659, 3.981, 4.376, 4.852, 5.424, 6.113, 6.937, 7.912",\
                 "3.971, 4.064, 4.3, 4.621, 5.015, 5.49, 6.062, 6.751, 7.575, 8.55",\
                 "4.686, 4.779, 5.015, 5.337, 5.73, 6.202, 6.774, 7.46, 8.284, 9.258",\
                 "5.469, 5.562, 5.799, 6.121, 6.514, 6.988, 7.559, 8.245, 9.066, 10.04",\
                 "6.324, 6.417, 6.653, 6.976, 7.369, 7.844, 8.415, 9.102, 9.923, 10.9",\
                 "7.249, 7.342, 7.579, 7.901, 8.295, 8.77, 9.341, 10.03, 10.85, 11.82");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("1.017, 1.122, 1.446, 2.025, 2.915, 4.163, 5.806, 7.878, 10.4, 13.4",\
                 "1.08, 1.184, 1.509, 2.088, 2.978, 4.226, 5.868, 7.94, 10.46, 13.47",\
                 "1.308, 1.412, 1.737, 2.315, 3.206, 4.453, 6.097, 8.168, 10.7, 13.7",\
                 "1.741, 1.846, 2.17, 2.748, 3.638, 4.886, 6.53, 8.6, 11.12, 14.13",\
                 "2.35, 2.456, 2.784, 3.363, 4.253, 5.501, 7.144, 9.217, 11.73, 14.74",\
                 "3.054, 3.164, 3.497, 4.082, 4.974, 6.221, 7.863, 9.931, 12.46, 15.47",\
                 "3.846, 3.96, 4.298, 4.884, 5.779, 7.031, 8.671, 10.74, 13.27, 16.28",\
                 "4.721, 4.84, 5.186, 5.774, 6.669, 7.92, 9.564, 11.63, 14.15, 17.17",\
                 "5.671, 5.799, 6.155, 6.748, 7.64, 8.891, 10.54, 12.61, 15.13, 18.13",\
                 "6.693, 6.831, 7.203, 7.799, 8.692, 9.941, 11.59, 13.65, 16.18, 19.19");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.482, 0.5506, 0.743, 1.055, 1.499, 2.107, 2.92, 3.976, 5.305, 6.909",\
                 "0.4822, 0.5506, 0.7428, 1.054, 1.499, 2.108, 2.92, 3.976, 5.303, 6.909",\
                 "0.4824, 0.5514, 0.7434, 1.055, 1.499, 2.108, 2.92, 3.977, 5.305, 6.909",\
                 "0.4818, 0.5502, 0.7436, 1.054, 1.499, 2.108, 2.92, 3.978, 5.305, 6.909",\
                 "0.481, 0.5498, 0.742, 1.055, 1.498, 2.107, 2.919, 3.976, 5.305, 6.908",\
                 "0.476, 0.5442, 0.7368, 1.05, 1.495, 2.103, 2.92, 3.977, 5.306, 6.914",\
                 "0.4782, 0.546, 0.7392, 1.046, 1.488, 2.094, 2.908, 3.972, 5.298, 6.914",\
                 "0.48, 0.548, 0.74, 1.048, 1.49, 2.096, 2.91, 3.96, 5.284, 6.898",\
                 "0.48, 0.55, 0.742, 1.05, 1.494, 2.1, 2.912, 3.968, 5.286, 6.886",\
                 "0.48, 0.548, 0.742, 1.052, 1.494, 2.1, 2.914, 3.968, 5.288, 6.892");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.4287, 0.5616, 1.027, 1.955, 3.437, 5.524, 8.293, 11.77, 15.96, 21",\
                 "0.4296, 0.5616, 1.027, 1.955, 3.442, 5.526, 8.271, 11.73, 15.96, 21",\
                 "0.429, 0.5614, 1.026, 1.955, 3.437, 5.524, 8.29, 11.76, 15.96, 21",\
                 "0.4284, 0.5616, 1.027, 1.955, 3.437, 5.525, 8.291, 11.73, 15.96, 21",\
                 "0.4398, 0.5716, 1.034, 1.959, 3.436, 5.524, 8.274, 11.73, 15.96, 21.01",\
                 "0.4596, 0.5896, 1.049, 1.972, 3.442, 5.532, 8.273, 11.74, 15.98, 20.99",\
                 "0.4874, 0.6136, 1.063, 1.978, 3.458, 5.536, 8.278, 11.75, 15.99, 20.99",\
                 "0.526, 0.646, 1.08, 1.984, 3.458, 5.548, 8.288, 11.74, 15.96, 21.04",\
                 "0.576, 0.69, 1.108, 1.994, 3.466, 5.552, 8.298, 11.75, 15.98, 21.03",\
                 "0.636, 0.748, 1.144, 2.006, 3.464, 5.548, 8.296, 11.76, 15.98, 21.03");
        }
      }

      timing() {
        related_pin : "I" ;
        timing_sense : negative_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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("3.631, 3.723, 3.96, 4.282, 4.675, 5.151, 5.723, 6.412, 7.236, 8.21",\
                 "3.7, 3.792, 4.028, 4.35, 4.744, 5.219, 5.792, 6.48, 7.304, 8.279",\
                 "3.937, 4.029, 4.266, 4.588, 4.982, 5.457, 6.029, 6.718, 7.542, 8.517",\
                 "4.366, 4.459, 4.695, 5.016, 5.411, 5.886, 6.458, 7.147, 7.971, 8.946",\
                 "4.904, 4.996, 5.233, 5.555, 5.948, 6.424, 6.996, 7.684, 8.509, 9.483",\
                 "5.528, 5.62, 5.856, 6.178, 6.571, 7.047, 7.62, 8.308, 9.132, 10.11",\
                 "6.233, 6.325, 6.561, 6.882, 7.278, 7.752, 8.325, 9.014, 9.838, 10.81",\
                 "7.016, 7.109, 7.344, 7.666, 8.061, 8.536, 9.108, 9.798, 10.62, 11.6",\
                 "7.878, 7.971, 8.207, 8.528, 8.924, 9.397, 9.97, 10.66, 11.48, 12.46",\
                 "8.816, 8.91, 9.145, 9.468, 9.864, 10.34, 10.91, 11.6, 12.42, 13.4");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("2.585, 2.691, 3.019, 3.605, 4.501, 5.753, 7.399, 9.468, 12, 15.01",\
                 "2.657, 2.762, 3.091, 3.676, 4.572, 5.823, 7.469, 9.544, 12.07, 15.08",\
                 "2.927, 3.032, 3.36, 3.946, 4.842, 6.094, 7.74, 9.81, 12.34, 15.35",\
                 "3.465, 3.57, 3.899, 4.484, 5.381, 6.632, 8.277, 10.35, 12.88, 15.87",\
                 "4.311, 4.416, 4.744, 5.33, 6.226, 7.477, 9.124, 11.19, 13.72, 16.74",\
                 "5.451, 5.556, 5.884, 6.47, 7.367, 8.617, 10.26, 12.34, 14.86, 17.87",\
                 "6.822, 6.926, 7.254, 7.84, 8.736, 9.987, 11.63, 13.71, 16.23, 19.23",\
                 "8.401, 8.506, 8.834, 9.419, 10.32, 11.57, 13.21, 15.28, 17.8, 20.81",\
                 "10.19, 10.3, 10.63, 11.21, 12.11, 13.36, 15, 17.07, 19.6, 22.62",\
                 "12.21, 12.31, 12.64, 13.22, 14.12, 15.37, 17.02, 19.08, 21.61, 24.62");
        }

        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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.4506, 0.5218, 0.7202, 1.038, 1.486, 2.099, 2.915, 3.972, 5.303, 6.906",\
                 "0.4506, 0.5226, 0.7204, 1.038, 1.488, 2.099, 2.915, 3.974, 5.303, 6.908",\
                 "0.4512, 0.5226, 0.7204, 1.038, 1.486, 2.099, 2.914, 3.972, 5.298, 6.908",\
                 "0.4512, 0.5216, 0.72, 1.038, 1.485, 2.099, 2.914, 3.972, 5.298, 6.908",\
                 "0.4506, 0.5218, 0.7204, 1.038, 1.488, 2.1, 2.914, 3.972, 5.303, 6.907",\
                 "0.4504, 0.522, 0.72, 1.038, 1.487, 2.098, 2.914, 3.974, 5.302, 6.908",\
                 "0.45, 0.52, 0.722, 1.04, 1.486, 2.1, 2.914, 3.972, 5.304, 6.91",\
                 "0.452, 0.522, 0.722, 1.038, 1.486, 2.098, 2.914, 3.972, 5.302, 6.908",\
                 "0.452, 0.522, 0.72, 1.038, 1.488, 2.1, 2.914, 3.976, 5.298, 6.904",\
                 "0.452, 0.522, 0.722, 1.038, 1.486, 2.1, 2.918, 3.976, 5.298, 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.004734, 0.006937, 0.01467, 0.02944, 0.05246, 0.08475, 0.1272, 0.1808, 0.2461, 0.324");
          values("0.4144, 0.5484, 1.021, 1.954, 3.436, 5.532, 8.276, 11.74, 15.96, 21",\
                 "0.413, 0.5486, 1.022, 1.956, 3.436, 5.53, 8.275, 11.76, 16, 21",\
                 "0.4132, 0.5492, 1.022, 1.953, 3.436, 5.523, 8.276, 11.74, 16, 21",\
                 "0.413, 0.5488, 1.02, 1.957, 3.436, 5.524, 8.276, 11.74, 15.96, 21",\
                 "0.413, 0.5492, 1.022, 1.955, 3.436, 5.527, 8.276, 11.74, 15.97, 21.07",\
                 "0.4134, 0.5498, 1.022, 1.957, 3.437, 5.526, 8.272, 11.77, 15.96, 21",\
                 "0.414, 0.55, 1.022, 1.954, 3.434, 5.526, 8.276, 11.75, 15.96, 20.98",\
                 "0.414, 0.552, 1.022, 1.956, 3.436, 5.522, 8.272, 11.74, 15.95, 20.99",\
                 "0.416, 0.554, 1.022, 1.954, 3.438, 5.522, 8.27, 11.73, 15.98, 20.99",\
                 "0.418, 0.554, 1.024, 1.956, 3.436, 5.524, 8.268, 11.74, 15.98, 21");
        }
      }
    }
  }

