/*
 * 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.0008154" ;
    }

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

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

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

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

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

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

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

      internal_power() {
        when : "!I" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.08364, 0.08217, 0.08256, 0.08704, 0.09562, 0.1085, 0.1262, 0.1493, \
                  0.1784, 0.2151");
        }

        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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.2521, 0.2503, 0.2504, 0.2553, 0.2671, 0.287, 0.3158, 0.3546, \
                  0.4044, 0.4661");
        }

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

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

      internal_power() {
        when : "!EN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.1015, 0.1013, 0.1011, 0.1011, 0.1013, 0.1012, 0.1013, 0.1012, \
                  0.1012, 0.1012");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.1011, -0.1008, -0.1007, -0.1008, -0.1011, -0.1011, -0.101, \
                  -0.1011, -0.1011, -0.1011");
        }
      }
    }

    pin(Z) {
      capacitance : 0.0338 ;
      direction : output ;
      function : "I" ;
      max_capacitance : 5.444 ;
      max_transition : 15.6 ;
      min_capacitance : 0.0348 ;
      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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.5114, 0.5113, 0.5114, 0.5113, 0.5112, 0.5112, 0.5112, 0.5113, 0.5114, 0.5114",\
                 "0.5116, 0.5115, 0.5116, 0.5115, 0.5114, 0.5114, 0.5114, 0.5115, 0.5116, 0.5116",\
                 "0.5148, 0.5148, 0.5148, 0.5147, 0.5146, 0.5146, 0.5146, 0.5147, 0.5148, 0.5147",\
                 "0.5218, 0.5217, 0.5217, 0.5214, 0.5213, 0.5213, 0.5213, 0.5214, 0.5215, 0.5215",\
                 "0.5335, 0.5334, 0.5335, 0.533, 0.5329, 0.5329, 0.533, 0.533, 0.5331, 0.533",\
                 "0.5504, 0.5503, 0.5503, 0.5502, 0.5501, 0.55, 0.55, 0.5501, 0.5501, 0.5499",\
                 "0.5729, 0.5728, 0.5728, 0.5728, 0.5728, 0.5728, 0.5728, 0.5727, 0.5727, 0.5724",\
                 "0.6018, 0.6017, 0.6016, 0.6016, 0.6015, 0.6014, 0.6016, 0.6016, 0.6014, 0.6008",\
                 "0.6372, 0.6372, 0.637, 0.6368, 0.6367, 0.6367, 0.6366, 0.6367, 0.6366, 0.6353",\
                 "0.6791, 0.6792, 0.6791, 0.6788, 0.6787, 0.6786, 0.6785, 0.6786, 0.6781, 0.6749");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.489, 0.4893, 0.4908, 0.4898, 0.4937, 0.498, 0.5039, 0.5474, 0.9333, 2.707",\
                 "0.4885, 0.4884, 0.4894, 0.4901, 0.4937, 0.4989, 0.5048, 0.5447, 0.9395, 2.748",\
                 "0.4889, 0.4889, 0.4897, 0.4898, 0.4931, 0.4977, 0.5042, 0.551, 0.9768, 2.875",\
                 "0.4925, 0.4937, 0.4944, 0.494, 0.497, 0.5016, 0.5087, 0.5613, 1.055, 3.151",\
                 "0.5023, 0.5024, 0.5039, 0.5057, 0.5096, 0.5124, 0.5211, 0.5922, 1.206, 3.607",\
                 "0.5186, 0.519, 0.5197, 0.5219, 0.5276, 0.5313, 0.5402, 0.6429, 1.438, 4.292",\
                 "0.544, 0.5447, 0.5462, 0.5456, 0.5501, 0.56, 0.5683, 0.7338, 1.825, 5.245",\
                 "0.578, 0.5788, 0.581, 0.5816, 0.5801, 0.5906, 0.6177, 0.8966, 2.457, 6.6",\
                 "0.6222, 0.6231, 0.6249, 0.6269, 0.626, 0.6265, 0.679, 1.221, 3.547, 8.384",\
                 "0.6767, 0.6772, 0.6785, 0.6803, 0.6776, 0.6791, 0.8048, 1.896, 5.272, 10.5");
        }
      }

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

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.8529, 0.8678, 0.8878, 0.8979, 0.9024, 0.9047, 0.9059, 0.9067, 0.9072, 0.9075",\
                 "0.8407, 0.8555, 0.8755, 0.8861, 0.8906, 0.8928, 0.8941, 0.8948, 0.8954, 0.8957",\
                 "0.8335, 0.8461, 0.8655, 0.8772, 0.8829, 0.8859, 0.8876, 0.8886, 0.8894, 0.8897",\
                 "0.8451, 0.8549, 0.8732, 0.8869, 0.8945, 0.899, 0.9016, 0.9032, 0.9044, 0.9049",\
                 "0.891, 0.8988, 0.9149, 0.9286, 0.9379, 0.9439, 0.9475, 0.9497, 0.9513, 0.9522",\
                 "0.9751, 0.9819, 0.9957, 1.01, 1.02, 1.027, 1.031, 1.034, 1.036, 1.037",\
                 "1.102, 1.108, 1.121, 1.134, 1.144, 1.152, 1.157, 1.161, 1.163, 1.165",\
                 "1.274, 1.28, 1.292, 1.305, 1.315, 1.323, 1.329, 1.333, 1.336, 1.337",\
                 "1.496, 1.501, 1.513, 1.524, 1.534, 1.542, 1.549, 1.553, 1.556, 1.554",\
                 "1.769, 1.774, 1.784, 1.795, 1.804, 1.812, 1.818, 1.823, 1.822, 1.811");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.4764, 0.49, 0.5086, 0.517, 0.5238, 0.53, 0.5365, 0.5812, 0.9776, 2.816",\
                 "0.4691, 0.4815, 0.5001, 0.5086, 0.5163, 0.5231, 0.5311, 0.5734, 0.985, 2.842",\
                 "0.4538, 0.4627, 0.4796, 0.4924, 0.5031, 0.509, 0.5203, 0.5673, 1.013, 2.947",\
                 "0.4517, 0.4587, 0.4746, 0.4867, 0.4998, 0.5093, 0.5185, 0.575, 1.058, 3.148",\
                 "0.4746, 0.4814, 0.4946, 0.5086, 0.5223, 0.5315, 0.5453, 0.6126, 1.19, 3.506",\
                 "0.5295, 0.5346, 0.5444, 0.5575, 0.5754, 0.5849, 0.5958, 0.6919, 1.404, 4.083",\
                 "0.6236, 0.6283, 0.6378, 0.6475, 0.6606, 0.6806, 0.6937, 0.8331, 1.784, 4.964",\
                 "0.7617, 0.7659, 0.7742, 0.7819, 0.7923, 0.805, 0.8457, 1.068, 2.415, 6.26",\
                 "0.9489, 0.9523, 0.9612, 0.9685, 0.9777, 0.9846, 1.033, 1.475, 3.493, 8.095",\
                 "1.185, 1.189, 1.196, 1.205, 1.212, 1.222, 1.317, 2.204, 5.26, 10.45");
        }
      }

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

        cell_fall(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("1.716, 1.76, 1.889, 2.144, 2.556, 3.141, 3.838, 4.585, 5.399, \
                  6.289");
        }

        cell_rise(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("1.058, 1.086, 1.217, 1.452, 1.745, 2.095, 2.518, 3.012, 3.581, \
                  4.222");
        }

        fall_transition(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0, 0, 0, 0, 0, 0, 0, 0, 0, 0");
        }

        rise_transition(tmg_ntin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.7187, 0.8732, 1.225, 1.666, 2.171, 2.748, 3.419, 4.205, 5.131, 6.216",\
                 "0.7507, 0.9051, 1.256, 1.698, 2.203, 2.78, 3.451, 4.237, 5.163, 6.248",\
                 "0.8634, 1.018, 1.369, 1.81, 2.315, 2.893, 3.563, 4.35, 5.275, 6.359",\
                 "1.056, 1.213, 1.566, 2.009, 2.515, 3.092, 3.764, 4.55, 5.475, 6.56",\
                 "1.224, 1.403, 1.781, 2.233, 2.743, 3.323, 3.995, 4.782, 5.707, 6.792",\
                 "1.287, 1.469, 1.852, 2.304, 2.814, 3.394, 4.065, 4.852, 5.778, 6.862",\
                 "1.252, 1.436, 1.82, 2.273, 2.783, 3.364, 4.035, 4.821, 5.746, 6.831",\
                 "1.142, 1.327, 1.712, 2.168, 2.679, 3.259, 3.932, 4.718, 5.643, 6.726",\
                 "0.9611, 1.148, 1.536, 1.993, 2.506, 3.088, 3.76, 4.547, 5.472, 6.556",\
                 "0.7061, 0.8931, 1.285, 1.745, 2.261, 2.844, 3.517, 4.305, 5.23, 6.314");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.7949, 0.9466, 1.284, 1.752, 2.401, 3.289, 4.454, 5.922, 7.715, 9.853",\
                 "0.8245, 0.9764, 1.313, 1.781, 2.431, 3.318, 4.484, 5.949, 7.745, 9.879",\
                 "0.9274, 1.079, 1.417, 1.884, 2.533, 3.421, 4.586, 6.055, 7.844, 9.977",\
                 "1.109, 1.264, 1.604, 2.073, 2.722, 3.61, 4.775, 6.24, 8.037, 10.17",\
                 "1.292, 1.475, 1.845, 2.324, 2.976, 3.864, 5.029, 6.495, 8.291, 10.43",\
                 "1.41, 1.625, 2.046, 2.555, 3.216, 4.104, 5.269, 6.734, 8.53, 10.67",\
                 "1.462, 1.709, 2.187, 2.732, 3.407, 4.299, 5.462, 6.929, 8.72, 10.86",\
                 "1.443, 1.723, 2.262, 2.851, 3.545, 4.441, 5.604, 7.069, 8.858, 10.99",\
                 "1.348, 1.663, 2.266, 2.909, 3.627, 4.53, 5.695, 7.158, 8.946, 11.08",\
                 "1.174, 1.523, 2.192, 2.895, 3.646, 4.56, 5.727, 7.191, 8.978, 11.11");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.3596, 0.5027, 0.8344, 1.253, 1.778, 2.464, 3.363, 4.524, 5.984, 7.766",\
                 "0.3595, 0.5028, 0.8342, 1.254, 1.778, 2.464, 3.361, 4.52, 5.984, 7.766",\
                 "0.3588, 0.502, 0.834, 1.253, 1.778, 2.464, 3.363, 4.525, 5.983, 7.759",\
                 "0.3716, 0.51, 0.838, 1.258, 1.781, 2.466, 3.363, 4.525, 5.985, 7.764",\
                 "0.4412, 0.5816, 0.8852, 1.281, 1.797, 2.477, 3.372, 4.528, 5.987, 7.764",\
                 "0.468, 0.6038, 0.896, 1.286, 1.797, 2.473, 3.368, 4.527, 5.985, 7.763",\
                 "0.4732, 0.608, 0.9, 1.29, 1.799, 2.474, 3.366, 4.521, 5.976, 7.763",\
                 "0.4782, 0.613, 0.9042, 1.292, 1.801, 2.478, 3.37, 4.525, 5.976, 7.758",\
                 "0.4832, 0.6186, 0.9118, 1.298, 1.808, 2.484, 3.372, 4.526, 5.982, 7.754",\
                 "0.4878, 0.624, 0.92, 1.306, 1.814, 2.488, 3.374, 4.528, 5.984, 7.756");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.3362, 0.46, 0.8038, 1.435, 2.49, 4.03, 6.08, 8.666, 11.83, 15.6",\
                 "0.3362, 0.459, 0.8018, 1.435, 2.49, 4.029, 6.074, 8.677, 11.83, 15.6",\
                 "0.3368, 0.4596, 0.8022, 1.437, 2.488, 4.026, 6.082, 8.662, 11.83, 15.6",\
                 "0.3488, 0.4674, 0.8062, 1.436, 2.49, 4.03, 6.076, 8.675, 11.83, 15.6",\
                 "0.4242, 0.5408, 0.8486, 1.455, 2.494, 4.031, 6.08, 8.668, 11.84, 15.6",\
                 "0.5032, 0.6356, 0.9418, 1.509, 2.514, 4.031, 6.08, 8.669, 11.84, 15.6",\
                 "0.5846, 0.7366, 1.049, 1.582, 2.548, 4.045, 6.083, 8.658, 11.83, 15.59",\
                 "0.666, 0.8386, 1.164, 1.67, 2.595, 4.062, 6.088, 8.682, 11.82, 15.58",\
                 "0.7522, 0.947, 1.296, 1.785, 2.658, 4.09, 6.098, 8.67, 11.83, 15.59",\
                 "0.836, 1.054, 1.436, 1.916, 2.738, 4.126, 6.116, 8.68, 11.83, 15.59");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.9263, 1.084, 1.433, 1.869, 2.37, 2.945, 3.614, 4.4, 5.325, 6.41",\
                 "0.9431, 1.101, 1.45, 1.886, 2.387, 2.963, 3.632, 4.418, 5.343, 6.428",\
                 "1.04, 1.198, 1.548, 1.985, 2.487, 3.063, 3.732, 4.518, 5.443, 6.528",\
                 "1.214, 1.373, 1.728, 2.168, 2.671, 3.248, 3.918, 4.704, 5.629, 6.714",\
                 "1.439, 1.603, 1.968, 2.417, 2.924, 3.503, 4.174, 4.961, 5.886, 6.971",\
                 "1.746, 1.914, 2.284, 2.74, 3.256, 3.839, 4.513, 5.301, 6.227, 7.312",\
                 "2.148, 2.325, 2.708, 3.173, 3.694, 4.284, 4.964, 5.755, 6.683, 7.769",\
                 "2.634, 2.827, 3.241, 3.732, 4.269, 4.869, 5.553, 6.35, 7.279, 8.367",\
                 "3.194, 3.413, 3.874, 4.414, 4.985, 5.603, 6.302, 7.102, 8.037, 9.128",\
                 "3.828, 4.079, 4.606, 5.212, 5.838, 6.497, 7.217, 8.03, 8.971, 10.06");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.9781, 1.13, 1.464, 1.93, 2.579, 3.468, 4.633, 6.102, 7.894, 10.03",\
                 "0.9922, 1.143, 1.478, 1.945, 2.594, 3.483, 4.649, 6.113, 7.91, 10.04",\
                 "1.036, 1.186, 1.522, 1.991, 2.642, 3.531, 4.697, 6.164, 7.959, 10.1",\
                 "1.071, 1.223, 1.561, 2.031, 2.683, 3.573, 4.739, 6.208, 8, 10.14",\
                 "1.086, 1.24, 1.583, 2.058, 2.711, 3.602, 4.769, 6.235, 8.032, 10.16",\
                 "1.095, 1.256, 1.605, 2.083, 2.74, 3.632, 4.8, 6.267, 8.059, 10.2",\
                 "1.074, 1.25, 1.623, 2.114, 2.774, 3.668, 4.837, 6.304, 8.097, 10.23",\
                 "1.001, 1.202, 1.613, 2.135, 2.813, 3.711, 4.88, 6.35, 8.14, 10.27",\
                 "0.8736, 1.101, 1.56, 2.127, 2.842, 3.759, 4.932, 6.401, 8.193, 10.33",\
                 "0.6941, 0.9501, 1.46, 2.08, 2.843, 3.801, 4.994, 6.467, 8.259, 10.39");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.3354, 0.4767, 0.81, 1.234, 1.766, 2.455, 3.355, 4.521, 5.981, 7.762",\
                 "0.336, 0.4768, 0.81, 1.236, 1.765, 2.455, 3.357, 4.521, 5.983, 7.762",\
                 "0.338, 0.4796, 0.8124, 1.235, 1.766, 2.457, 3.359, 4.521, 5.982, 7.76",\
                 "0.3502, 0.4902, 0.819, 1.24, 1.768, 2.458, 3.357, 4.522, 5.982, 7.757",\
                 "0.3704, 0.5126, 0.8422, 1.256, 1.779, 2.463, 3.364, 4.524, 5.984, 7.763",\
                 "0.3846, 0.5256, 0.8572, 1.277, 1.8, 2.478, 3.371, 4.527, 5.986, 7.763",\
                 "0.4132, 0.5542, 0.8834, 1.299, 1.82, 2.501, 3.392, 4.542, 5.992, 7.768",\
                 "0.462, 0.6116, 0.9482, 1.36, 1.866, 2.534, 3.416, 4.564, 6.01, 7.78",\
                 "0.532, 0.696, 1.058, 1.476, 1.964, 2.604, 3.466, 4.596, 6.032, 7.794",\
                 "0.62, 0.808, 1.204, 1.652, 2.124, 2.734, 3.556, 4.654, 6.064, 7.814");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.0348, 0.07213, 0.2032, 0.4535, 0.8434, 1.39, 2.11, 3.017, 4.124, 5.444");
          values("0.3052, 0.4306, 0.7854, 1.43, 2.487, 4.03, 6.081, 8.668, 11.83, 15.61",\
                 "0.3058, 0.4312, 0.7856, 1.428, 2.487, 4.03, 6.076, 8.676, 11.83, 15.6",\
                 "0.3108, 0.4378, 0.7876, 1.428, 2.488, 4.03, 6.08, 8.663, 11.84, 15.6",\
                 "0.319, 0.4432, 0.7934, 1.43, 2.487, 4.03, 6.08, 8.669, 11.83, 15.6",\
                 "0.3282, 0.4554, 0.8018, 1.438, 2.49, 4.031, 6.076, 8.676, 11.83, 15.62",\
                 "0.347, 0.471, 0.8144, 1.449, 2.5, 4.035, 6.083, 8.664, 11.82, 15.6",\
                 "0.3912, 0.5174, 0.8548, 1.473, 2.507, 4.039, 6.09, 8.67, 11.83, 15.6",\
                 "0.4518, 0.5868, 0.9278, 1.538, 2.546, 4.051, 6.092, 8.67, 11.83, 15.6",\
                 "0.521, 0.668, 1.026, 1.645, 2.639, 4.102, 6.102, 8.678, 11.83, 15.59",\
                 "0.5958, 0.754, 1.134, 1.776, 2.786, 4.222, 6.166, 8.696, 11.83, 15.59");
        }
      }
    }
  }

