/*
 * 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.00988308" ;
    }

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003391 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7.4 ;
      min_period : 1.402 ;
      min_pulse_width_high : 0.624 ;
      min_pulse_width_low : 0.701 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1496, 0.1495, 0.1534, 0.1689, 0.1986, 0.2441, 0.3059, 0.385, \
                  0.4819, 0.5978");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1093, 0.1092, 0.1121, 0.1251, 0.1502, 0.1895, 0.2438, 0.3137, \
                  0.3999, 0.5032");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1521, 0.1519, 0.1558, 0.1713, 0.2011, 0.2465, 0.3083, 0.3873, \
                  0.4841, 0.6");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1087, 0.1085, 0.1115, 0.1245, 0.1498, 0.1892, 0.2436, 0.3135, \
                  0.3996, 0.5027");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002431 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7.4 ;
      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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.08878, 0.08817, 0.08886, 0.09495, 0.1083, 0.1292, 0.1579, 0.1948, \
                  0.2401, 0.2941");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.05784, 0.05814, 0.05983, 0.06545, 0.07602, 0.0923, 0.1149, 0.144, \
                  0.1802, 0.2234");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.005316, 0.00531, 0.005308, 0.005318, 0.005309, 0.00531, 0.005319, \
                  0.005308, 0.005308, 0.0053");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.003833, -0.003843, -0.00384, -0.003835, -0.00384, -0.003862, \
                  -0.00387, -0.003879, -0.003891, -0.003905");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.109, 0.114, 0.151, 0.195, 0.232, 0.253, 0.255, 0.235, 0.189, 0.122",\
                 "0.106, 0.114, 0.147, 0.195, 0.231, 0.246, 0.249, 0.225, 0.181, 0.121",\
                 "0.059, 0.072, 0.107, 0.148, 0.191, 0.208, 0.207, 0.188, 0.142, 0.078",\
                 "-0.031, -0.022, 0.012, 0.054, 0.097, 0.115, 0.117, 0.088, 0.043, -0.022",\
                 "-0.173, -0.164, -0.13, -0.088, -0.047, -0.035, -0.026, -0.06, -0.109, -0.172",\
                 "-0.344, -0.335, -0.298, -0.262, -0.225, -0.216, -0.221, -0.251, -0.296, -0.369",\
                 "-0.556, -0.548, -0.507, -0.483, -0.451, -0.44, -0.448, -0.484, -0.544, -0.613",\
                 "-0.815, -0.806, -0.765, -0.749, -0.716, -0.705, -0.715, -0.762, -0.825, -0.894",\
                 "-1.119, -1.113, -1.073, -1.064, -1.03, -1.027, -1.045, -1.088, -1.162, -1.237",\
                 "-1.473, -1.462, -1.432, -1.429, -1.404, -1.402, -1.414, -1.467, -1.545, -1.624");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.074, 0.081, 0.116, 0.154, 0.186, 0.203, 0.203, 0.194, 0.168, 0.14",\
                 "0.072, 0.076, 0.109, 0.152, 0.184, 0.2, 0.204, 0.194, 0.167, 0.139",\
                 "0.069, 0.072, 0.107, 0.148, 0.175, 0.197, 0.199, 0.188, 0.163, 0.133",\
                 "0.076, 0.082, 0.116, 0.149, 0.18, 0.191, 0.196, 0.181, 0.149, 0.113",\
                 "0.111, 0.117, 0.147, 0.181, 0.2, 0.209, 0.202, 0.177, 0.145, 0.101",\
                 "0.201, 0.203, 0.233, 0.255, 0.271, 0.272, 0.252, 0.224, 0.175, 0.122",\
                 "0.348, 0.348, 0.369, 0.386, 0.394, 0.384, 0.357, 0.318, 0.258, 0.201",\
                 "0.549, 0.547, 0.567, 0.578, 0.58, 0.557, 0.518, 0.475, 0.406, 0.338",\
                 "0.812, 0.807, 0.826, 0.827, 0.821, 0.785, 0.738, 0.685, 0.605, 0.535",\
                 "1.139, 1.13, 1.147, 1.145, 1.12, 1.079, 1.02, 0.957, 0.865, 0.786");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.338, 0.326, 0.285, 0.232, 0.19, 0.166, 0.164, 0.185, 0.233, 0.31",\
                 "0.342, 0.328, 0.286, 0.239, 0.192, 0.172, 0.169, 0.189, 0.237, 0.314",\
                 "0.382, 0.372, 0.33, 0.282, 0.239, 0.211, 0.211, 0.233, 0.288, 0.359",\
                 "0.499, 0.491, 0.449, 0.4, 0.358, 0.332, 0.334, 0.347, 0.396, 0.468",\
                 "0.701, 0.69, 0.651, 0.598, 0.559, 0.531, 0.533, 0.548, 0.592, 0.666",\
                 "0.975, 0.96, 0.923, 0.869, 0.828, 0.807, 0.793, 0.812, 0.858, 0.928",\
                 "1.313, 1.302, 1.264, 1.204, 1.166, 1.135, 1.133, 1.143, 1.187, 1.26",\
                 "1.717, 1.709, 1.661, 1.601, 1.564, 1.536, 1.526, 1.544, 1.578, 1.653",\
                 "2.182, 2.169, 2.127, 2.063, 2.021, 1.988, 1.979, 1.992, 2.036, 2.108",\
                 "2.724, 2.705, 2.666, 2.59, 2.537, 2.508, 2.499, 2.508, 2.556, 2.622");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.321, 0.313, 0.275, 0.208, 0.177, 0.156, 0.164, 0.19, 0.246, 0.319",\
                 "0.335, 0.328, 0.281, 0.221, 0.185, 0.166, 0.169, 0.2, 0.244, 0.333",\
                 "0.357, 0.356, 0.308, 0.251, 0.216, 0.194, 0.195, 0.217, 0.267, 0.349",\
                 "0.384, 0.378, 0.33, 0.278, 0.237, 0.217, 0.221, 0.248, 0.298, 0.371",\
                 "0.384, 0.382, 0.337, 0.282, 0.241, 0.218, 0.225, 0.253, 0.305, 0.383",\
                 "0.354, 0.345, 0.303, 0.249, 0.209, 0.197, 0.197, 0.228, 0.287, 0.369",\
                 "0.277, 0.279, 0.231, 0.178, 0.133, 0.112, 0.126, 0.155, 0.222, 0.311",\
                 "0.153, 0.148, 0.102, 0.053, 0.004, -0.01, 0.006, 0.04, 0.108, 0.2",\
                 "-0.025, -0.035, -0.08, -0.131, -0.174, -0.187, -0.171, -0.131, -0.053, 0.048",\
                 "-0.256, -0.269, -0.312, -0.371, -0.403, -0.414, -0.397, -0.357, -0.273, -0.167");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 1.453 ;
      max_transition : 7.4 ;
      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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.01102, 0.0462, 0.1134, 0.218, 0.3649, 0.5581, 0.8015, 1.099, 1.453");
          values("0.4078, 0.3922, 0.3699, 0.3583, 0.3522, 0.3488, 0.3466, 0.3452, 0.3441, 0.3435",\
                 "0.4079, 0.3923, 0.3699, 0.3584, 0.352, 0.3487, 0.3464, 0.3451, 0.344, 0.3435",\
                 "0.408, 0.3926, 0.3701, 0.3584, 0.3523, 0.3489, 0.3467, 0.3453, 0.3443, 0.3437",\
                 "0.4085, 0.3931, 0.3708, 0.359, 0.3529, 0.3495, 0.3474, 0.3459, 0.345, 0.3442",\
                 "0.41, 0.3942, 0.3721, 0.3603, 0.3543, 0.351, 0.3489, 0.3471, 0.3462, 0.3456",\
                 "0.4112, 0.3959, 0.3731, 0.362, 0.3556, 0.3518, 0.3498, 0.3484, 0.3475, 0.3468",\
                 "0.413, 0.3976, 0.3753, 0.3639, 0.3574, 0.3539, 0.3515, 0.3503, 0.3491, 0.3485",\
                 "0.4151, 0.3999, 0.3773, 0.3657, 0.3594, 0.3559, 0.354, 0.3524, 0.3513, 0.3506",\
                 "0.4175, 0.4021, 0.3798, 0.3681, 0.3617, 0.3582, 0.3561, 0.3545, 0.3537, 0.3531",\
                 "0.42, 0.4045, 0.382, 0.371, 0.3643, 0.3609, 0.3586, 0.3573, 0.3564, 0.3558");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.01102, 0.0462, 0.1134, 0.218, 0.3649, 0.5581, 0.8015, 1.099, 1.453");
          values("0.453, 0.4387, 0.4177, 0.4056, 0.4, 0.3997, 0.4015, 0.4028, 0.4066, 0.4171",\
                 "0.453, 0.4387, 0.4182, 0.4056, 0.4003, 0.3996, 0.4014, 0.4027, 0.4061, 0.4167",\
                 "0.4529, 0.4385, 0.418, 0.4054, 0.3998, 0.3994, 0.4012, 0.4029, 0.4059, 0.4179",\
                 "0.4534, 0.439, 0.4179, 0.406, 0.4012, 0.4001, 0.4012, 0.4036, 0.4056, 0.42",\
                 "0.4546, 0.4398, 0.4191, 0.4073, 0.4019, 0.4015, 0.4029, 0.4046, 0.4092, 0.4223",\
                 "0.4569, 0.4416, 0.4216, 0.4105, 0.4045, 0.4034, 0.4052, 0.408, 0.41, 0.4266",\
                 "0.4606, 0.446, 0.4252, 0.4122, 0.4088, 0.4088, 0.4092, 0.4112, 0.4137, 0.4321",\
                 "0.4662, 0.4514, 0.4317, 0.4181, 0.411, 0.4109, 0.4149, 0.4166, 0.4195, 0.4432",\
                 "0.4729, 0.4582, 0.4371, 0.4244, 0.4186, 0.4149, 0.4181, 0.4272, 0.4294, 0.4608",\
                 "0.4816, 0.4661, 0.4454, 0.4321, 0.4255, 0.4229, 0.4225, 0.4298, 0.4446, 0.4889");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.01102, 0.0462, 0.1134, 0.218, 0.3649, 0.5581, 0.8015, 1.099, 1.453");
          values("0.8136, 0.8466, 0.9299, 1.055, 1.231, 1.472, 1.788, 2.186, 2.672, 3.252",\
                 "0.8231, 0.856, 0.9392, 1.064, 1.24, 1.481, 1.797, 2.195, 2.681, 3.261",\
                 "0.8597, 0.8928, 0.9761, 1.101, 1.277, 1.518, 1.834, 2.232, 2.718, 3.298",\
                 "0.9157, 0.9486, 1.032, 1.157, 1.333, 1.574, 1.89, 2.288, 2.775, 3.355",\
                 "0.9635, 0.9964, 1.079, 1.205, 1.38, 1.621, 1.937, 2.336, 2.822, 3.402",\
                 "0.9967, 1.03, 1.113, 1.238, 1.414, 1.654, 1.97, 2.369, 2.855, 3.435",\
                 "1.012, 1.045, 1.128, 1.253, 1.429, 1.669, 1.985, 2.384, 2.87, 3.45",\
                 "1.006, 1.039, 1.122, 1.248, 1.423, 1.664, 1.98, 2.378, 2.864, 3.444",\
                 "0.977, 1.01, 1.093, 1.218, 1.394, 1.635, 1.951, 2.349, 2.835, 3.415",\
                 "0.9242, 0.9571, 1.04, 1.166, 1.342, 1.582, 1.898, 2.297, 2.783, 3.363");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.01102, 0.0462, 0.1134, 0.218, 0.3649, 0.5581, 0.8015, 1.099, 1.453");
          values("0.8228, 0.8586, 0.9601, 1.145, 1.433, 1.838, 2.372, 3.046, 3.868, 4.848",\
                 "0.832, 0.8678, 0.9694, 1.154, 1.442, 1.848, 2.382, 3.055, 3.877, 4.857",\
                 "0.8685, 0.9043, 1.006, 1.191, 1.479, 1.884, 2.418, 3.091, 3.913, 4.894",\
                 "0.9249, 0.9607, 1.062, 1.247, 1.535, 1.94, 2.475, 3.147, 3.97, 4.95",\
                 "0.9743, 1.01, 1.111, 1.296, 1.585, 1.99, 2.524, 3.197, 4.019, 5",\
                 "1.011, 1.047, 1.149, 1.334, 1.622, 2.027, 2.561, 3.234, 4.056, 5.036",\
                 "1.032, 1.068, 1.169, 1.354, 1.642, 2.047, 2.581, 3.255, 4.078, 5.058",\
                 "1.034, 1.07, 1.172, 1.357, 1.645, 2.05, 2.584, 3.257, 4.079, 5.06",\
                 "1.016, 1.052, 1.153, 1.338, 1.626, 2.031, 2.565, 3.238, 4.06, 5.04",\
                 "0.9754, 1.011, 1.113, 1.298, 1.586, 1.991, 2.525, 3.198, 4.02, 5");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.01102, 0.0462, 0.1134, 0.218, 0.3649, 0.5581, 0.8015, 1.099, 1.453");
          values("0.08826, 0.1215, 0.2148, 0.3833, 0.6592, 1.065, 1.608, 2.293, 3.132, 4.128",\
                 "0.08798, 0.1217, 0.2147, 0.3834, 0.6592, 1.066, 1.606, 2.293, 3.131, 4.128",\
                 "0.08824, 0.1212, 0.2146, 0.3836, 0.6592, 1.064, 1.606, 2.293, 3.132, 4.129",\
                 "0.0878, 0.1214, 0.2148, 0.3836, 0.6592, 1.065, 1.608, 2.291, 3.129, 4.134",\
                 "0.0882, 0.1212, 0.2146, 0.3838, 0.6602, 1.064, 1.607, 2.295, 3.134, 4.134",\
                 "0.0878, 0.1216, 0.2144, 0.3832, 0.659, 1.065, 1.609, 2.294, 3.129, 4.129",\
                 "0.0878, 0.1218, 0.2148, 0.3838, 0.6594, 1.065, 1.606, 2.291, 3.132, 4.128",\
                 "0.0878, 0.1218, 0.2146, 0.3832, 0.659, 1.064, 1.607, 2.292, 3.126, 4.126",\
                 "0.0878, 0.1216, 0.2148, 0.3838, 0.659, 1.065, 1.608, 2.29, 3.126, 4.123",\
                 "0.0878, 0.1212, 0.2144, 0.384, 0.659, 1.064, 1.606, 2.291, 3.131, 4.126");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.01102, 0.0462, 0.1134, 0.218, 0.3649, 0.5581, 0.8015, 1.099, 1.453");
          values("0.09636, 0.1397, 0.3009, 0.6322, 1.159, 1.903, 2.881, 4.12, 5.635, 7.421",\
                 "0.0962, 0.1397, 0.3008, 0.632, 1.159, 1.904, 2.883, 4.119, 5.635, 7.42",\
                 "0.0966, 0.1398, 0.3006, 0.6324, 1.159, 1.904, 2.882, 4.12, 5.635, 7.42",\
                 "0.0964, 0.1398, 0.3006, 0.6318, 1.159, 1.904, 2.885, 4.116, 5.632, 7.422",\
                 "0.0964, 0.1398, 0.3008, 0.6318, 1.16, 1.904, 2.883, 4.12, 5.635, 7.419",\
                 "0.096, 0.1398, 0.3004, 0.633, 1.16, 1.904, 2.884, 4.116, 5.635, 7.422",\
                 "0.0964, 0.1398, 0.3014, 0.6334, 1.159, 1.901, 2.885, 4.122, 5.628, 7.421",\
                 "0.0966, 0.1398, 0.3014, 0.6324, 1.159, 1.906, 2.882, 4.118, 5.636, 7.417",\
                 "0.0968, 0.14, 0.3016, 0.6324, 1.16, 1.902, 2.882, 4.115, 5.622, 7.422",\
                 "0.0972, 0.1402, 0.3014, 0.6328, 1.159, 1.902, 2.884, 4.118, 5.626, 7.42");
        }
      }
    }
  }

