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

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

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

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

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

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

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

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

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

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

      internal_power() {
        when : "!E" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("0.04279, 0.04269, 0.04275, 0.04276, 0.0428, 0.04277, 0.04271, \
                  0.04272, 0.04276, 0.04273");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("-0.03945, -0.03946, -0.0394, -0.03938, -0.03952, -0.03954, -0.03954, \
                  -0.03961, -0.0397, -0.03971");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("-0.4008, -0.395, -0.3799, -0.3557, -0.3343, -0.302, -0.2756, -0.2373, -0.19, -0.14",\
                 "-0.4021, -0.3996, -0.3837, -0.3594, -0.337, -0.3088, -0.2737, -0.2407, -0.1924, -0.142",\
                 "-0.4063, -0.4025, -0.3857, -0.3667, -0.34, -0.3164, -0.2831, -0.2435, -0.2009, -0.148",\
                 "-0.425, -0.4248, -0.4073, -0.3862, -0.3548, -0.3303, -0.2985, -0.2654, -0.2171, -0.16",\
                 "-0.47, -0.4678, -0.4472, -0.4264, -0.4049, -0.3716, -0.3439, -0.3048, -0.2555, -0.203",\
                 "-0.5342, -0.534, -0.5205, -0.4972, -0.4721, -0.4459, -0.4077, -0.3712, -0.3213, -0.267",\
                 "-0.6377, -0.6327, -0.6193, -0.5942, -0.5693, -0.5426, -0.5087, -0.4717, -0.4219, -0.366",\
                 "-0.7622, -0.7518, -0.7399, -0.7164, -0.6936, -0.6626, -0.6312, -0.5926, -0.5491, -0.4993",\
                 "-0.8989, -0.8995, -0.8804, -0.8586, -0.8362, -0.8064, -0.775, -0.7438, -0.7028, -0.6518",\
                 "-1.06, -1.052, -1.041, -1.016, -0.9947, -0.9652, -0.9381, -0.908, -0.8681, -0.8181");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("-0.1889, -0.1821, -0.1668, -0.1313, -0.0842, -0.0295, 0.0332, 0.0987, 0.171, 0.25",\
                 "-0.1891, -0.1869, -0.1679, -0.1317, -0.0872, -0.0309, 0.0328, 0.0989, 0.172, 0.251",\
                 "-0.1932, -0.1867, -0.1704, -0.1334, -0.0826, -0.0358, 0.0314, 0.0994, 0.167, 0.253",\
                 "-0.2005, -0.1971, -0.1739, -0.138, -0.0915, -0.045, 0.0214, 0.0907, 0.164, 0.242",\
                 "-0.2199, -0.2111, -0.1899, -0.1542, -0.112, -0.0594, -0.0004, 0.0702, 0.141, 0.231",\
                 "-0.2335, -0.2276, -0.2143, -0.1776, -0.1333, -0.0797, -0.0198, 0.0447, 0.122, 0.212",\
                 "-0.2518, -0.248, -0.2297, -0.1925, -0.1504, -0.0967, -0.04, 0.0321, 0.107, 0.189",\
                 "-0.2625, -0.2556, -0.2347, -0.1967, -0.1548, -0.1042, -0.0457, 0.0237, 0.097, 0.183",\
                 "-0.2502, -0.2456, -0.2258, -0.1949, -0.1481, -0.0934, -0.0341, 0.0319, 0.111, 0.193",\
                 "-0.2288, -0.222, -0.2088, -0.1726, -0.1249, -0.0702, -0.004, 0.0607, 0.135, 0.22");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("0.4637, 0.462, 0.446, 0.4338, 0.4154, 0.4241, 0.4556, 0.5302, 0.6243, 0.7474",\
                 "0.469, 0.464, 0.4454, 0.4302, 0.4203, 0.4234, 0.4563, 0.528, 0.6302, 0.753",\
                 "0.4724, 0.4719, 0.4575, 0.435, 0.4308, 0.4287, 0.4609, 0.5321, 0.6275, 0.7428",\
                 "0.4933, 0.4856, 0.4756, 0.4552, 0.4426, 0.4501, 0.4771, 0.5444, 0.6287, 0.7402",\
                 "0.5308, 0.5303, 0.5154, 0.4965, 0.4848, 0.4847, 0.5116, 0.5636, 0.6457, 0.7448",\
                 "0.6093, 0.601, 0.5868, 0.5655, 0.5519, 0.5494, 0.5628, 0.6028, 0.6704, 0.7633",\
                 "0.708, 0.704, 0.688, 0.669, 0.645, 0.64, 0.6461, 0.6761, 0.7231, 0.8041",\
                 "0.8394, 0.8304, 0.8214, 0.7934, 0.7674, 0.7574, 0.7604, 0.7824, 0.8264, 0.8834",\
                 "0.989, 0.985, 0.968, 0.945, 0.922, 0.901, 0.897, 0.91, 0.946, 1.004",\
                 "1.161, 1.153, 1.138, 1.116, 1.093, 1.071, 1.055, 1.054, 1.087, 1.134");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("0.2347, 0.2307, 0.2109, 0.18, 0.1315, 0.0859, 0.0247, -0.0384, -0.1148, -0.1854",\
                 "0.2317, 0.232, 0.2141, 0.1773, 0.1289, 0.0788, 0.0194, -0.0379, -0.1091, -0.1856",\
                 "0.2373, 0.2329, 0.2153, 0.1789, 0.1356, 0.0817, 0.0233, -0.0362, -0.109, -0.1865",\
                 "0.2494, 0.2376, 0.2195, 0.1862, 0.1441, 0.0906, 0.0307, -0.0331, -0.1026, -0.1804",\
                 "0.2605, 0.2597, 0.2429, 0.2069, 0.1598, 0.1059, 0.0507, -0.0122, -0.082, -0.1659",\
                 "0.2805, 0.2755, 0.2602, 0.2232, 0.1798, 0.1274, 0.0683, 0.0028, -0.0716, -0.1498",\
                 "0.2969, 0.2937, 0.2708, 0.2371, 0.1923, 0.1451, 0.0858, 0.0156, -0.0585, -0.1402",\
                 "0.3055, 0.2991, 0.2798, 0.2448, 0.197, 0.1457, 0.0865, 0.0237, -0.0512, -0.1341",\
                 "0.29, 0.285, 0.267, 0.232, 0.188, 0.137, 0.075, 0.005, -0.0688, -0.1508",\
                 "0.265, 0.258, 0.238, 0.203, 0.158, 0.105, 0.043, -0.023, -0.099, -0.179");
        }
      }
    }

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

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("0.3632, 0.3643, 0.383, 0.438, 0.5343, 0.676, 0.8656, 1.105, 1.396, \
                  1.743");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("0.2001, 0.2007, 0.2152, 0.2612, 0.3453, 0.4711, 0.6404, 0.8554, \
                  1.119, 1.432");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("0.3663, 0.3676, 0.3871, 0.4425, 0.5393, 0.6813, 0.8704, 1.109, \
                  1.401, 1.748");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          values("0.1968, 0.1974, 0.2116, 0.2569, 0.3404, 0.4659, 0.6349, 0.8502, \
                  1.113, 1.427");
        }
      }

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

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

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

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

    pin(Q) {
      direction : output ;
      function : "IQN1" ;
      max_capacitance : 1.51 ;
      max_transition : 2.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.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("4.121, 4.025, 3.754, 3.39, 3.021, 2.728, 2.525, 2.372, 2.253, 2.159",\
                 "4.12, 4.024, 3.753, 3.389, 3.019, 2.727, 2.524, 2.372, 2.252, 2.158",\
                 "4.121, 4.025, 3.755, 3.39, 3.021, 2.728, 2.525, 2.372, 2.253, 2.159",\
                 "4.136, 4.042, 3.77, 3.405, 3.036, 2.743, 2.54, 2.387, 2.268, 2.174",\
                 "4.202, 4.106, 3.834, 3.468, 3.097, 2.8, 2.595, 2.44, 2.319, 2.224",\
                 "4.373, 4.278, 4.004, 3.633, 3.253, 2.948, 2.734, 2.571, 2.444, 2.344",\
                 "4.708, 4.611, 4.333, 3.95, 3.553, 3.227, 2.994, 2.814, 2.674, 2.563",\
                 "5.231, 5.131, 4.844, 4.445, 4.022, 3.664, 3.4, 3.194, 3.031, 2.901",\
                 "5.934, 5.833, 5.537, 5.115, 4.657, 4.258, 3.953, 3.712, 3.517, 3.361",\
                 "6.79, 6.686, 6.379, 5.936, 5.444, 4.993, 4.64, 4.357, 4.126, 3.936");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("2.4, 2.313, 2.081, 1.865, 1.718, 1.611, 1.53, 1.477, 1.443, 1.416",\
                 "2.398, 2.311, 2.079, 1.861, 1.717, 1.609, 1.531, 1.477, 1.441, 1.42",\
                 "2.398, 2.312, 2.08, 1.861, 1.717, 1.608, 1.529, 1.476, 1.439, 1.42",\
                 "2.417, 2.33, 2.099, 1.882, 1.736, 1.625, 1.545, 1.491, 1.452, 1.434",\
                 "2.513, 2.425, 2.193, 1.973, 1.821, 1.706, 1.617, 1.561, 1.521, 1.494",\
                 "2.759, 2.668, 2.431, 2.198, 2.03, 1.895, 1.792, 1.722, 1.671, 1.635",\
                 "3.157, 3.063, 2.81, 2.551, 2.368, 2.211, 2.08, 1.986, 1.919, 1.863",\
                 "3.686, 3.589, 3.322, 3.021, 2.806, 2.63, 2.48, 2.348, 2.257, 2.18",\
                 "4.327, 4.224, 3.943, 3.606, 3.348, 3.135, 2.964, 2.815, 2.695, 2.591",\
                 "5.069, 4.961, 4.666, 4.296, 3.999, 3.747, 3.535, 3.368, 3.226, 3.092");
        }
      }

      internal_power() {
        related_pin : "E" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("4.045, 3.95, 3.68, 3.316, 2.947, 2.656, 2.453, 2.301, 2.182, 2.088",\
                 "4.045, 3.95, 3.679, 3.316, 2.947, 2.655, 2.453, 2.3, 2.182, 2.088",\
                 "4.044, 3.949, 3.678, 3.315, 2.947, 2.655, 2.453, 2.3, 2.181, 2.088",\
                 "4.043, 3.949, 3.678, 3.314, 2.946, 2.654, 2.452, 2.299, 2.181, 2.087",\
                 "4.046, 3.952, 3.681, 3.317, 2.948, 2.657, 2.454, 2.302, 2.183, 2.09",\
                 "4.054, 3.96, 3.689, 3.326, 2.957, 2.665, 2.462, 2.309, 2.191, 2.097",\
                 "4.075, 3.98, 3.709, 3.344, 2.974, 2.68, 2.477, 2.323, 2.204, 2.109",\
                 "4.112, 4.016, 3.744, 3.377, 3.004, 2.709, 2.504, 2.347, 2.227, 2.131",\
                 "4.16, 4.064, 3.789, 3.419, 3.043, 2.744, 2.536, 2.377, 2.255, 2.158",\
                 "4.213, 4.115, 3.839, 3.466, 3.086, 2.783, 2.571, 2.411, 2.287, 2.188");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("2.427, 2.34, 2.11, 1.89, 1.746, 1.637, 1.557, 1.504, 1.468, 1.446",\
                 "2.427, 2.339, 2.109, 1.892, 1.747, 1.639, 1.556, 1.502, 1.472, 1.445",\
                 "2.428, 2.34, 2.108, 1.893, 1.747, 1.642, 1.564, 1.507, 1.469, 1.447",\
                 "2.429, 2.341, 2.111, 1.893, 1.749, 1.637, 1.559, 1.506, 1.467, 1.443",\
                 "2.43, 2.343, 2.112, 1.894, 1.749, 1.64, 1.56, 1.507, 1.471, 1.449",\
                 "2.432, 2.344, 2.116, 1.898, 1.751, 1.647, 1.565, 1.506, 1.476, 1.442",\
                 "2.431, 2.344, 2.112, 1.894, 1.759, 1.646, 1.563, 1.509, 1.478, 1.449",\
                 "2.431, 2.343, 2.113, 1.895, 1.749, 1.65, 1.57, 1.508, 1.476, 1.452",\
                 "2.431, 2.344, 2.113, 1.898, 1.746, 1.638, 1.574, 1.524, 1.479, 1.452",\
                 "2.43, 2.343, 2.113, 1.896, 1.748, 1.635, 1.562, 1.525, 1.492, 1.459");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.4626, 0.4887, 0.5541, 0.6457, 0.7538, 0.8801, 1.028, 1.201, 1.405, 1.644",\
                 "0.465, 0.4909, 0.5563, 0.6479, 0.7561, 0.8823, 1.03, 1.203, 1.407, 1.646",\
                 "0.4718, 0.4977, 0.5631, 0.6547, 0.7628, 0.8891, 1.037, 1.21, 1.414, 1.653",\
                 "0.4907, 0.5166, 0.5821, 0.6736, 0.7817, 0.908, 1.056, 1.229, 1.433, 1.672",\
                 "0.5324, 0.5585, 0.6239, 0.7154, 0.8233, 0.9494, 1.097, 1.27, 1.474, 1.713",\
                 "0.6033, 0.6295, 0.6947, 0.7859, 0.8935, 1.019, 1.166, 1.339, 1.543, 1.782",\
                 "0.702, 0.7284, 0.7945, 0.8863, 0.994, 1.119, 1.266, 1.438, 1.641, 1.88",\
                 "0.826, 0.853, 0.9203, 1.013, 1.122, 1.248, 1.394, 1.566, 1.769, 2.006",\
                 "0.9673, 0.9956, 1.066, 1.164, 1.275, 1.403, 1.55, 1.722, 1.924, 2.16",\
                 "1.124, 1.154, 1.228, 1.33, 1.447, 1.579, 1.729, 1.903, 2.105, 2.341");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.3374, 0.3603, 0.4181, 0.5015, 0.6172, 0.7754, 0.9836, 1.248, 1.573, 1.961",\
                 "0.338, 0.3609, 0.4187, 0.5021, 0.6178, 0.7759, 0.9842, 1.249, 1.573, 1.961",\
                 "0.3406, 0.3634, 0.4212, 0.5046, 0.6203, 0.7784, 0.9867, 1.251, 1.576, 1.964",\
                 "0.349, 0.3719, 0.4297, 0.5131, 0.6287, 0.7867, 0.995, 1.259, 1.584, 1.972",\
                 "0.3669, 0.3898, 0.4478, 0.531, 0.6462, 0.8039, 1.012, 1.276, 1.599, 1.987",\
                 "0.3909, 0.4144, 0.4733, 0.5569, 0.6716, 0.8283, 1.035, 1.298, 1.621, 2.009",\
                 "0.4128, 0.4374, 0.4984, 0.5836, 0.6981, 0.8538, 1.059, 1.321, 1.643, 2.029",\
                 "0.426, 0.452, 0.5158, 0.6037, 0.7193, 0.8747, 1.079, 1.338, 1.659, 2.044",\
                 "0.4281, 0.4554, 0.5226, 0.6136, 0.731, 0.8874, 1.091, 1.35, 1.668, 2.051",\
                 "0.4167, 0.4456, 0.5162, 0.6108, 0.7306, 0.8884, 1.093, 1.352, 1.67, 2.051");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.1375, 0.1682, 0.2437, 0.3339, 0.4368, 0.5741, 0.7574, 0.9971, 1.3, 1.677",\
                 "0.1367, 0.168, 0.2436, 0.3338, 0.4371, 0.5742, 0.7575, 0.9968, 1.301, 1.677",\
                 "0.1368, 0.1676, 0.2441, 0.3339, 0.4368, 0.5742, 0.7571, 0.9974, 1.3, 1.677",\
                 "0.1361, 0.1687, 0.2436, 0.334, 0.437, 0.5743, 0.7576, 0.9968, 1.301, 1.676",\
                 "0.1364, 0.1678, 0.2436, 0.334, 0.4371, 0.5746, 0.758, 0.9976, 1.3, 1.676",\
                 "0.1372, 0.1686, 0.245, 0.3356, 0.4388, 0.5758, 0.759, 0.998, 1.301, 1.677",\
                 "0.1424, 0.1752, 0.2514, 0.342, 0.4442, 0.5804, 0.7616, 1, 1.302, 1.678",\
                 "0.1546, 0.1864, 0.264, 0.355, 0.4566, 0.5902, 0.7692, 1.005, 1.305, 1.679",\
                 "0.1716, 0.2054, 0.2872, 0.3804, 0.4796, 0.6088, 0.7838, 1.014, 1.312, 1.682",\
                 "0.1904, 0.2262, 0.3128, 0.4128, 0.5136, 0.64, 0.8096, 1.033, 1.324, 1.689");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.08448, 0.1099, 0.1788, 0.2873, 0.4686, 0.7344, 1.096, 1.562, 2.125, 2.805",\
                 "0.08384, 0.1097, 0.1789, 0.287, 0.4686, 0.7349, 1.097, 1.559, 2.127, 2.806",\
                 "0.08396, 0.1097, 0.1787, 0.2867, 0.4685, 0.7357, 1.098, 1.558, 2.129, 2.801",\
                 "0.08406, 0.1096, 0.1788, 0.2874, 0.4683, 0.7356, 1.098, 1.558, 2.128, 2.801",\
                 "0.08476, 0.1104, 0.1794, 0.2878, 0.4689, 0.7345, 1.097, 1.559, 2.127, 2.806",\
                 "0.0895, 0.115, 0.1838, 0.2903, 0.4705, 0.7368, 1.097, 1.562, 2.127, 2.801",\
                 "0.0974, 0.1236, 0.1934, 0.2982, 0.4752, 0.7386, 1.098, 1.562, 2.125, 2.805",\
                 "0.1074, 0.1346, 0.2064, 0.311, 0.4844, 0.7446, 1.102, 1.56, 2.127, 2.802",\
                 "0.1196, 0.148, 0.2216, 0.327, 0.4984, 0.7568, 1.111, 1.565, 2.13, 2.804",\
                 "0.1332, 0.163, 0.2388, 0.3454, 0.5128, 0.772, 1.127, 1.576, 2.133, 2.803");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.4862, 0.5122, 0.5774, 0.6691, 0.7773, 0.9037, 1.051, 1.225, 1.428, 1.668",\
                 "0.4892, 0.5152, 0.5803, 0.6721, 0.7804, 0.9067, 1.054, 1.228, 1.431, 1.67",\
                 "0.5006, 0.5267, 0.5918, 0.6835, 0.7918, 0.9181, 1.066, 1.239, 1.443, 1.682",\
                 "0.5164, 0.5424, 0.6076, 0.6993, 0.8076, 0.9339, 1.082, 1.255, 1.459, 1.698",\
                 "0.5308, 0.5567, 0.622, 0.7137, 0.8218, 0.9481, 1.096, 1.269, 1.473, 1.712",\
                 "0.5424, 0.5683, 0.6334, 0.7252, 0.8334, 0.9597, 1.107, 1.281, 1.484, 1.724",\
                 "0.5504, 0.5764, 0.6417, 0.7334, 0.8417, 0.9678, 1.115, 1.289, 1.492, 1.731",\
                 "0.5537, 0.5795, 0.645, 0.7367, 0.845, 0.9712, 1.119, 1.292, 1.496, 1.735",\
                 "0.5495, 0.5756, 0.6412, 0.7331, 0.8416, 0.9679, 1.116, 1.289, 1.493, 1.731",\
                 "0.5381, 0.5644, 0.6301, 0.7223, 0.831, 0.9576, 1.105, 1.279, 1.482, 1.721");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.4521, 0.4749, 0.5327, 0.6162, 0.7318, 0.89, 1.098, 1.363, 1.687, 2.075",\
                 "0.4552, 0.478, 0.5358, 0.6193, 0.7349, 0.8931, 1.101, 1.366, 1.69, 2.079",\
                 "0.4683, 0.4912, 0.549, 0.6324, 0.7481, 0.9062, 1.114, 1.379, 1.703, 2.092",\
                 "0.4873, 0.5101, 0.5679, 0.6514, 0.767, 0.9251, 1.133, 1.398, 1.722, 2.111",\
                 "0.5046, 0.5274, 0.5853, 0.6687, 0.7844, 0.9425, 1.151, 1.415, 1.74, 2.128",\
                 "0.5178, 0.5406, 0.5984, 0.6819, 0.7975, 0.9556, 1.164, 1.428, 1.753, 2.142",\
                 "0.525, 0.5479, 0.6058, 0.6892, 0.8049, 0.963, 1.171, 1.436, 1.76, 2.149",\
                 "0.5254, 0.5482, 0.6061, 0.6895, 0.8052, 0.9633, 1.172, 1.436, 1.761, 2.149",\
                 "0.5184, 0.5411, 0.5989, 0.6823, 0.7979, 0.956, 1.164, 1.429, 1.753, 2.141",\
                 "0.503, 0.5257, 0.5834, 0.6667, 0.7825, 0.9407, 1.149, 1.414, 1.738, 2.126");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.1367, 0.1674, 0.243, 0.3341, 0.437, 0.574, 0.757, 0.9978, 1.3, 1.677",\
                 "0.1366, 0.1673, 0.2434, 0.334, 0.4368, 0.5742, 0.7571, 0.996, 1.3, 1.677",\
                 "0.1368, 0.1674, 0.2429, 0.334, 0.4368, 0.5741, 0.7575, 0.9964, 1.3, 1.677",\
                 "0.1367, 0.1679, 0.2429, 0.3339, 0.4367, 0.5742, 0.757, 0.996, 1.301, 1.675",\
                 "0.1364, 0.1676, 0.2432, 0.334, 0.4371, 0.574, 0.7572, 0.9962, 1.301, 1.676",\
                 "0.1363, 0.1672, 0.2432, 0.334, 0.437, 0.5742, 0.7572, 0.9976, 1.3, 1.677",\
                 "0.1366, 0.168, 0.2434, 0.3344, 0.4372, 0.5746, 0.7572, 0.997, 1.301, 1.677",\
                 "0.1378, 0.1692, 0.245, 0.3358, 0.4384, 0.5754, 0.7578, 0.997, 1.301, 1.677",\
                 "0.1392, 0.1708, 0.2466, 0.3374, 0.44, 0.5764, 0.759, 0.9974, 1.3, 1.676",\
                 "0.1402, 0.1722, 0.2482, 0.3392, 0.4418, 0.578, 0.7602, 0.9986, 1.302, 1.676");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.03919, 0.1065, 0.2352, 0.4356, 0.7167, 1.087, 1.553, 2.122, 2.8");
          index_2("0.001, 0.01141, 0.04797, 0.1178, 0.2265, 0.3791, 0.58, 0.8329, 1.142, 1.51");
          values("0.08294, 0.1093, 0.1789, 0.2868, 0.4686, 0.7353, 1.098, 1.558, 2.128, 2.806",\
                 "0.08296, 0.1094, 0.1788, 0.2875, 0.4682, 0.7347, 1.097, 1.561, 2.125, 2.804",\
                 "0.08306, 0.1094, 0.1788, 0.2871, 0.4687, 0.7352, 1.098, 1.559, 2.128, 2.805",\
                 "0.08314, 0.1095, 0.1789, 0.2871, 0.4683, 0.7357, 1.098, 1.558, 2.128, 2.801",\
                 "0.08292, 0.1092, 0.1788, 0.2872, 0.4687, 0.7354, 1.098, 1.558, 2.128, 2.806",\
                 "0.08312, 0.1094, 0.1788, 0.287, 0.468, 0.7356, 1.097, 1.561, 2.125, 2.803",\
                 "0.083, 0.1096, 0.1786, 0.2874, 0.468, 0.7354, 1.097, 1.561, 2.125, 2.805",\
                 "0.083, 0.109, 0.1786, 0.2874, 0.4688, 0.736, 1.097, 1.559, 2.125, 2.801",\
                 "0.0828, 0.109, 0.1784, 0.287, 0.4682, 0.7346, 1.097, 1.559, 2.127, 2.805",\
                 "0.0826, 0.1088, 0.1784, 0.2872, 0.4682, 0.7356, 1.097, 1.559, 2.125, 2.801");
        }
      }
    }
  }

