/*
 * 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__latq_2) {
    area : 48.294400 ;

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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.02841, 0.0284, 0.02841, 0.02846, 0.02843, 0.02841, 0.02843, \
                  0.02848, 0.02848, 0.02846");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("-0.02609, -0.02603, -0.02607, -0.02603, -0.02604, -0.02607, -0.02613, \
                  -0.02612, -0.02612, -0.02613");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("-0.424, -0.418, -0.398, -0.371, -0.337, -0.313, -0.283, -0.253, -0.211, -0.166",\
                 "-0.426, -0.416, -0.396, -0.37, -0.34, -0.315, -0.288, -0.257, -0.214, -0.168",\
                 "-0.434, -0.425, -0.406, -0.381, -0.35, -0.323, -0.298, -0.265, -0.223, -0.176",\
                 "-0.458, -0.454, -0.432, -0.404, -0.376, -0.35, -0.315, -0.285, -0.242, -0.2",\
                 "-0.514, -0.505, -0.482, -0.458, -0.432, -0.403, -0.365, -0.336, -0.296, -0.252",\
                 "-0.605, -0.599, -0.579, -0.552, -0.521, -0.487, -0.459, -0.427, -0.383, -0.34",\
                 "-0.7235, -0.7177, -0.7021, -0.673, -0.642, -0.614, -0.584, -0.554, -0.514, -0.468",\
                 "-0.8652, -0.8631, -0.8435, -0.8149, -0.786, -0.76, -0.737, -0.709, -0.675, -0.632",\
                 "-1.023, -1.023, -0.9998, -0.9723, -0.9506, -0.929, -0.909, -0.881, -0.857, -0.821",\
                 "-1.199, -1.197, -1.175, -1.151, -1.133, -1.11, -1.091, -1.072, -1.052, -1.027");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("-0.16, -0.153, -0.128, -0.089, -0.033, 0.027, 0.093, 0.169, 0.245, 0.335",\
                 "-0.161, -0.152, -0.128, -0.088, -0.035, 0.026, 0.093, 0.169, 0.246, 0.336",\
                 "-0.157, -0.148, -0.126, -0.091, -0.033, 0.031, 0.094, 0.167, 0.249, 0.34",\
                 "-0.166, -0.161, -0.136, -0.093, -0.039, 0.021, 0.087, 0.166, 0.248, 0.337",\
                 "-0.18, -0.176, -0.147, -0.112, -0.055, 0.009, 0.079, 0.153, 0.233, 0.327",\
                 "-0.189, -0.186, -0.16, -0.121, -0.063, -0, 0.069, 0.146, 0.225, 0.318",\
                 "-0.183, -0.177, -0.158, -0.113, -0.059, 0.006, 0.075, 0.152, 0.236, 0.321",\
                 "-0.164, -0.154, -0.135, -0.091, -0.034, 0.031, 0.1, 0.18, 0.261, 0.35",\
                 "-0.118, -0.111, -0.089, -0.043, 0.012, 0.079, 0.154, 0.226, 0.311, 0.401",\
                 "-0.05, -0.049, -0.029, 0.024, 0.085, 0.149, 0.222, 0.3, 0.389, 0.48");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.527, 0.523, 0.505, 0.482, 0.474, 0.481, 0.538, 0.629, 0.761, 0.926",\
                 "0.531, 0.521, 0.51, 0.481, 0.473, 0.486, 0.54, 0.627, 0.754, 0.924",\
                 "0.534, 0.531, 0.513, 0.494, 0.479, 0.494, 0.547, 0.633, 0.759, 0.922",\
                 "0.559, 0.554, 0.539, 0.513, 0.501, 0.516, 0.559, 0.643, 0.762, 0.912",\
                 "0.613, 0.606, 0.594, 0.569, 0.555, 0.567, 0.603, 0.681, 0.785, 0.92",\
                 "0.702, 0.699, 0.679, 0.658, 0.646, 0.647, 0.678, 0.745, 0.844, 0.967",\
                 "0.829, 0.824, 0.806, 0.777, 0.761, 0.758, 0.788, 0.839, 0.923, 1.04",\
                 "0.977, 0.971, 0.956, 0.929, 0.912, 0.909, 0.932, 0.983, 1.068, 1.185",\
                 "1.15, 1.145, 1.125, 1.104, 1.085, 1.077, 1.094, 1.141, 1.225, 1.332",\
                 "1.346, 1.336, 1.317, 1.299, 1.27, 1.264, 1.278, 1.325, 1.403, 1.515");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.235, 0.227, 0.205, 0.164, 0.109, 0.049, -0.017, -0.082, -0.151, -0.232",\
                 "0.235, 0.231, 0.209, 0.166, 0.113, 0.051, -0.017, -0.082, -0.151, -0.232",\
                 "0.234, 0.23, 0.213, 0.166, 0.11, 0.052, -0.014, -0.081, -0.159, -0.233",\
                 "0.24, 0.238, 0.212, 0.171, 0.114, 0.058, -0.009, -0.08, -0.153, -0.236",\
                 "0.256, 0.255, 0.233, 0.187, 0.13, 0.069, 0.01, -0.072, -0.146, -0.229",\
                 "0.259, 0.258, 0.231, 0.194, 0.141, 0.075, 0.006, -0.068, -0.147, -0.233",\
                 "0.25, 0.245, 0.222, 0.183, 0.129, 0.069, 0, -0.071, -0.158, -0.245",\
                 "0.225, 0.216, 0.193, 0.154, 0.097, 0.033, -0.034, -0.113, -0.194, -0.279",\
                 "0.171, 0.165, 0.145, 0.102, 0.044, -0.027, -0.095, -0.176, -0.26, -0.35",\
                 "0.102, 0.093, 0.073, 0.032, -0.036, -0.107, -0.182, -0.261, -0.345, -0.439");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.2798, 0.2802, 0.29, 0.3227, 0.3849, 0.478, 0.6047, 0.7655, 0.9628, \
                  1.198");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.159, 0.1589, 0.1656, 0.1926, 0.2451, 0.3264, 0.4383, 0.582, \
                  0.7592, 0.9714");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.2804, 0.281, 0.291, 0.3241, 0.3863, 0.4795, 0.6062, 0.7671, \
                  0.9643, 1.199");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          values("0.1551, 0.1549, 0.1617, 0.1885, 0.2408, 0.322, 0.4339, 0.5775, \
                  0.7547, 0.9672");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.4582 ;
      max_transition : 3.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.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("1.148, 1.123, 1.054, 0.9679, 0.8868, 0.8256, 0.7829, 0.7511, 0.7266, 0.7075",\
                 "1.147, 1.122, 1.053, 0.967, 0.886, 0.8252, 0.7821, 0.75, 0.7259, 0.7067",\
                 "1.148, 1.123, 1.054, 0.9677, 0.8866, 0.8258, 0.7825, 0.7507, 0.7262, 0.7074",\
                 "1.161, 1.135, 1.066, 0.9797, 0.8983, 0.8371, 0.7938, 0.7617, 0.7371, 0.7181",\
                 "1.211, 1.185, 1.115, 1.026, 0.9426, 0.8785, 0.8334, 0.7993, 0.7735, 0.7534",\
                 "1.328, 1.301, 1.229, 1.135, 1.044, 0.9727, 0.9213, 0.8826, 0.8531, 0.8301",\
                 "1.529, 1.501, 1.424, 1.321, 1.218, 1.134, 1.072, 1.024, 0.9873, 0.9584",\
                 "1.81, 1.782, 1.699, 1.586, 1.468, 1.367, 1.29, 1.229, 1.181, 1.143",\
                 "2.161, 2.131, 2.044, 1.92, 1.787, 1.668, 1.571, 1.494, 1.433, 1.383",\
                 "2.572, 2.541, 2.45, 2.317, 2.17, 2.03, 1.913, 1.818, 1.74, 1.677");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.7562, 0.7342, 0.6777, 0.6201, 0.582, 0.5547, 0.5364, 0.5253, 0.5182, 0.5111",\
                 "0.755, 0.7329, 0.6771, 0.6191, 0.5807, 0.5538, 0.5353, 0.5237, 0.5149, 0.5095",\
                 "0.7554, 0.7341, 0.6774, 0.6193, 0.5805, 0.5538, 0.5353, 0.5237, 0.5149, 0.51",\
                 "0.7689, 0.7471, 0.6905, 0.6321, 0.5929, 0.5651, 0.5463, 0.5336, 0.5242, 0.5188",\
                 "0.8229, 0.8006, 0.7424, 0.6818, 0.6395, 0.6074, 0.5854, 0.571, 0.5605, 0.554",\
                 "0.9365, 0.9132, 0.8515, 0.7856, 0.7347, 0.6952, 0.6668, 0.6463, 0.6337, 0.6228",\
                 "1.107, 1.083, 1.016, 0.9379, 0.878, 0.8313, 0.7933, 0.7646, 0.7464, 0.7284",\
                 "1.329, 1.304, 1.233, 1.143, 1.069, 1.011, 0.9649, 0.9279, 0.8977, 0.8763",\
                 "1.602, 1.576, 1.5, 1.401, 1.31, 1.238, 1.182, 1.136, 1.096, 1.066",\
                 "1.925, 1.897, 1.818, 1.711, 1.605, 1.517, 1.444, 1.387, 1.34, 1.301");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("1.091, 1.066, 0.9979, 0.9126, 0.8337, 0.7736, 0.7316, 0.7006, 0.6768, 0.6583",\
                 "1.091, 1.066, 0.9978, 0.9126, 0.8335, 0.7736, 0.7316, 0.7005, 0.6767, 0.6582",\
                 "1.091, 1.066, 0.9975, 0.9122, 0.8332, 0.7735, 0.7313, 0.7002, 0.6766, 0.6582",\
                 "1.092, 1.066, 0.9983, 0.9131, 0.834, 0.7744, 0.7324, 0.7013, 0.6775, 0.659",\
                 "1.095, 1.07, 1.002, 0.9165, 0.8373, 0.7776, 0.7354, 0.7042, 0.6805, 0.6621",\
                 "1.104, 1.079, 1.011, 0.9252, 0.8459, 0.7854, 0.7431, 0.7118, 0.6879, 0.6692",\
                 "1.121, 1.095, 1.026, 0.9399, 0.8593, 0.7984, 0.7553, 0.7236, 0.6991, 0.6801",\
                 "1.144, 1.119, 1.049, 0.9607, 0.8791, 0.8168, 0.7727, 0.7398, 0.7147, 0.6955",\
                 "1.173, 1.147, 1.076, 0.9873, 0.9035, 0.8392, 0.7938, 0.7601, 0.7343, 0.7145",\
                 "1.207, 1.18, 1.109, 1.019, 0.9328, 0.8666, 0.8197, 0.7847, 0.7579, 0.7369");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.7819, 0.7601, 0.7032, 0.6453, 0.6069, 0.5788, 0.5601, 0.5479, 0.5386, 0.5326",\
                 "0.7822, 0.7604, 0.7034, 0.6454, 0.6062, 0.5788, 0.5598, 0.5481, 0.541, 0.5344",\
                 "0.7821, 0.7604, 0.7032, 0.6456, 0.6064, 0.5789, 0.5601, 0.5479, 0.5386, 0.5332",\
                 "0.783, 0.761, 0.7042, 0.6464, 0.6073, 0.5797, 0.5603, 0.5491, 0.5404, 0.5344",\
                 "0.7841, 0.7623, 0.7054, 0.6473, 0.6081, 0.5804, 0.5618, 0.549, 0.5425, 0.5359",\
                 "0.7855, 0.7635, 0.7071, 0.6489, 0.6096, 0.5821, 0.5631, 0.5515, 0.5427, 0.5351",\
                 "0.7856, 0.7639, 0.7069, 0.6494, 0.6117, 0.5837, 0.5639, 0.5523, 0.5441, 0.5375",\
                 "0.7869, 0.7651, 0.7077, 0.6496, 0.6105, 0.5848, 0.5666, 0.5544, 0.5446, 0.5402",\
                 "0.7877, 0.766, 0.7089, 0.6509, 0.6104, 0.583, 0.5671, 0.5576, 0.5494, 0.5412",\
                 "0.7883, 0.7661, 0.7097, 0.6525, 0.611, 0.5837, 0.5647, 0.5569, 0.5514, 0.546");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.4476, 0.4731, 0.5425, 0.6439, 0.7723, 0.9256, 1.109, 1.327, 1.588, 1.895",\
                 "0.4503, 0.4761, 0.5454, 0.6467, 0.7751, 0.9283, 1.111, 1.33, 1.59, 1.898",\
                 "0.4589, 0.4845, 0.554, 0.6553, 0.7837, 0.9369, 1.12, 1.339, 1.599, 1.906",\
                 "0.4837, 0.5095, 0.5786, 0.6798, 0.8081, 0.9613, 1.144, 1.363, 1.623, 1.931",\
                 "0.5393, 0.5649, 0.6336, 0.7342, 0.8619, 1.015, 1.197, 1.416, 1.676, 1.983",\
                 "0.6295, 0.6555, 0.7241, 0.8244, 0.9513, 1.103, 1.285, 1.503, 1.762, 2.069",\
                 "0.7487, 0.7755, 0.8466, 0.9482, 1.076, 1.228, 1.409, 1.626, 1.884, 2.19",\
                 "0.8869, 0.9153, 0.9908, 1.098, 1.23, 1.385, 1.567, 1.783, 2.04, 2.345",\
                 "1.043, 1.073, 1.153, 1.266, 1.406, 1.567, 1.754, 1.972, 2.229, 2.532",\
                 "1.216, 1.248, 1.332, 1.452, 1.6, 1.77, 1.964, 2.188, 2.448, 2.751");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.3658, 0.3889, 0.4517, 0.5482, 0.6832, 0.8661, 1.105, 1.408, 1.779, 2.222",\
                 "0.366, 0.3891, 0.4521, 0.5486, 0.6835, 0.8665, 1.106, 1.409, 1.779, 2.223",\
                 "0.3667, 0.39, 0.4527, 0.5491, 0.684, 0.8669, 1.106, 1.409, 1.78, 2.222",\
                 "0.3733, 0.3965, 0.4592, 0.5555, 0.6902, 0.873, 1.112, 1.415, 1.785, 2.229",\
                 "0.3892, 0.4126, 0.4754, 0.5714, 0.7054, 0.8872, 1.126, 1.427, 1.798, 2.241",\
                 "0.4052, 0.4294, 0.4943, 0.5914, 0.7249, 0.9056, 1.143, 1.443, 1.813, 2.254",\
                 "0.4108, 0.4365, 0.5047, 0.6053, 0.7404, 0.9209, 1.157, 1.455, 1.823, 2.264",\
                 "0.4019, 0.429, 0.501, 0.6064, 0.745, 0.9275, 1.164, 1.461, 1.827, 2.265",\
                 "0.3763, 0.4053, 0.4812, 0.5914, 0.7347, 0.92, 1.159, 1.458, 1.823, 2.259",\
                 "0.3323, 0.3629, 0.4432, 0.559, 0.7072, 0.8961, 1.138, 1.44, 1.808, 2.244");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.1649, 0.1942, 0.2696, 0.3775, 0.5171, 0.7023, 0.9548, 1.285, 1.704, 2.216",\
                 "0.1641, 0.1946, 0.2691, 0.3773, 0.5172, 0.7027, 0.9551, 1.284, 1.703, 2.216",\
                 "0.1643, 0.1941, 0.2691, 0.3775, 0.5169, 0.7028, 0.9548, 1.284, 1.702, 2.216",\
                 "0.1647, 0.1944, 0.2696, 0.3771, 0.5172, 0.7029, 0.9554, 1.285, 1.703, 2.216",\
                 "0.1645, 0.1944, 0.2704, 0.3785, 0.5188, 0.7042, 0.9556, 1.285, 1.703, 2.216",\
                 "0.1722, 0.2022, 0.2774, 0.3856, 0.5244, 0.7084, 0.9588, 1.287, 1.704, 2.216",\
                 "0.1932, 0.2242, 0.3002, 0.4066, 0.5416, 0.7208, 0.9666, 1.293, 1.708, 2.218",\
                 "0.222, 0.2552, 0.3364, 0.445, 0.5778, 0.7482, 0.9852, 1.305, 1.714, 2.22",\
                 "0.2544, 0.29, 0.377, 0.4936, 0.6304, 0.7978, 1.023, 1.33, 1.728, 2.228",\
                 "0.2872, 0.3272, 0.4206, 0.5458, 0.689, 0.8604, 1.083, 1.378, 1.762, 2.246");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.1159, 0.1435, 0.2223, 0.3592, 0.5795, 0.9011, 1.339, 1.899, 2.586, 3.402",\
                 "0.1163, 0.1433, 0.2225, 0.3584, 0.5795, 0.9005, 1.339, 1.897, 2.581, 3.399",\
                 "0.1159, 0.144, 0.2223, 0.3592, 0.5795, 0.9012, 1.339, 1.9, 2.582, 3.402",\
                 "0.1157, 0.1432, 0.2223, 0.3585, 0.5796, 0.9003, 1.339, 1.897, 2.581, 3.399",\
                 "0.1187, 0.1456, 0.2239, 0.3607, 0.5802, 0.9028, 1.341, 1.897, 2.584, 3.399",\
                 "0.1276, 0.1564, 0.2351, 0.3686, 0.5842, 0.905, 1.339, 1.897, 2.582, 3.403",\
                 "0.1412, 0.171, 0.2522, 0.3872, 0.598, 0.9116, 1.345, 1.901, 2.586, 3.403",\
                 "0.1578, 0.1888, 0.274, 0.4116, 0.6202, 0.9292, 1.355, 1.906, 2.585, 3.4",\
                 "0.1762, 0.209, 0.2982, 0.4398, 0.6472, 0.9558, 1.379, 1.922, 2.595, 3.407",\
                 "0.2, 0.233, 0.3258, 0.4706, 0.6786, 0.9868, 1.411, 1.954, 2.62, 3.418");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.4981, 0.5238, 0.5931, 0.6945, 0.8232, 0.9767, 1.16, 1.379, 1.639, 1.947",\
                 "0.5012, 0.5269, 0.5962, 0.6976, 0.8264, 0.9799, 1.163, 1.382, 1.642, 1.95",\
                 "0.5146, 0.5402, 0.6096, 0.711, 0.8398, 0.9932, 1.176, 1.395, 1.656, 1.963",\
                 "0.5375, 0.5632, 0.6325, 0.7339, 0.8626, 1.016, 1.199, 1.418, 1.678, 1.986",\
                 "0.561, 0.5866, 0.6557, 0.7571, 0.8859, 1.039, 1.222, 1.441, 1.702, 2.009",\
                 "0.5823, 0.6076, 0.677, 0.7785, 0.9072, 1.06, 1.243, 1.462, 1.723, 2.03",\
                 "0.6, 0.6257, 0.6949, 0.7963, 0.9249, 1.078, 1.261, 1.48, 1.741, 2.048",\
                 "0.6121, 0.6378, 0.7073, 0.8088, 0.9376, 1.091, 1.274, 1.493, 1.753, 2.061",\
                 "0.6174, 0.6429, 0.7128, 0.8146, 0.9435, 1.097, 1.281, 1.499, 1.76, 2.067",\
                 "0.615, 0.6413, 0.7109, 0.8127, 0.9421, 1.096, 1.28, 1.498, 1.759, 2.066");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.5541, 0.5774, 0.6401, 0.7364, 0.8712, 1.054, 1.293, 1.596, 1.967, 2.411",\
                 "0.5574, 0.5807, 0.6433, 0.7396, 0.8745, 1.057, 1.296, 1.599, 1.97, 2.414",\
                 "0.572, 0.5953, 0.6579, 0.7544, 0.8892, 1.072, 1.311, 1.614, 1.985, 2.428",\
                 "0.5982, 0.6214, 0.684, 0.7805, 0.9152, 1.098, 1.337, 1.64, 2.011, 2.455",\
                 "0.6245, 0.6476, 0.7103, 0.8064, 0.9412, 1.124, 1.364, 1.666, 2.037, 2.48",\
                 "0.646, 0.669, 0.7319, 0.8282, 0.963, 1.146, 1.385, 1.688, 2.058, 2.502",\
                 "0.6612, 0.6845, 0.7471, 0.8435, 0.9784, 1.161, 1.4, 1.703, 2.073, 2.516",\
                 "0.6693, 0.6925, 0.7549, 0.8512, 0.986, 1.169, 1.408, 1.71, 2.081, 2.525",\
                 "0.6687, 0.6918, 0.7543, 0.8506, 0.9853, 1.168, 1.407, 1.71, 2.08, 2.523",\
                 "0.659, 0.6818, 0.7443, 0.8405, 0.9752, 1.158, 1.397, 1.7, 2.07, 2.513");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.1632, 0.1931, 0.2675, 0.3756, 0.5163, 0.7014, 0.9542, 1.285, 1.703, 2.216",\
                 "0.1631, 0.1933, 0.2677, 0.3756, 0.5161, 0.7017, 0.9542, 1.285, 1.702, 2.216",\
                 "0.1632, 0.1934, 0.2677, 0.3756, 0.5161, 0.7019, 0.9542, 1.284, 1.702, 2.215",\
                 "0.1636, 0.1933, 0.2675, 0.3755, 0.5162, 0.702, 0.9542, 1.286, 1.703, 2.216",\
                 "0.1629, 0.1931, 0.2674, 0.3756, 0.5164, 0.7018, 0.9546, 1.284, 1.704, 2.216",\
                 "0.163, 0.193, 0.2676, 0.3758, 0.5166, 0.7014, 0.955, 1.284, 1.702, 2.215",\
                 "0.1646, 0.195, 0.2692, 0.3772, 0.5174, 0.7024, 0.9544, 1.286, 1.704, 2.216",\
                 "0.167, 0.1968, 0.2716, 0.3796, 0.52, 0.7044, 0.955, 1.286, 1.703, 2.216",\
                 "0.1686, 0.1986, 0.2738, 0.3826, 0.523, 0.7072, 0.9582, 1.287, 1.703, 2.215",\
                 "0.1708, 0.201, 0.2764, 0.3856, 0.5266, 0.7102, 0.9602, 1.29, 1.706, 2.214");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.04333, 0.1252, 0.2816, 0.5252, 0.8671, 1.317, 1.884, 2.575, 3.4");
          index_2("0.001, 0.004156, 0.01523, 0.03639, 0.06934, 0.1156, 0.1764, 0.2531, 0.3467, 0.4582");
          values("0.1162, 0.1435, 0.2218, 0.3587, 0.5794, 0.902, 1.337, 1.9, 2.583, 3.403",\
                 "0.1162, 0.1428, 0.2218, 0.3587, 0.5799, 0.9009, 1.339, 1.9, 2.586, 3.397",\
                 "0.1161, 0.1428, 0.2218, 0.3587, 0.5796, 0.9005, 1.339, 1.9, 2.581, 3.399",\
                 "0.1161, 0.1433, 0.2217, 0.3587, 0.5797, 0.9016, 1.337, 1.899, 2.582, 3.4",\
                 "0.1159, 0.1428, 0.2217, 0.3594, 0.5798, 0.9006, 1.34, 1.897, 2.587, 3.398",\
                 "0.1156, 0.1436, 0.2216, 0.359, 0.5794, 0.901, 1.339, 1.9, 2.583, 3.399",\
                 "0.1156, 0.1428, 0.2218, 0.3586, 0.58, 0.9024, 1.34, 1.898, 2.586, 3.401",\
                 "0.1148, 0.142, 0.2214, 0.3586, 0.5798, 0.902, 1.339, 1.899, 2.587, 3.405",\
                 "0.115, 0.1422, 0.2212, 0.3584, 0.579, 0.9008, 1.338, 1.897, 2.585, 3.401",\
                 "0.1144, 0.1416, 0.2208, 0.3584, 0.5792, 0.9018, 1.339, 1.897, 2.582, 3.4");
        }
      }
    }
  }

