/*
 * 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_4) {
    area : 61.465600 ;

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&!E" ;
      value : "7.635276e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!D&E" ;
      value : "5.433318e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&!E" ;
      value : "9.458262e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "D&E" ;
      value : "5.22918e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "9.458262e-05" ;
    }

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.003099, 0.0031, 0.003094, 0.003097, 0.003099, 0.003102, 0.003104, \
                  0.003101, 0.003102, 0.003102");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.002762, -0.002761, -0.002786, -0.002814, -0.00282, -0.002827, \
                  -0.00284, -0.002836, -0.002846, -0.002848");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-1.351, -1.332, -1.273, -1.185, -1.094, -0.991, -0.875, -0.741, -0.597, -0.428",\
                 "-1.361, -1.346, -1.295, -1.205, -1.109, -1.007, -0.892, -0.761, -0.611, -0.442",\
                 "-1.419, -1.398, -1.344, -1.251, -1.163, -1.058, -0.941, -0.809, -0.663, -0.494",\
                 "-1.5, -1.483, -1.424, -1.34, -1.249, -1.144, -1.026, -0.894, -0.75, -0.575",\
                 "-1.633, -1.618, -1.562, -1.473, -1.377, -1.27, -1.155, -1.028, -0.878, -0.71",\
                 "-1.818, -1.801, -1.751, -1.66, -1.566, -1.458, -1.349, -1.214, -1.067, -0.892",\
                 "-2.075, -2.058, -2.004, -1.91, -1.813, -1.717, -1.595, -1.459, -1.311, -1.139",\
                 "-2.368, -2.355, -2.303, -2.211, -2.119, -2.009, -1.89, -1.751, -1.598, -1.421",\
                 "-2.706, -2.689, -2.636, -2.544, -2.444, -2.342, -2.219, -2.082, -1.924, -1.741",\
                 "-3.076, -3.061, -3.004, -2.913, -2.811, -2.706, -2.58, -2.442, -2.281, -2.097");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("-0.395, -0.375, -0.315, -0.189, -0.036, 0.128, 0.303, 0.501, 0.714, 0.958",\
                 "-0.404, -0.389, -0.324, -0.202, -0.046, 0.119, 0.292, 0.485, 0.705, 0.946",\
                 "-0.431, -0.416, -0.355, -0.227, -0.08, 0.084, 0.264, 0.457, 0.679, 0.917",\
                 "-0.496, -0.472, -0.408, -0.292, -0.135, 0.024, 0.205, 0.396, 0.618, 0.861",\
                 "-0.588, -0.568, -0.508, -0.384, -0.235, -0.067, 0.113, 0.305, 0.526, 0.77",\
                 "-0.691, -0.676, -0.614, -0.492, -0.343, -0.173, 0.001, 0.199, 0.42, 0.662",\
                 "-0.787, -0.777, -0.711, -0.591, -0.444, -0.276, -0.097, 0.106, 0.327, 0.57",\
                 "-0.871, -0.859, -0.797, -0.675, -0.525, -0.36, -0.177, 0.018, 0.245, 0.488",\
                 "-0.937, -0.917, -0.858, -0.737, -0.586, -0.42, -0.242, -0.04, 0.18, 0.427",\
                 "-0.967, -0.954, -0.892, -0.772, -0.619, -0.456, -0.275, -0.077, 0.152, 0.398");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("1.569, 1.55, 1.495, 1.419, 1.341, 1.273, 1.209, 1.157, 1.125, 1.117",\
                 "1.579, 1.563, 1.511, 1.435, 1.359, 1.286, 1.224, 1.173, 1.137, 1.127",\
                 "1.632, 1.614, 1.561, 1.485, 1.407, 1.333, 1.27, 1.217, 1.179, 1.16",\
                 "1.717, 1.697, 1.647, 1.568, 1.491, 1.417, 1.347, 1.295, 1.252, 1.234",\
                 "1.843, 1.823, 1.77, 1.697, 1.613, 1.539, 1.476, 1.413, 1.37, 1.336",\
                 "2.026, 2.013, 1.954, 1.879, 1.8, 1.719, 1.651, 1.591, 1.536, 1.494",\
                 "2.272, 2.258, 2.201, 2.127, 2.043, 1.96, 1.885, 1.817, 1.753, 1.694",\
                 "2.576, 2.556, 2.501, 2.42, 2.338, 2.251, 2.17, 2.088, 2.007, 1.934",\
                 "2.91, 2.894, 2.834, 2.754, 2.671, 2.585, 2.492, 2.399, 2.308, 2.22",\
                 "3.275, 3.261, 3.208, 3.126, 3.029, 2.937, 2.84, 2.739, 2.638, 2.526");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.555, 0.534, 0.479, 0.353, 0.197, 0.042, -0.14, -0.331, -0.542, -0.776",\
                 "0.562, 0.546, 0.482, 0.358, 0.206, 0.045, -0.133, -0.323, -0.532, -0.771",\
                 "0.596, 0.574, 0.511, 0.392, 0.238, 0.077, -0.097, -0.288, -0.507, -0.738",\
                 "0.643, 0.628, 0.564, 0.444, 0.29, 0.13, -0.044, -0.236, -0.451, -0.683",\
                 "0.736, 0.716, 0.651, 0.531, 0.383, 0.223, 0.052, -0.139, -0.352, -0.591",\
                 "0.842, 0.821, 0.759, 0.64, 0.491, 0.33, 0.161, -0.031, -0.244, -0.487",\
                 "0.93, 0.915, 0.849, 0.735, 0.582, 0.427, 0.258, 0.065, -0.148, -0.389",\
                 "1.003, 0.993, 0.926, 0.808, 0.661, 0.502, 0.332, 0.146, -0.073, -0.311",\
                 "1.058, 1.046, 0.983, 0.862, 0.715, 0.554, 0.384, 0.191, -0.025, -0.256",\
                 "1.091, 1.071, 1.011, 0.888, 0.742, 0.58, 0.405, 0.215, 0.005, -0.236");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.03278, 0.03256, 0.03221, 0.03221, 0.03274, 0.0338, 0.03537, \
                  0.03753, 0.04037, 0.04393");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.01885, 0.01872, 0.01843, 0.01833, 0.01864, 0.01952, 0.02093, \
                  0.02295, 0.02553, 0.0288");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.03358, 0.03334, 0.03299, 0.03301, 0.03356, 0.03462, 0.0362, \
                  0.03839, 0.04125, 0.04484");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.0186, 0.01848, 0.01819, 0.01811, 0.01843, 0.01926, 0.02065, \
                  0.02263, 0.02521, 0.02845");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 0.9448 ;
      max_transition : 6.8 ;
      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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.1285, 0.1234, 0.1131, 0.1068, 0.1036, 0.1018, 0.1008, 0.1001, 0.09969, 0.09938",\
                 "0.1283, 0.1233, 0.113, 0.1068, 0.1036, 0.1018, 0.1007, 0.1001, 0.09962, 0.09933",\
                 "0.1283, 0.1233, 0.113, 0.1068, 0.1035, 0.1017, 0.1007, 0.09999, 0.09954, 0.09925",\
                 "0.1282, 0.1231, 0.1129, 0.1066, 0.1034, 0.1016, 0.1006, 0.09989, 0.09941, 0.09913",\
                 "0.1281, 0.123, 0.1128, 0.1065, 0.1033, 0.1015, 0.1004, 0.09977, 0.09934, 0.09905",\
                 "0.1283, 0.1232, 0.1129, 0.1066, 0.1034, 0.1015, 0.1005, 0.09983, 0.09941, 0.09912",\
                 "0.1303, 0.1252, 0.1147, 0.1081, 0.1046, 0.1026, 0.1015, 0.1008, 0.1003, 0.1",\
                 "0.1354, 0.1301, 0.1188, 0.1116, 0.1076, 0.1053, 0.1039, 0.103, 0.1024, 0.102",\
                 "0.1418, 0.1363, 0.1242, 0.1159, 0.1114, 0.1087, 0.107, 0.1059, 0.1052, 0.1047",\
                 "0.1488, 0.143, 0.1301, 0.121, 0.1158, 0.1127, 0.1107, 0.1093, 0.1084, 0.1078");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.07931, 0.07788, 0.07635, 0.07583, 0.07631, 0.0772, 0.07825, 0.07919, 0.08006, 0.08087",\
                 "0.07919, 0.07783, 0.07625, 0.07583, 0.07617, 0.0772, 0.07781, 0.0788, 0.07986, 0.08146",\
                 "0.07907, 0.07766, 0.07613, 0.07555, 0.07603, 0.07682, 0.07795, 0.0788, 0.07986, 0.08047",\
                 "0.07895, 0.07755, 0.07602, 0.07545, 0.07587, 0.07666, 0.07769, 0.0786, 0.07966, 0.08067",\
                 "0.07939, 0.07796, 0.07635, 0.07561, 0.07593, 0.07666, 0.07785, 0.0784, 0.07946, 0.08144",\
                 "0.08129, 0.07954, 0.07773, 0.07668, 0.07645, 0.0772, 0.07813, 0.0788, 0.07986, 0.08184",\
                 "0.08389, 0.08179, 0.07936, 0.07808, 0.07793, 0.07811, 0.07884, 0.07959, 0.08085, 0.08221",\
                 "0.08736, 0.08476, 0.08192, 0.07988, 0.07922, 0.07999, 0.08041, 0.08097, 0.08184, 0.08281",\
                 "0.09197, 0.08877, 0.0851, 0.08281, 0.08132, 0.08141, 0.08276, 0.08335, 0.08322, 0.08474",\
                 "0.09732, 0.09352, 0.0891, 0.08624, 0.0848, 0.08373, 0.08415, 0.08592, 0.08667, 0.08666");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.1236, 0.1185, 0.1082, 0.102, 0.09881, 0.09704, 0.09598, 0.09532, 0.09489, 0.09457",\
                 "0.1236, 0.1185, 0.1082, 0.102, 0.09881, 0.09705, 0.09599, 0.09533, 0.09491, 0.09459",\
                 "0.1236, 0.1185, 0.1082, 0.102, 0.09878, 0.09702, 0.09596, 0.0953, 0.09485, 0.09455",\
                 "0.1234, 0.1184, 0.1081, 0.1019, 0.09869, 0.09693, 0.09587, 0.0952, 0.09479, 0.09447",\
                 "0.1233, 0.1183, 0.108, 0.1018, 0.0986, 0.09684, 0.09578, 0.09511, 0.09468, 0.09437",\
                 "0.1233, 0.1182, 0.108, 0.1017, 0.09853, 0.09675, 0.0957, 0.09504, 0.09458, 0.09429",\
                 "0.1233, 0.1182, 0.1079, 0.1017, 0.0985, 0.09671, 0.09566, 0.09499, 0.09455, 0.09423",\
                 "0.1232, 0.1181, 0.1078, 0.1016, 0.09839, 0.09663, 0.09557, 0.0949, 0.09444, 0.09416",\
                 "0.1231, 0.1181, 0.1078, 0.1016, 0.09835, 0.09659, 0.09553, 0.09484, 0.09438, 0.09406",\
                 "0.1231, 0.1181, 0.1078, 0.1015, 0.09829, 0.09655, 0.09548, 0.09478, 0.09436, 0.09404");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.08117, 0.07978, 0.07825, 0.07776, 0.07805, 0.07885, 0.07969, 0.08059, 0.08185, 0.08326",\
                 "0.08116, 0.07973, 0.07817, 0.07773, 0.07795, 0.07874, 0.07971, 0.08072, 0.08178, 0.08279",\
                 "0.08112, 0.07969, 0.07825, 0.0779, 0.07811, 0.07883, 0.07975, 0.08081, 0.08187, 0.08328",\
                 "0.08115, 0.07972, 0.07821, 0.07778, 0.07811, 0.07889, 0.07973, 0.08049, 0.08175, 0.08353",\
                 "0.08108, 0.07968, 0.07822, 0.07766, 0.07792, 0.07885, 0.07972, 0.08057, 0.08163, 0.08341",\
                 "0.08117, 0.07978, 0.07824, 0.07774, 0.07814, 0.07899, 0.07974, 0.08073, 0.08179, 0.08298",\
                 "0.08112, 0.07967, 0.07816, 0.07779, 0.07808, 0.07887, 0.08008, 0.08092, 0.08179, 0.08295",\
                 "0.08117, 0.0797, 0.07814, 0.07745, 0.07792, 0.0793, 0.08027, 0.08092, 0.08198, 0.08431",\
                 "0.08117, 0.07974, 0.07817, 0.07786, 0.07758, 0.07815, 0.08041, 0.08151, 0.08158, 0.0835",\
                 "0.08119, 0.07984, 0.07822, 0.07775, 0.07812, 0.07831, 0.07994, 0.08163, 0.08318, 0.08474");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("1.497, 1.571, 1.762, 2.01, 2.277, 2.564, 2.881, 3.235, 3.637, 4.094",\
                 "1.513, 1.587, 1.778, 2.025, 2.293, 2.58, 2.897, 3.251, 3.652, 4.11",\
                 "1.564, 1.638, 1.829, 2.077, 2.344, 2.631, 2.948, 3.302, 3.703, 4.161",\
                 "1.649, 1.723, 1.914, 2.162, 2.429, 2.716, 3.033, 3.388, 3.789, 4.246",\
                 "1.78, 1.855, 2.045, 2.293, 2.56, 2.848, 3.165, 3.519, 3.92, 4.377",\
                 "1.969, 2.043, 2.234, 2.482, 2.749, 3.037, 3.353, 3.707, 4.108, 4.565",\
                 "2.221, 2.295, 2.486, 2.734, 3, 3.289, 3.606, 3.96, 4.361, 4.818",\
                 "2.518, 2.595, 2.791, 3.043, 3.314, 3.604, 3.921, 4.276, 4.677, 5.135",\
                 "2.849, 2.928, 3.131, 3.393, 3.672, 3.969, 4.291, 4.649, 5.051, 5.509",\
                 "3.216, 3.297, 3.506, 3.777, 4.066, 4.371, 4.701, 5.063, 5.47, 5.929");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.7835, 0.8464, 1.016, 1.255, 1.565, 1.968, 2.488, 3.14, 3.935, 4.883",\
                 "0.794, 0.857, 1.026, 1.265, 1.575, 1.979, 2.499, 3.151, 3.945, 4.893",\
                 "0.8244, 0.8875, 1.057, 1.296, 1.606, 2.009, 2.529, 3.181, 3.976, 4.924",\
                 "0.8827, 0.9458, 1.115, 1.354, 1.664, 2.067, 2.587, 3.24, 4.034, 4.982",\
                 "0.9735, 1.037, 1.206, 1.445, 1.754, 2.158, 2.678, 3.33, 4.124, 5.072",\
                 "1.082, 1.146, 1.319, 1.561, 1.871, 2.274, 2.794, 3.446, 4.24, 5.188",\
                 "1.183, 1.249, 1.429, 1.677, 1.991, 2.396, 2.916, 3.567, 4.361, 5.307",\
                 "1.269, 1.338, 1.524, 1.779, 2.098, 2.505, 3.026, 3.677, 4.471, 5.417",\
                 "1.334, 1.406, 1.599, 1.862, 2.186, 2.596, 3.117, 3.768, 4.562, 5.508",\
                 "1.375, 1.449, 1.65, 1.922, 2.252, 2.663, 3.185, 3.836, 4.63, 5.575");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.3718, 0.4384, 0.6068, 0.7892, 0.9916, 1.259, 1.602, 2.041, 2.593, 3.28",\
                 "0.3726, 0.4386, 0.6068, 0.7894, 0.9914, 1.259, 1.604, 2.041, 2.593, 3.282",\
                 "0.3722, 0.4386, 0.6072, 0.7898, 0.9912, 1.259, 1.602, 2.041, 2.594, 3.281",\
                 "0.3718, 0.4386, 0.607, 0.7896, 0.9914, 1.259, 1.604, 2.041, 2.594, 3.281",\
                 "0.3724, 0.4384, 0.607, 0.7898, 0.992, 1.259, 1.6, 2.041, 2.594, 3.281",\
                 "0.3726, 0.4384, 0.607, 0.7894, 0.9914, 1.259, 1.599, 2.04, 2.594, 3.281",\
                 "0.377, 0.4424, 0.6106, 0.792, 0.9944, 1.26, 1.601, 2.043, 2.597, 3.281",\
                 "0.4008, 0.4666, 0.634, 0.8122, 1.008, 1.27, 1.607, 2.047, 2.6, 3.283",\
                 "0.425, 0.4942, 0.6666, 0.85, 1.045, 1.299, 1.631, 2.063, 2.612, 3.29",\
                 "0.4516, 0.5214, 0.6992, 0.888, 1.087, 1.341, 1.67, 2.093, 2.631, 3.302");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.2084, 0.2758, 0.4576, 0.733, 1.163, 1.805, 2.679, 3.798, 5.169, 6.799",\
                 "0.2083, 0.2757, 0.4577, 0.733, 1.162, 1.805, 2.678, 3.796, 5.164, 6.805",\
                 "0.2084, 0.2757, 0.4576, 0.7328, 1.163, 1.805, 2.68, 3.798, 5.169, 6.796",\
                 "0.2086, 0.2758, 0.4576, 0.733, 1.162, 1.805, 2.679, 3.797, 5.168, 6.801",\
                 "0.2094, 0.2764, 0.4582, 0.7336, 1.164, 1.804, 2.679, 3.797, 5.166, 6.804",\
                 "0.2202, 0.288, 0.4694, 0.7386, 1.168, 1.806, 2.68, 3.798, 5.167, 6.804",\
                 "0.235, 0.3044, 0.4906, 0.759, 1.18, 1.81, 2.678, 3.793, 5.161, 6.802",\
                 "0.2524, 0.323, 0.5142, 0.7812, 1.197, 1.82, 2.682, 3.799, 5.165, 6.796",\
                 "0.2724, 0.344, 0.5398, 0.8064, 1.215, 1.832, 2.689, 3.796, 5.163, 6.792",\
                 "0.2954, 0.3678, 0.5682, 0.8328, 1.237, 1.845, 2.697, 3.803, 5.163, 6.797");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("1.558, 1.633, 1.823, 2.071, 2.338, 2.626, 2.943, 3.297, 3.698, 4.155",\
                 "1.572, 1.646, 1.837, 2.085, 2.351, 2.639, 2.957, 3.311, 3.712, 4.169",\
                 "1.619, 1.694, 1.884, 2.132, 2.399, 2.687, 3.004, 3.358, 3.759, 4.217",\
                 "1.69, 1.765, 1.955, 2.203, 2.471, 2.759, 3.075, 3.429, 3.83, 4.288",\
                 "1.752, 1.826, 2.016, 2.264, 2.531, 2.82, 3.136, 3.49, 3.891, 4.349",\
                 "1.796, 1.87, 2.06, 2.308, 2.575, 2.864, 3.18, 3.534, 3.935, 4.392",\
                 "1.821, 1.895, 2.086, 2.334, 2.601, 2.89, 3.206, 3.56, 3.961, 4.419",\
                 "1.828, 1.903, 2.093, 2.341, 2.609, 2.897, 3.213, 3.568, 3.969, 4.426",\
                 "1.815, 1.89, 2.08, 2.328, 2.596, 2.884, 3.201, 3.555, 3.956, 4.414",\
                 "1.783, 1.857, 2.048, 2.296, 2.563, 2.852, 3.168, 3.522, 3.924, 4.381");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("1.153, 1.216, 1.385, 1.624, 1.934, 2.338, 2.858, 3.51, 4.304, 5.252",\
                 "1.167, 1.23, 1.399, 1.638, 1.948, 2.352, 2.872, 3.523, 4.318, 5.264",\
                 "1.215, 1.278, 1.447, 1.686, 1.996, 2.4, 2.92, 3.571, 4.367, 5.314",\
                 "1.289, 1.352, 1.521, 1.761, 2.071, 2.474, 2.994, 3.646, 4.441, 5.388",\
                 "1.353, 1.417, 1.586, 1.825, 2.135, 2.538, 3.058, 3.71, 4.505, 5.452",\
                 "1.399, 1.462, 1.631, 1.87, 2.18, 2.584, 3.104, 3.756, 4.551, 5.498",\
                 "1.426, 1.489, 1.658, 1.897, 2.207, 2.611, 3.131, 3.783, 4.578, 5.526",\
                 "1.435, 1.498, 1.667, 1.906, 2.216, 2.62, 3.14, 3.791, 4.587, 5.533",\
                 "1.422, 1.485, 1.654, 1.894, 2.204, 2.607, 3.127, 3.778, 4.573, 5.519",\
                 "1.387, 1.451, 1.62, 1.859, 2.169, 2.573, 3.093, 3.744, 4.539, 5.484");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.3724, 0.4384, 0.6064, 0.7892, 0.9916, 1.259, 1.6, 2.04, 2.596, 3.281",\
                 "0.3722, 0.4384, 0.6064, 0.7894, 0.9918, 1.259, 1.601, 2.04, 2.597, 3.28",\
                 "0.3724, 0.4384, 0.6066, 0.7892, 0.9924, 1.259, 1.601, 2.041, 2.594, 3.282",\
                 "0.3724, 0.4382, 0.6066, 0.7894, 0.9914, 1.257, 1.601, 2.041, 2.596, 3.278",\
                 "0.3722, 0.4388, 0.6066, 0.7892, 0.9922, 1.257, 1.601, 2.041, 2.595, 3.279",\
                 "0.3724, 0.4386, 0.6066, 0.7896, 0.9924, 1.257, 1.602, 2.043, 2.593, 3.281",\
                 "0.3726, 0.4388, 0.6068, 0.7896, 0.9916, 1.257, 1.603, 2.042, 2.596, 3.281",\
                 "0.3726, 0.4386, 0.607, 0.79, 0.9922, 1.256, 1.6, 2.042, 2.598, 3.281",\
                 "0.3728, 0.4398, 0.6066, 0.7898, 0.9918, 1.257, 1.602, 2.039, 2.595, 3.276",\
                 "0.373, 0.4394, 0.607, 0.79, 0.9914, 1.256, 1.601, 2.04, 2.596, 3.277");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.007514, 0.03038, 0.07404, 0.1421, 0.2375, 0.3631, 0.5214, 0.7145, 0.9448");
          values("0.2084, 0.2756, 0.457, 0.7324, 1.163, 1.804, 2.677, 3.796, 5.166, 6.803",\
                 "0.2086, 0.2756, 0.457, 0.732, 1.164, 1.802, 2.675, 3.794, 5.16, 6.806",\
                 "0.2086, 0.2758, 0.4574, 0.7326, 1.165, 1.805, 2.68, 3.795, 5.169, 6.805",\
                 "0.2084, 0.2758, 0.4576, 0.732, 1.164, 1.803, 2.68, 3.798, 5.169, 6.805",\
                 "0.2086, 0.2758, 0.457, 0.732, 1.164, 1.804, 2.678, 3.797, 5.165, 6.805",\
                 "0.2086, 0.2756, 0.4576, 0.732, 1.164, 1.805, 2.677, 3.798, 5.165, 6.802",\
                 "0.2086, 0.2756, 0.4572, 0.7318, 1.163, 1.804, 2.679, 3.798, 5.169, 6.798",\
                 "0.2088, 0.2758, 0.4572, 0.7318, 1.164, 1.802, 2.676, 3.797, 5.161, 6.807",\
                 "0.2086, 0.2758, 0.457, 0.7332, 1.164, 1.806, 2.676, 3.789, 5.157, 6.799",\
                 "0.209, 0.2756, 0.4572, 0.733, 1.165, 1.806, 2.676, 3.792, 5.162, 6.785");
        }
      }
    }
  }

