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

    ff(IQ1,IQN1) {
      clocked_on : "CLK" ;
      next_state : "D" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLK&!D" ;
      value : "0.00124749" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLK&D" ;
      value : "0.001336635" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLK&!D" ;
      value : "0.00133524" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLK&D" ;
      value : "0.001381455" ;
    }

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

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

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

    pin(CLK) {
      capacitance : 0.003451 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7 ;
      min_period : 2.196 ;
      min_pulse_width_high : 1.046 ;
      min_pulse_width_low : 1.093 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.2372, 0.2368, 0.238, 0.2462, 0.2653, 0.2959, 0.3392, 0.3958, \
                  0.4662, 0.5509");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1823, 0.1819, 0.1824, 0.1887, 0.2046, 0.2305, 0.2685, 0.3187, \
                  0.3815, 0.4574");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.2408, 0.2404, 0.2415, 0.2497, 0.2688, 0.2994, 0.3427, 0.3992, \
                  0.4695, 0.5542");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.182, 0.1816, 0.182, 0.1885, 0.2044, 0.2304, 0.2684, 0.3187, \
                  0.3815, 0.4576");
        }
      }

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

        fall_constraint(scalar) {
          values("1.093");
        }

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

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

        fall_constraint(scalar) {
          values("0.73");
        }

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

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

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

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

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

    pin(D) {
      capacitance : 0.002379 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7 ;
      nextstate_type : data ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1307, 0.1301, 0.1295, 0.132, 0.1398, 0.1534, 0.1727, 0.1981, \
                  0.23, 0.2683");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.09026, 0.09049, 0.09117, 0.09423, 0.1007, 0.1111, 0.1262, 0.1463, \
                  0.1716, 0.2022");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.007553, 0.00754, 0.007554, 0.007553, 0.007566, 0.00754, 0.007551, \
                  0.007551, 0.007543, 0.007533");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.00474, -0.004767, -0.004756, -0.004757, -0.00476, -0.004775, \
                  -0.0048, -0.004813, -0.004827, -0.004843");
        }
      }

      timing() {
        related_pin : "CLK" ;
        timing_type : hold_rising ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.166, 0.173, 0.212, 0.275, 0.349, 0.409, 0.458, 0.486, 0.499, 0.5",\
                 "0.158, 0.166, 0.203, 0.272, 0.339, 0.397, 0.449, 0.479, 0.494, 0.492",\
                 "0.132, 0.135, 0.174, 0.237, 0.307, 0.368, 0.414, 0.444, 0.46, 0.46",\
                 "0.034, 0.046, 0.082, 0.15, 0.216, 0.28, 0.326, 0.358, 0.377, 0.373",\
                 "-0.115, -0.104, -0.072, -0.004, 0.067, 0.134, 0.182, 0.21, 0.23, 0.227",\
                 "-0.304, -0.299, -0.267, -0.194, -0.127, -0.062, -0.021, 0.011, 0.028, 0.02",\
                 "-0.536, -0.528, -0.496, -0.433, -0.362, -0.301, -0.259, -0.235, -0.225, -0.23",\
                 "-0.807, -0.804, -0.777, -0.71, -0.643, -0.578, -0.542, -0.516, -0.517, -0.521",\
                 "-1.127, -1.127, -1.098, -1.03, -0.968, -0.904, -0.869, -0.854, -0.853, -0.862",\
                 "-1.498, -1.497, -1.47, -1.399, -1.349, -1.291, -1.247, -1.24, -1.235, -1.253");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.097, 0.107, 0.143, 0.204, 0.254, 0.294, 0.333, 0.349, 0.361, 0.363",\
                 "0.092, 0.098, 0.138, 0.197, 0.248, 0.298, 0.329, 0.351, 0.355, 0.363",\
                 "0.083, 0.087, 0.118, 0.178, 0.234, 0.277, 0.317, 0.342, 0.351, 0.355",\
                 "0.074, 0.08, 0.112, 0.169, 0.225, 0.274, 0.309, 0.33, 0.341, 0.345",\
                 "0.081, 0.093, 0.126, 0.182, 0.235, 0.28, 0.305, 0.326, 0.339, 0.335",\
                 "0.12, 0.125, 0.154, 0.207, 0.258, 0.304, 0.323, 0.343, 0.346, 0.338",\
                 "0.192, 0.197, 0.231, 0.277, 0.327, 0.359, 0.378, 0.389, 0.385, 0.371",\
                 "0.322, 0.328, 0.355, 0.401, 0.441, 0.474, 0.483, 0.487, 0.472, 0.457",\
                 "0.502, 0.502, 0.533, 0.577, 0.616, 0.634, 0.632, 0.633, 0.611, 0.588",\
                 "0.739, 0.746, 0.772, 0.802, 0.837, 0.843, 0.838, 0.828, 0.804, 0.778");
        }
      }

      timing() {
        related_pin : "CLK" ;
        timing_type : setup_rising ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.504, 0.496, 0.455, 0.383, 0.296, 0.226, 0.164, 0.127, 0.097, 0.098",\
                 "0.505, 0.497, 0.456, 0.381, 0.302, 0.233, 0.168, 0.131, 0.106, 0.101",\
                 "0.545, 0.529, 0.493, 0.421, 0.332, 0.26, 0.209, 0.165, 0.139, 0.139",\
                 "0.64, 0.632, 0.596, 0.52, 0.439, 0.365, 0.302, 0.264, 0.24, 0.233",\
                 "0.823, 0.811, 0.769, 0.703, 0.617, 0.549, 0.487, 0.441, 0.422, 0.417",\
                 "1.084, 1.068, 1.029, 0.955, 0.875, 0.803, 0.743, 0.702, 0.677, 0.669",\
                 "1.403, 1.394, 1.352, 1.284, 1.202, 1.127, 1.068, 1.027, 0.999, 0.989",\
                 "1.8, 1.789, 1.745, 1.673, 1.587, 1.519, 1.454, 1.416, 1.384, 1.376",\
                 "2.252, 2.243, 2.2, 2.128, 2.047, 1.97, 1.914, 1.865, 1.832, 1.827",\
                 "2.771, 2.761, 2.719, 2.647, 2.56, 2.487, 2.426, 2.382, 2.347, 2.341");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.481, 0.476, 0.426, 0.351, 0.265, 0.207, 0.157, 0.127, 0.11, 0.124",\
                 "0.485, 0.482, 0.44, 0.356, 0.276, 0.214, 0.168, 0.131, 0.12, 0.127",\
                 "0.525, 0.508, 0.465, 0.391, 0.31, 0.239, 0.194, 0.16, 0.145, 0.156",\
                 "0.569, 0.565, 0.516, 0.442, 0.359, 0.292, 0.244, 0.203, 0.19, 0.196",\
                 "0.608, 0.595, 0.557, 0.473, 0.398, 0.324, 0.28, 0.24, 0.22, 0.222",\
                 "0.613, 0.615, 0.566, 0.487, 0.41, 0.339, 0.288, 0.252, 0.23, 0.235",\
                 "0.598, 0.592, 0.542, 0.466, 0.381, 0.317, 0.265, 0.227, 0.215, 0.213",\
                 "0.534, 0.528, 0.48, 0.402, 0.32, 0.253, 0.205, 0.169, 0.152, 0.163",\
                 "0.427, 0.415, 0.378, 0.298, 0.215, 0.149, 0.104, 0.058, 0.051, 0.06",\
                 "0.278, 0.26, 0.214, 0.144, 0.061, -0.017, -0.061, -0.097, -0.104, -0.091");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.9885 ;
      max_transition : 7 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "CLK" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007816, 0.03174, 0.07743, 0.1486, 0.2485, 0.3799, 0.5455, 0.7476, 0.9885");
          values("0.5962, 0.5814, 0.5577, 0.5442, 0.5371, 0.5332, 0.5307, 0.5293, 0.528, 0.5273",\
                 "0.5962, 0.5815, 0.5578, 0.5443, 0.5373, 0.5333, 0.5307, 0.5292, 0.528, 0.5273",\
                 "0.5959, 0.5812, 0.5576, 0.5442, 0.5372, 0.5331, 0.5309, 0.5292, 0.5281, 0.5272",\
                 "0.5964, 0.5819, 0.5582, 0.545, 0.5378, 0.5336, 0.5311, 0.5294, 0.5284, 0.5276",\
                 "0.5971, 0.5822, 0.5586, 0.5454, 0.5384, 0.5345, 0.532, 0.5303, 0.529, 0.5282",\
                 "0.5983, 0.5836, 0.5601, 0.5472, 0.54, 0.5358, 0.5334, 0.5319, 0.5307, 0.5297",\
                 "0.5995, 0.5846, 0.5613, 0.548, 0.5412, 0.5366, 0.5342, 0.5328, 0.5316, 0.5307",\
                 "0.6007, 0.5858, 0.5625, 0.5493, 0.5423, 0.5381, 0.5356, 0.534, 0.5324, 0.5317",\
                 "0.6026, 0.5876, 0.5641, 0.5506, 0.544, 0.5399, 0.5372, 0.5358, 0.5343, 0.5333",\
                 "0.6043, 0.5893, 0.5659, 0.5529, 0.5455, 0.5416, 0.5389, 0.5372, 0.5362, 0.5353");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007816, 0.03174, 0.07743, 0.1486, 0.2485, 0.3799, 0.5455, 0.7476, 0.9885");
          values("0.6614, 0.6478, 0.6254, 0.608, 0.6, 0.5973, 0.5964, 0.5993, 0.6038, 0.6117",\
                 "0.6615, 0.6475, 0.6255, 0.6084, 0.5999, 0.5986, 0.5968, 0.6007, 0.6037, 0.6117",\
                 "0.6614, 0.6478, 0.6248, 0.6083, 0.5992, 0.5986, 0.5963, 0.5997, 0.6037, 0.6134",\
                 "0.6611, 0.6475, 0.625, 0.6086, 0.6006, 0.5966, 0.5993, 0.6004, 0.6044, 0.6132",\
                 "0.6611, 0.6482, 0.6257, 0.608, 0.6007, 0.5983, 0.5987, 0.6008, 0.6043, 0.6144",\
                 "0.6622, 0.6482, 0.626, 0.6088, 0.6011, 0.5979, 0.5975, 0.6018, 0.6048, 0.6172",\
                 "0.664, 0.6502, 0.6266, 0.6115, 0.6034, 0.6, 0.6, 0.6025, 0.6076, 0.6232",\
                 "0.6664, 0.6527, 0.6296, 0.6122, 0.6034, 0.6036, 0.6028, 0.6034, 0.6079, 0.6254",\
                 "0.6695, 0.6558, 0.6322, 0.6152, 0.6053, 0.6043, 0.6092, 0.61, 0.613, 0.6366",\
                 "0.674, 0.6605, 0.6375, 0.6202, 0.6099, 0.6061, 0.6066, 0.6167, 0.6251, 0.6579");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007816, 0.03174, 0.07743, 0.1486, 0.2485, 0.3799, 0.5455, 0.7476, 0.9885");
          values("1.306, 1.341, 1.432, 1.569, 1.753, 1.999, 2.318, 2.721, 3.212, 3.798",\
                 "1.316, 1.351, 1.442, 1.578, 1.763, 2.008, 2.328, 2.73, 3.221, 3.807",\
                 "1.353, 1.387, 1.479, 1.615, 1.799, 2.045, 2.365, 2.767, 3.258, 3.844",\
                 "1.425, 1.46, 1.552, 1.688, 1.872, 2.118, 2.437, 2.839, 3.33, 3.917",\
                 "1.509, 1.544, 1.636, 1.772, 1.956, 2.202, 2.522, 2.924, 3.415, 4.001",\
                 "1.585, 1.62, 1.711, 1.847, 2.032, 2.278, 2.597, 2.999, 3.49, 4.077",\
                 "1.651, 1.686, 1.777, 1.914, 2.098, 2.344, 2.663, 3.066, 3.557, 4.142",\
                 "1.703, 1.738, 1.83, 1.966, 2.15, 2.396, 2.715, 3.118, 3.609, 4.194",\
                 "1.74, 1.774, 1.866, 2.002, 2.186, 2.432, 2.752, 3.154, 3.645, 4.23",\
                 "1.758, 1.793, 1.884, 2.02, 2.204, 2.45, 2.77, 3.172, 3.663, 4.248");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007816, 0.03174, 0.07743, 0.1486, 0.2485, 0.3799, 0.5455, 0.7476, 0.9885");
          values("1.349, 1.386, 1.49, 1.669, 1.945, 2.333, 2.844, 3.489, 4.275, 5.214",\
                 "1.358, 1.395, 1.5, 1.679, 1.955, 2.342, 2.854, 3.498, 4.285, 5.224",\
                 "1.395, 1.432, 1.536, 1.715, 1.991, 2.379, 2.89, 3.535, 4.321, 5.26",\
                 "1.467, 1.504, 1.608, 1.787, 2.063, 2.451, 2.963, 3.607, 4.393, 5.332",\
                 "1.551, 1.588, 1.693, 1.871, 2.148, 2.536, 3.047, 3.692, 4.479, 5.417",\
                 "1.628, 1.665, 1.77, 1.949, 2.225, 2.612, 3.124, 3.768, 4.555, 5.493",\
                 "1.697, 1.734, 1.838, 2.017, 2.294, 2.681, 3.193, 3.837, 4.624, 5.563",\
                 "1.754, 1.791, 1.895, 2.074, 2.35, 2.738, 3.249, 3.893, 4.681, 5.619",\
                 "1.796, 1.833, 1.938, 2.117, 2.393, 2.78, 3.291, 3.936, 4.723, 5.661",\
                 "1.822, 1.86, 1.964, 2.143, 2.419, 2.807, 3.318, 3.962, 4.749, 5.687");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007816, 0.03174, 0.07743, 0.1486, 0.2485, 0.3799, 0.5455, 0.7476, 0.9885");
          values("0.1212, 0.1552, 0.253, 0.4216, 0.687, 1.08, 1.615, 2.291, 3.125, 4.116",\
                 "0.1216, 0.1556, 0.2534, 0.4216, 0.687, 1.082, 1.614, 2.293, 3.125, 4.112",\
                 "0.121, 0.1556, 0.2536, 0.4216, 0.6872, 1.08, 1.613, 2.293, 3.124, 4.112",\
                 "0.121, 0.1554, 0.2534, 0.4222, 0.6878, 1.08, 1.613, 2.294, 3.124, 4.112",\
                 "0.121, 0.1556, 0.2532, 0.421, 0.687, 1.082, 1.613, 2.294, 3.125, 4.118",\
                 "0.121, 0.1556, 0.2532, 0.4226, 0.6868, 1.081, 1.614, 2.292, 3.125, 4.118",\
                 "0.1216, 0.1554, 0.2536, 0.4222, 0.6872, 1.08, 1.614, 2.291, 3.122, 4.113",\
                 "0.121, 0.1552, 0.2536, 0.421, 0.6878, 1.08, 1.613, 2.29, 3.123, 4.114",\
                 "0.1212, 0.1554, 0.2526, 0.422, 0.6866, 1.08, 1.613, 2.291, 3.119, 4.108",\
                 "0.121, 0.1554, 0.2532, 0.4218, 0.6874, 1.08, 1.614, 2.293, 3.123, 4.109");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.007816, 0.03174, 0.07743, 0.1486, 0.2485, 0.3799, 0.5455, 0.7476, 0.9885");
          values("0.1322, 0.175, 0.3238, 0.6236, 1.114, 1.811, 2.731, 3.888, 5.305, 6.99",\
                 "0.1322, 0.175, 0.3238, 0.6238, 1.114, 1.811, 2.732, 3.893, 5.306, 6.989",\
                 "0.1322, 0.1752, 0.3234, 0.624, 1.114, 1.811, 2.732, 3.893, 5.305, 7",\
                 "0.1322, 0.175, 0.3234, 0.6238, 1.116, 1.812, 2.73, 3.894, 5.309, 7.002",\
                 "0.132, 0.175, 0.323, 0.6238, 1.116, 1.812, 2.73, 3.889, 5.309, 7.002",\
                 "0.1314, 0.1744, 0.3238, 0.6236, 1.115, 1.813, 2.732, 3.889, 5.304, 7.001",\
                 "0.1322, 0.1754, 0.323, 0.6248, 1.115, 1.813, 2.734, 3.893, 5.306, 7",\
                 "0.1324, 0.1752, 0.3236, 0.6246, 1.116, 1.811, 2.731, 3.888, 5.308, 6.993",\
                 "0.1322, 0.1754, 0.3234, 0.6244, 1.115, 1.812, 2.731, 3.888, 5.31, 7.002",\
                 "0.1322, 0.1754, 0.3234, 0.6246, 1.115, 1.812, 2.73, 3.888, 5.305, 6.996");
        }
      }
    }
  }

