/*
 * 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_mcu9t5v0__latq_2) {
    area : 62.092800 ;

    latch(IQ1,IQN1) {
      enable : "E" ;
      data_in : "(!D)" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&!E" ;
      value : "0.0001932264" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&E" ;
      value : "0.000140706" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&!E" ;
      value : "0.000212706" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&E" ;
      value : "0.0001369152" ;
    }

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

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

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

    pin(D) {
      capacitance : 0.003973 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 4.4 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.01755, 0.01752, 0.01749, 0.01751, 0.01751, 0.01754, 0.01756, \
                  0.01756, 0.01757, 0.01755");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("-0.01611, -0.01604, -0.01609, -0.01613, -0.01617, -0.01621, -0.01625, \
                  -0.01629, -0.01631, -0.01631");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : hold_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("-0.366, -0.364, -0.336, -0.299, -0.254, -0.21, -0.153, -0.08, -0.002, 0.088",\
                 "-0.372, -0.363, -0.343, -0.302, -0.263, -0.216, -0.157, -0.089, -0.004, 0.087",\
                 "-0.393, -0.383, -0.358, -0.317, -0.28, -0.229, -0.17, -0.104, -0.018, 0.072",\
                 "-0.425, -0.419, -0.393, -0.359, -0.315, -0.267, -0.206, -0.135, -0.056, 0.042",\
                 "-0.493, -0.489, -0.465, -0.428, -0.386, -0.337, -0.271, -0.201, -0.119, -0.02",\
                 "-0.6, -0.598, -0.565, -0.533, -0.484, -0.434, -0.375, -0.298, -0.221, -0.121",\
                 "-0.74, -0.731, -0.705, -0.665, -0.62, -0.572, -0.507, -0.436, -0.357, -0.253",\
                 "-0.902, -0.891, -0.867, -0.826, -0.78, -0.731, -0.673, -0.602, -0.522, -0.425",\
                 "-1.083, -1.074, -1.047, -1.011, -0.973, -0.923, -0.866, -0.793, -0.715, -0.62",\
                 "-1.29, -1.286, -1.259, -1.22, -1.176, -1.133, -1.075, -1.006, -0.936, -0.845");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("-0.109, -0.1, -0.063, -0.009, 0.061, 0.139, 0.229, 0.335, 0.447, 0.576",\
                 "-0.108, -0.103, -0.068, -0.011, 0.062, 0.134, 0.231, 0.33, 0.449, 0.573",\
                 "-0.119, -0.109, -0.081, -0.024, 0.044, 0.125, 0.218, 0.325, 0.44, 0.569",\
                 "-0.141, -0.134, -0.1, -0.046, 0.026, 0.108, 0.203, 0.303, 0.426, 0.554",\
                 "-0.169, -0.155, -0.126, -0.075, -0, 0.088, 0.181, 0.289, 0.402, 0.537",\
                 "-0.185, -0.174, -0.147, -0.092, -0.021, 0.064, 0.159, 0.265, 0.387, 0.522",\
                 "-0.191, -0.183, -0.148, -0.093, -0.026, 0.057, 0.155, 0.261, 0.382, 0.515",\
                 "-0.175, -0.169, -0.138, -0.08, -0.005, 0.074, 0.173, 0.277, 0.397, 0.532",\
                 "-0.142, -0.133, -0.097, -0.046, 0.023, 0.11, 0.208, 0.317, 0.438, 0.57",\
                 "-0.088, -0.081, -0.05, 0.011, 0.082, 0.168, 0.268, 0.375, 0.498, 0.637");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : setup_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.441, 0.433, 0.411, 0.378, 0.362, 0.374, 0.433, 0.52, 0.638, 0.774",\
                 "0.448, 0.439, 0.413, 0.384, 0.365, 0.376, 0.431, 0.521, 0.627, 0.764",\
                 "0.459, 0.454, 0.428, 0.397, 0.383, 0.394, 0.449, 0.525, 0.624, 0.752",\
                 "0.498, 0.489, 0.467, 0.434, 0.419, 0.422, 0.463, 0.529, 0.621, 0.723",\
                 "0.565, 0.563, 0.532, 0.507, 0.484, 0.481, 0.5, 0.549, 0.614, 0.701",\
                 "0.672, 0.665, 0.637, 0.607, 0.58, 0.568, 0.57, 0.602, 0.651, 0.717",\
                 "0.806, 0.798, 0.775, 0.742, 0.713, 0.687, 0.679, 0.688, 0.723, 0.761",\
                 "0.972, 0.969, 0.941, 0.905, 0.875, 0.847, 0.828, 0.824, 0.847, 0.882",\
                 "1.168, 1.159, 1.135, 1.094, 1.057, 1.027, 1.003, 0.998, 1.006, 1.041",\
                 "1.378, 1.369, 1.344, 1.308, 1.27, 1.234, 1.209, 1.197, 1.198, 1.221");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.166, 0.163, 0.129, 0.07, 0.002, -0.087, -0.172, -0.271, -0.38, -0.505",\
                 "0.171, 0.165, 0.13, 0.075, 0.003, -0.08, -0.174, -0.272, -0.381, -0.496",\
                 "0.185, 0.171, 0.141, 0.083, 0.012, -0.068, -0.158, -0.258, -0.37, -0.491",\
                 "0.202, 0.192, 0.159, 0.111, 0.035, -0.051, -0.142, -0.245, -0.352, -0.484",\
                 "0.232, 0.22, 0.188, 0.129, 0.06, -0.021, -0.119, -0.226, -0.342, -0.469",\
                 "0.244, 0.235, 0.204, 0.149, 0.078, -0.012, -0.102, -0.212, -0.332, -0.462",\
                 "0.247, 0.24, 0.208, 0.148, 0.075, -0.007, -0.103, -0.209, -0.326, -0.463",\
                 "0.226, 0.221, 0.191, 0.131, 0.06, -0.021, -0.121, -0.229, -0.348, -0.482",\
                 "0.193, 0.184, 0.15, 0.093, 0.016, -0.066, -0.164, -0.275, -0.398, -0.524",\
                 "0.131, 0.125, 0.089, 0.03, -0.045, -0.128, -0.231, -0.342, -0.461, -0.601");
        }
      }
    }

    pin(E) {
      capacitance : 0.004943 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 4.4 ;
      min_pulse_width_high : 0.465 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.1531, 0.1524, 0.1566, 0.1725, 0.2014, 0.2456, 0.3056, 0.3823, \
                  0.4764, 0.5888");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.0828, 0.08232, 0.08544, 0.09817, 0.1232, 0.1619, 0.2151, 0.2832, \
                  0.3667, 0.4671");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.1548, 0.1541, 0.1585, 0.1747, 0.2039, 0.2481, 0.3083, 0.3849, \
                  0.4791, 0.5915");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          values("0.0816, 0.08105, 0.08415, 0.09652, 0.1214, 0.1601, 0.213, 0.2807, \
                  0.3642, 0.4645");
        }
      }

      timing() {
        related_pin : "E" ;
        sdf_cond : "ENABLE_NOT_D === 1'b1" ;
        timing_type : min_pulse_width ;
        when : "!D" ;

        rise_constraint(scalar) {
          values("0.465");
        }
      }

      timing() {
        related_pin : "E" ;
        sdf_cond : "ENABLE_D === 1'b1" ;
        timing_type : min_pulse_width ;
        when : "D" ;

        rise_constraint(scalar) {
          values("0.331");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.9059 ;
      max_transition : 4.4 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "D" ;
        when : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.4921, 0.474, 0.433, 0.3961, 0.3742, 0.3602, 0.3506, 0.3436, 0.3387, 0.335",\
                 "0.4916, 0.4736, 0.4325, 0.3956, 0.3738, 0.3597, 0.3499, 0.3431, 0.3381, 0.3345",\
                 "0.4912, 0.4731, 0.4321, 0.3952, 0.3733, 0.3593, 0.3497, 0.3428, 0.3378, 0.3342",\
                 "0.4965, 0.4785, 0.4373, 0.4003, 0.3782, 0.3639, 0.3543, 0.3473, 0.3423, 0.3387",\
                 "0.5207, 0.5024, 0.4599, 0.421, 0.3975, 0.3823, 0.3719, 0.3644, 0.359, 0.3551",\
                 "0.5682, 0.5493, 0.5047, 0.4621, 0.4355, 0.4179, 0.4059, 0.3972, 0.3911, 0.3865",\
                 "0.6391, 0.6195, 0.5719, 0.5243, 0.493, 0.4719, 0.4572, 0.4467, 0.4392, 0.4336",\
                 "0.7369, 0.7162, 0.6654, 0.6109, 0.5733, 0.5473, 0.5289, 0.5156, 0.5059, 0.4988",\
                 "0.8581, 0.8367, 0.7817, 0.7201, 0.6753, 0.6435, 0.6203, 0.6032, 0.5908, 0.5815",\
                 "0.9987, 0.9765, 0.9181, 0.849, 0.7956, 0.7577, 0.7294, 0.7082, 0.6923, 0.6806");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.2985, 0.2848, 0.2679, 0.2577, 0.2518, 0.2498, 0.2495, 0.2507, 0.2526, 0.2561",\
                 "0.2978, 0.2843, 0.2671, 0.257, 0.2512, 0.2492, 0.2492, 0.2499, 0.2515, 0.2529",\
                 "0.2975, 0.2841, 0.2671, 0.2569, 0.2508, 0.2484, 0.2495, 0.2503, 0.2505, 0.2529",\
                 "0.3072, 0.2935, 0.2757, 0.2646, 0.2577, 0.2544, 0.2542, 0.255, 0.2566, 0.2586",\
                 "0.3364, 0.3209, 0.3006, 0.2864, 0.2771, 0.2721, 0.2708, 0.2719, 0.2713, 0.2719",\
                 "0.3845, 0.3676, 0.3428, 0.3245, 0.3138, 0.3046, 0.3017, 0.3, 0.2994, 0.3",\
                 "0.4525, 0.4337, 0.4031, 0.38, 0.3637, 0.354, 0.3474, 0.3417, 0.3408, 0.3403",\
                 "0.5387, 0.5182, 0.4812, 0.453, 0.4304, 0.4162, 0.4094, 0.4029, 0.3963, 0.3951",\
                 "0.6432, 0.6208, 0.5773, 0.5436, 0.516, 0.4953, 0.4832, 0.4782, 0.4715, 0.4649",\
                 "0.7657, 0.7419, 0.6916, 0.6527, 0.62, 0.5934, 0.575, 0.5642, 0.559, 0.5545");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.4606, 0.4428, 0.402, 0.3656, 0.3442, 0.3303, 0.3208, 0.314, 0.3091, 0.3055",\
                 "0.4604, 0.4427, 0.4019, 0.3655, 0.344, 0.3302, 0.3206, 0.3138, 0.309, 0.3054",\
                 "0.4599, 0.4422, 0.4014, 0.365, 0.3435, 0.3298, 0.3202, 0.3134, 0.3085, 0.3049",\
                 "0.4597, 0.4419, 0.4011, 0.3648, 0.3434, 0.3296, 0.3201, 0.3133, 0.3084, 0.3048",\
                 "0.4606, 0.4428, 0.4019, 0.3657, 0.3443, 0.3304, 0.3209, 0.3141, 0.3092, 0.3057",\
                 "0.4623, 0.4445, 0.4036, 0.3672, 0.3456, 0.3318, 0.3221, 0.3154, 0.3105, 0.3069",\
                 "0.4664, 0.4484, 0.4072, 0.3703, 0.3486, 0.3345, 0.3248, 0.3178, 0.3128, 0.3092",\
                 "0.4723, 0.4543, 0.4127, 0.375, 0.3527, 0.3382, 0.3284, 0.3214, 0.3163, 0.3127",\
                 "0.48, 0.4616, 0.4194, 0.3811, 0.3583, 0.3435, 0.3332, 0.326, 0.3209, 0.3172",\
                 "0.4882, 0.4696, 0.4267, 0.3877, 0.3645, 0.3491, 0.3389, 0.3314, 0.326, 0.322");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.31, 0.2967, 0.2797, 0.2693, 0.2634, 0.2609, 0.2608, 0.2619, 0.2621, 0.2645",\
                 "0.3101, 0.2967, 0.2796, 0.2694, 0.2634, 0.2607, 0.2617, 0.2625, 0.2627, 0.2651",\
                 "0.3102, 0.2969, 0.2797, 0.27, 0.2642, 0.2611, 0.2608, 0.2615, 0.2639, 0.2648",\
                 "0.3108, 0.2975, 0.2804, 0.2702, 0.264, 0.2624, 0.2614, 0.2621, 0.2641, 0.264",\
                 "0.3112, 0.2979, 0.2808, 0.2704, 0.2652, 0.2618, 0.2616, 0.2628, 0.2647, 0.2664",\
                 "0.3116, 0.2982, 0.2808, 0.271, 0.2654, 0.2622, 0.2626, 0.2634, 0.2646, 0.2663",\
                 "0.312, 0.298, 0.281, 0.27, 0.2654, 0.2642, 0.2637, 0.2631, 0.2643, 0.2656",\
                 "0.312, 0.2986, 0.2819, 0.2699, 0.2647, 0.2645, 0.2654, 0.2658, 0.2649, 0.2659",\
                 "0.3125, 0.2992, 0.2822, 0.2715, 0.2655, 0.262, 0.2643, 0.2705, 0.2696, 0.2684",\
                 "0.3128, 0.2995, 0.2828, 0.2722, 0.2665, 0.2629, 0.2624, 0.2661, 0.272, 0.274");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.4086, 0.4409, 0.5203, 0.6304, 0.764, 0.9241, 1.118, 1.355, 1.641, 1.981",\
                 "0.414, 0.4463, 0.5256, 0.6358, 0.7694, 0.9294, 1.124, 1.36, 1.646, 1.987",\
                 "0.4299, 0.4623, 0.5417, 0.6518, 0.7853, 0.9454, 1.14, 1.376, 1.663, 2.003",\
                 "0.4674, 0.4998, 0.579, 0.689, 0.8225, 0.9825, 1.177, 1.414, 1.7, 2.04",\
                 "0.5387, 0.5713, 0.6507, 0.7605, 0.8938, 1.054, 1.248, 1.485, 1.771, 2.111",\
                 "0.6414, 0.6749, 0.756, 0.8677, 1.002, 1.163, 1.357, 1.593, 1.879, 2.219",\
                 "0.7751, 0.8093, 0.893, 1.007, 1.143, 1.305, 1.5, 1.737, 2.022, 2.362",\
                 "0.9343, 0.9703, 1.058, 1.176, 1.316, 1.48, 1.676, 1.913, 2.198, 2.538",\
                 "1.116, 1.154, 1.247, 1.371, 1.516, 1.685, 1.883, 2.121, 2.406, 2.745",\
                 "1.319, 1.359, 1.457, 1.588, 1.741, 1.916, 2.12, 2.36, 2.645, 2.984");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.2755, 0.3024, 0.3763, 0.4999, 0.6815, 0.9347, 1.268, 1.689, 2.203, 2.815",\
                 "0.2784, 0.3053, 0.379, 0.5027, 0.6843, 0.9375, 1.271, 1.691, 2.205, 2.819",\
                 "0.2876, 0.3145, 0.3883, 0.5118, 0.6935, 0.9464, 1.28, 1.702, 2.215, 2.827",\
                 "0.309, 0.3359, 0.4096, 0.5328, 0.7141, 0.9667, 1.301, 1.721, 2.235, 2.847",\
                 "0.3358, 0.3635, 0.4383, 0.5618, 0.7424, 0.9945, 1.327, 1.748, 2.262, 2.874",\
                 "0.3572, 0.3862, 0.4626, 0.5869, 0.767, 1.018, 1.35, 1.769, 2.283, 2.895",\
                 "0.3659, 0.3969, 0.4761, 0.6022, 0.7826, 1.032, 1.363, 1.782, 2.295, 2.906",\
                 "0.3584, 0.3915, 0.4743, 0.603, 0.7854, 1.035, 1.365, 1.783, 2.294, 2.905",\
                 "0.3324, 0.3676, 0.4551, 0.5868, 0.7718, 1.024, 1.354, 1.771, 2.281, 2.891",\
                 "0.2864, 0.3244, 0.4165, 0.5515, 0.7393, 0.9941, 1.327, 1.745, 2.255, 2.863");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.1171, 0.1493, 0.2271, 0.3359, 0.4794, 0.6818, 0.9607, 1.33, 1.791, 2.355",\
                 "0.1174, 0.1495, 0.2272, 0.3359, 0.4793, 0.6821, 0.9598, 1.33, 1.791, 2.355",\
                 "0.117, 0.1495, 0.2271, 0.3359, 0.4794, 0.682, 0.9604, 1.33, 1.792, 2.356",\
                 "0.1171, 0.1494, 0.2273, 0.336, 0.4801, 0.6806, 0.9608, 1.329, 1.791, 2.355",\
                 "0.12, 0.1521, 0.2296, 0.338, 0.4816, 0.6816, 0.9618, 1.332, 1.794, 2.356",\
                 "0.1266, 0.16, 0.239, 0.3468, 0.4872, 0.6864, 0.964, 1.331, 1.792, 2.353",\
                 "0.1372, 0.1714, 0.251, 0.3596, 0.4994, 0.6954, 0.968, 1.333, 1.793, 2.355",\
                 "0.1524, 0.1888, 0.2716, 0.3798, 0.5164, 0.7084, 0.9768, 1.337, 1.798, 2.356",\
                 "0.1706, 0.2088, 0.2974, 0.409, 0.544, 0.7318, 0.9918, 1.347, 1.801, 2.356",\
                 "0.189, 0.23, 0.3244, 0.4422, 0.5788, 0.7658, 1.02, 1.365, 1.81, 2.36");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.07446, 0.1048, 0.2063, 0.3938, 0.695, 1.132, 1.712, 2.446, 3.336, 4.404",\
                 "0.07422, 0.1049, 0.2061, 0.394, 0.6951, 1.132, 1.713, 2.443, 3.337, 4.408",\
                 "0.07444, 0.1046, 0.206, 0.3942, 0.6953, 1.133, 1.714, 2.448, 3.342, 4.402",\
                 "0.07448, 0.1051, 0.2065, 0.3946, 0.6949, 1.134, 1.714, 2.447, 3.342, 4.405",\
                 "0.08032, 0.1112, 0.2111, 0.3972, 0.696, 1.134, 1.712, 2.447, 3.342, 4.406",\
                 "0.0874, 0.1194, 0.2182, 0.4034, 0.6996, 1.133, 1.714, 2.445, 3.34, 4.405",\
                 "0.098, 0.131, 0.2288, 0.413, 0.7042, 1.134, 1.714, 2.443, 3.333, 4.404",\
                 "0.1104, 0.1444, 0.2422, 0.4264, 0.7166, 1.141, 1.715, 2.443, 3.337, 4.404",\
                 "0.1248, 0.1604, 0.2582, 0.442, 0.731, 1.156, 1.722, 2.447, 3.335, 4.399",\
                 "0.1412, 0.1772, 0.2762, 0.458, 0.7492, 1.174, 1.74, 2.459, 3.339, 4.398");
        }
      }

      timing() {
        related_pin : "E" ;
        timing_type : rising_edge ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.4336, 0.4659, 0.5454, 0.6555, 0.7892, 0.9493, 1.144, 1.38, 1.666, 2.007",\
                 "0.4396, 0.4719, 0.5514, 0.6615, 0.7951, 0.9552, 1.149, 1.386, 1.672, 2.013",\
                 "0.4602, 0.4926, 0.572, 0.6821, 0.8157, 0.9759, 1.17, 1.407, 1.693, 2.033",\
                 "0.4842, 0.5165, 0.5959, 0.706, 0.8396, 0.9997, 1.194, 1.431, 1.717, 2.057",\
                 "0.5033, 0.5356, 0.615, 0.7252, 0.8588, 1.019, 1.213, 1.45, 1.736, 2.076",\
                 "0.516, 0.5483, 0.6278, 0.7379, 0.8716, 1.032, 1.226, 1.463, 1.749, 2.089",\
                 "0.5207, 0.553, 0.6326, 0.7427, 0.8764, 1.036, 1.231, 1.468, 1.754, 2.094",\
                 "0.5147, 0.5471, 0.627, 0.7374, 0.8712, 1.031, 1.226, 1.463, 1.749, 2.089",\
                 "0.4965, 0.5291, 0.6093, 0.72, 0.854, 1.015, 1.209, 1.446, 1.732, 2.072",\
                 "0.4654, 0.4982, 0.5786, 0.6894, 0.8238, 0.9844, 1.179, 1.416, 1.702, 2.042");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.429, 0.4559, 0.5297, 0.6533, 0.8349, 1.088, 1.422, 1.843, 2.356, 2.968",\
                 "0.4351, 0.4619, 0.5358, 0.6594, 0.841, 1.094, 1.428, 1.849, 2.363, 2.974",\
                 "0.4577, 0.4846, 0.5584, 0.682, 0.8636, 1.117, 1.45, 1.871, 2.384, 2.997",\
                 "0.4841, 0.511, 0.5849, 0.7084, 0.89, 1.143, 1.477, 1.898, 2.412, 3.024",\
                 "0.5048, 0.5318, 0.6055, 0.7291, 0.9106, 1.164, 1.498, 1.918, 2.432, 3.045",\
                 "0.5179, 0.5447, 0.6186, 0.7421, 0.9237, 1.177, 1.51, 1.931, 2.445, 3.056",\
                 "0.5203, 0.5468, 0.6208, 0.7444, 0.9259, 1.179, 1.512, 1.933, 2.447, 3.06",\
                 "0.5105, 0.5373, 0.6112, 0.7346, 0.9162, 1.169, 1.503, 1.923, 2.436, 3.049",\
                 "0.488, 0.5149, 0.5884, 0.7122, 0.8937, 1.147, 1.48, 1.901, 2.414, 3.026",\
                 "0.4515, 0.4784, 0.5522, 0.6757, 0.8573, 1.11, 1.444, 1.864, 2.378, 2.99");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.1169, 0.1489, 0.2266, 0.3354, 0.4797, 0.6805, 0.9609, 1.33, 1.791, 2.355",\
                 "0.1168, 0.1488, 0.2266, 0.3356, 0.4795, 0.682, 0.961, 1.329, 1.793, 2.356",\
                 "0.1168, 0.1489, 0.2266, 0.3355, 0.4794, 0.6819, 0.9606, 1.33, 1.792, 2.356",\
                 "0.1169, 0.149, 0.2263, 0.3354, 0.4795, 0.6818, 0.9608, 1.329, 1.792, 2.356",\
                 "0.117, 0.1491, 0.2267, 0.3354, 0.4794, 0.6814, 0.9598, 1.329, 1.791, 2.354",\
                 "0.1166, 0.1492, 0.227, 0.3356, 0.4794, 0.6814, 0.961, 1.33, 1.795, 2.355",\
                 "0.1174, 0.1498, 0.2274, 0.3362, 0.4802, 0.6812, 0.9602, 1.328, 1.794, 2.356",\
                 "0.1188, 0.1512, 0.229, 0.3376, 0.4812, 0.682, 0.961, 1.329, 1.791, 2.351",\
                 "0.12, 0.1524, 0.2306, 0.3392, 0.4824, 0.6836, 0.9618, 1.33, 1.792, 2.351",\
                 "0.1214, 0.154, 0.2318, 0.3408, 0.484, 0.6842, 0.9622, 1.332, 1.794, 2.353");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05023, 0.1564, 0.359, 0.6747, 1.118, 1.701, 2.435, 3.331, 4.4");
          index_2("0.001, 0.007246, 0.02917, 0.07104, 0.1363, 0.2278, 0.3482, 0.4999, 0.6851, 0.9059");
          values("0.07408, 0.1045, 0.2058, 0.394, 0.6951, 1.132, 1.713, 2.447, 3.339, 4.402",\
                 "0.0741, 0.1045, 0.2059, 0.3944, 0.6948, 1.133, 1.714, 2.448, 3.342, 4.4",\
                 "0.07402, 0.1045, 0.2061, 0.3944, 0.6947, 1.132, 1.713, 2.446, 3.337, 4.403",\
                 "0.07454, 0.1044, 0.2058, 0.3944, 0.6947, 1.134, 1.714, 2.447, 3.343, 4.406",\
                 "0.07406, 0.1045, 0.2058, 0.3938, 0.695, 1.134, 1.714, 2.446, 3.343, 4.405",\
                 "0.074, 0.1042, 0.2058, 0.3942, 0.6952, 1.133, 1.713, 2.444, 3.34, 4.398",\
                 "0.0742, 0.1044, 0.206, 0.3944, 0.6946, 1.132, 1.714, 2.442, 3.338, 4.408",\
                 "0.0736, 0.1044, 0.206, 0.3938, 0.6946, 1.133, 1.711, 2.443, 3.336, 4.397",\
                 "0.0736, 0.104, 0.2058, 0.3942, 0.6954, 1.133, 1.713, 2.443, 3.333, 4.404",\
                 "0.0738, 0.104, 0.2056, 0.3942, 0.6946, 1.133, 1.711, 2.442, 3.336, 4.395");
        }
      }
    }
  }

