/*
 * 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_2) {
    area : 68.051200 ;

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

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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003092 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 11 ;
      min_period : 2.478 ;
      min_pulse_width_high : 1.147 ;
      min_pulse_width_low : 1.254 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.09886, 0.09849, 0.09804, 0.099, 0.1021, 0.1072, 0.1147, 0.1247, \
                  0.1375, 0.1532");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.07732, 0.07701, 0.07659, 0.07712, 0.07943, 0.0836, 0.09006, \
                  0.09894, 0.1102, 0.1241");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.09837, 0.09798, 0.09749, 0.09848, 0.1015, 0.1067, 0.1142, 0.1242, \
                  0.137, 0.1526");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.07734, 0.07711, 0.07656, 0.07713, 0.07933, 0.0836, 0.0902, 0.09909, \
                  0.1104, 0.1243");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.0023 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 11 ;
      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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.05148, 0.05106, 0.05044, 0.05074, 0.05242, 0.0553, 0.05923, \
                  0.06435, 0.07068, 0.07842");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.0376, 0.03769, 0.03766, 0.03799, 0.03904, 0.04099, 0.04405, \
                  0.04817, 0.05348, 0.06005");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.003307, 0.003308, 0.003297, 0.003305, 0.003309, 0.003309, 0.003304, \
                  0.0033, 0.003294, 0.003285");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("-0.002033, -0.002036, -0.002074, -0.002096, -0.002112, -0.002129, \
                  -0.002138, -0.002143, -0.002155, -0.002166");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.12, 0.138, 0.209, 0.33, 0.433, 0.513, 0.566, 0.599, 0.607, 0.58",\
                 "0.105, 0.129, 0.197, 0.314, 0.418, 0.5, 0.55, 0.587, 0.588, 0.56",\
                 "0.046, 0.062, 0.139, 0.251, 0.354, 0.435, 0.49, 0.52, 0.525, 0.499",\
                 "-0.108, -0.088, -0.02, 0.103, 0.203, 0.286, 0.342, 0.375, 0.381, 0.354",\
                 "-0.315, -0.295, -0.231, -0.112, -0.009, 0.072, 0.129, 0.167, 0.167, 0.143",\
                 "-0.585, -0.566, -0.498, -0.387, -0.281, -0.204, -0.143, -0.109, -0.1, -0.122",\
                 "-0.9, -0.884, -0.82, -0.714, -0.606, -0.531, -0.471, -0.437, -0.423, -0.448",\
                 "-1.277, -1.266, -1.195, -1.094, -0.992, -0.916, -0.858, -0.822, -0.811, -0.836",\
                 "-1.716, -1.696, -1.641, -1.539, -1.44, -1.364, -1.305, -1.268, -1.258, -1.287",\
                 "-2.213, -2.203, -2.147, -2.046, -1.954, -1.876, -1.814, -1.79, -1.777, -1.8");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.034, 0.052, 0.118, 0.194, 0.251, 0.291, 0.301, 0.301, 0.264, 0.203",\
                 "0.012, 0.035, 0.102, 0.181, 0.238, 0.28, 0.292, 0.286, 0.257, 0.194",\
                 "-0.033, -0.013, 0.056, 0.139, 0.199, 0.244, 0.262, 0.261, 0.231, 0.172",\
                 "-0.07, -0.048, 0.015, 0.103, 0.164, 0.212, 0.229, 0.232, 0.204, 0.148",\
                 "-0.078, -0.058, 0.01, 0.091, 0.159, 0.198, 0.216, 0.223, 0.191, 0.136",\
                 "-0.047, -0.03, 0.035, 0.117, 0.181, 0.218, 0.241, 0.238, 0.213, 0.157",\
                 "0.016, 0.037, 0.102, 0.18, 0.238, 0.278, 0.286, 0.288, 0.26, 0.206",\
                 "0.139, 0.16, 0.218, 0.292, 0.348, 0.376, 0.387, 0.385, 0.349, 0.286",\
                 "0.311, 0.333, 0.393, 0.461, 0.511, 0.533, 0.543, 0.536, 0.496, 0.429",\
                 "0.551, 0.579, 0.633, 0.699, 0.735, 0.764, 0.756, 0.745, 0.696, 0.626");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.555, 0.534, 0.459, 0.32, 0.196, 0.096, 0.021, -0.025, -0.042, -0.024",\
                 "0.567, 0.549, 0.468, 0.333, 0.208, 0.11, 0.037, -0.014, -0.028, -0.013",\
                 "0.634, 0.617, 0.538, 0.401, 0.273, 0.179, 0.102, 0.053, 0.036, 0.054",\
                 "0.806, 0.781, 0.707, 0.573, 0.445, 0.346, 0.274, 0.224, 0.206, 0.222",\
                 "1.09, 1.063, 0.987, 0.852, 0.723, 0.627, 0.556, 0.508, 0.487, 0.5",\
                 "1.445, 1.425, 1.343, 1.21, 1.079, 0.98, 0.909, 0.857, 0.839, 0.855",\
                 "1.847, 1.826, 1.748, 1.613, 1.486, 1.391, 1.314, 1.267, 1.249, 1.256",\
                 "2.32, 2.299, 2.224, 2.082, 1.958, 1.86, 1.787, 1.738, 1.722, 1.731",\
                 "2.866, 2.842, 2.763, 2.631, 2.503, 2.409, 2.334, 2.29, 2.269, 2.274",\
                 "3.489, 3.469, 3.386, 3.247, 3.128, 3.028, 2.958, 2.907, 2.885, 2.896");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          values("0.555, 0.527, 0.453, 0.32, 0.205, 0.132, 0.08, 0.057, 0.069, 0.121",\
                 "0.567, 0.549, 0.468, 0.333, 0.227, 0.139, 0.096, 0.077, 0.089, 0.133",\
                 "0.64, 0.61, 0.529, 0.401, 0.284, 0.21, 0.154, 0.132, 0.136, 0.183",\
                 "0.73, 0.7, 0.623, 0.489, 0.373, 0.291, 0.243, 0.216, 0.223, 0.258",\
                 "0.798, 0.769, 0.687, 0.557, 0.445, 0.363, 0.311, 0.273, 0.277, 0.311",\
                 "0.814, 0.787, 0.706, 0.579, 0.463, 0.381, 0.33, 0.291, 0.293, 0.336",\
                 "0.794, 0.765, 0.689, 0.556, 0.439, 0.36, 0.306, 0.275, 0.28, 0.311",\
                 "0.726, 0.7, 0.622, 0.494, 0.373, 0.286, 0.238, 0.204, 0.21, 0.247",\
                 "0.602, 0.578, 0.499, 0.37, 0.257, 0.173, 0.118, 0.091, 0.099, 0.134",\
                 "0.428, 0.4, 0.328, 0.197, 0.083, -0.007, -0.057, -0.085, -0.082, -0.045");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.7173 ;
      max_transition : 11 ;
      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.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005944, 0.0233, 0.05644, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7173");
          values("0.1101, 0.1094, 0.1095, 0.1103, 0.1109, 0.1114, 0.1116, 0.1118, 0.1119, 0.1119",\
                 "0.1101, 0.1094, 0.1095, 0.1104, 0.111, 0.1114, 0.1116, 0.1118, 0.1119, 0.112",\
                 "0.11, 0.1093, 0.1094, 0.1102, 0.1109, 0.1113, 0.1115, 0.1117, 0.1118, 0.1119",\
                 "0.1103, 0.1095, 0.1097, 0.1105, 0.111, 0.1115, 0.1117, 0.1119, 0.112, 0.1121",\
                 "0.1105, 0.1098, 0.1099, 0.1108, 0.1114, 0.1118, 0.112, 0.1122, 0.1123, 0.1123",\
                 "0.1108, 0.1102, 0.1103, 0.1111, 0.1117, 0.1121, 0.1124, 0.1125, 0.1126, 0.1127",\
                 "0.1112, 0.1105, 0.1107, 0.1115, 0.1121, 0.1125, 0.1127, 0.1128, 0.1129, 0.113",\
                 "0.1115, 0.1108, 0.1109, 0.1117, 0.1123, 0.1127, 0.113, 0.1131, 0.1132, 0.1133",\
                 "0.1118, 0.1112, 0.1112, 0.1121, 0.1127, 0.1131, 0.1133, 0.1135, 0.1136, 0.1136",\
                 "0.1123, 0.1116, 0.1117, 0.1125, 0.1131, 0.1135, 0.1137, 0.1138, 0.114, 0.114");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005944, 0.0233, 0.05644, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7173");
          values("0.1045, 0.1036, 0.1026, 0.103, 0.1045, 0.1056, 0.1072, 0.1083, 0.1116, 0.1393",\
                 "0.1044, 0.1035, 0.1027, 0.1032, 0.1045, 0.1058, 0.1072, 0.1082, 0.1109, 0.1407",\
                 "0.1043, 0.1035, 0.1026, 0.1031, 0.1047, 0.1057, 0.1069, 0.1084, 0.1124, 0.1415",\
                 "0.1043, 0.1033, 0.1026, 0.1032, 0.1045, 0.1057, 0.107, 0.1082, 0.1122, 0.1474",\
                 "0.1045, 0.1035, 0.1026, 0.1032, 0.1048, 0.1058, 0.1071, 0.1081, 0.1131, 0.1549",\
                 "0.1046, 0.1039, 0.103, 0.1032, 0.1048, 0.1061, 0.1072, 0.1085, 0.1142, 0.1692",\
                 "0.1047, 0.1037, 0.1027, 0.1034, 0.1051, 0.1061, 0.1073, 0.1091, 0.1173, 0.1877",\
                 "0.1048, 0.1039, 0.1031, 0.1034, 0.1042, 0.1068, 0.1086, 0.1088, 0.1215, 0.2223",\
                 "0.1051, 0.1044, 0.1036, 0.1039, 0.105, 0.1056, 0.1087, 0.1118, 0.1315, 0.282",\
                 "0.1056, 0.1048, 0.1038, 0.1044, 0.1054, 0.1066, 0.1072, 0.1132, 0.156, 0.3914");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005944, 0.0233, 0.05644, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7173");
          values("1.314, 1.372, 1.511, 1.705, 1.972, 2.334, 2.808, 3.405, 4.133, 5.002",\
                 "1.335, 1.393, 1.532, 1.726, 1.993, 2.355, 2.829, 3.426, 4.155, 5.022",\
                 "1.41, 1.469, 1.607, 1.802, 2.069, 2.431, 2.905, 3.502, 4.231, 5.098",\
                 "1.542, 1.6, 1.739, 1.933, 2.2, 2.563, 3.037, 3.634, 4.362, 5.23",\
                 "1.669, 1.727, 1.865, 2.06, 2.327, 2.689, 3.163, 3.76, 4.489, 5.356",\
                 "1.769, 1.827, 1.966, 2.161, 2.428, 2.79, 3.264, 3.861, 4.589, 5.458",\
                 "1.846, 1.904, 2.043, 2.238, 2.505, 2.867, 3.341, 3.937, 4.666, 5.534",\
                 "1.899, 1.958, 2.096, 2.29, 2.558, 2.92, 3.394, 3.99, 4.718, 5.586",\
                 "1.926, 1.985, 2.123, 2.318, 2.585, 2.947, 3.421, 4.018, 4.746, 5.614",\
                 "1.921, 1.98, 2.118, 2.313, 2.58, 2.942, 3.416, 4.013, 4.741, 5.609");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005944, 0.0233, 0.05644, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7173");
          values("1.534, 1.604, 1.781, 2.08, 2.541, 3.187, 4.037, 5.107, 6.412, 7.97",\
                 "1.555, 1.624, 1.801, 2.101, 2.562, 3.208, 4.058, 5.127, 6.434, 7.991",\
                 "1.63, 1.699, 1.876, 2.175, 2.637, 3.283, 4.132, 5.202, 6.509, 8.067",\
                 "1.76, 1.829, 2.006, 2.305, 2.766, 3.412, 4.262, 5.332, 6.637, 8.195",\
                 "1.886, 1.955, 2.132, 2.431, 2.892, 3.538, 4.388, 5.458, 6.763, 8.321",\
                 "1.988, 2.057, 2.234, 2.533, 2.994, 3.641, 4.49, 5.56, 6.866, 8.421",\
                 "2.067, 2.136, 2.313, 2.612, 3.073, 3.719, 4.569, 5.639, 6.945, 8.504",\
                 "2.124, 2.192, 2.37, 2.669, 3.13, 3.776, 4.626, 5.695, 7.003, 8.561",\
                 "2.156, 2.225, 2.403, 2.702, 3.163, 3.809, 4.659, 5.728, 7.034, 8.589",\
                 "2.162, 2.23, 2.407, 2.707, 3.168, 3.815, 4.664, 5.733, 7.038, 8.594");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005944, 0.0233, 0.05644, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7173");
          values("0.1352, 0.1874, 0.322, 0.5602, 0.9534, 1.534, 2.313, 3.296, 4.5, 5.937",\
                 "0.1352, 0.1874, 0.3214, 0.56, 0.9536, 1.534, 2.311, 3.295, 4.502, 5.927",\
                 "0.1352, 0.1874, 0.322, 0.5602, 0.955, 1.535, 2.311, 3.297, 4.501, 5.932",\
                 "0.1352, 0.1874, 0.322, 0.5598, 0.9546, 1.535, 2.313, 3.294, 4.502, 5.932",\
                 "0.1352, 0.1874, 0.3214, 0.5598, 0.9536, 1.535, 2.311, 3.296, 4.502, 5.933",\
                 "0.1352, 0.1876, 0.322, 0.5604, 0.9536, 1.535, 2.313, 3.298, 4.498, 5.937",\
                 "0.1352, 0.1874, 0.3212, 0.5602, 0.9538, 1.534, 2.309, 3.291, 4.496, 5.933",\
                 "0.1352, 0.1876, 0.322, 0.5602, 0.955, 1.533, 2.311, 3.29, 4.489, 5.923",\
                 "0.1352, 0.1876, 0.322, 0.56, 0.9542, 1.534, 2.311, 3.295, 4.491, 5.918",\
                 "0.1352, 0.1874, 0.3214, 0.5602, 0.9548, 1.533, 2.312, 3.293, 4.494, 5.918");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.09579, 0.3618, 0.8698, 1.661, 2.772, 4.233, 6.074, 8.321, 11");
          index_2("0.001, 0.005944, 0.0233, 0.05644, 0.1081, 0.1805, 0.2759, 0.396, 0.5426, 0.7173");
          values("0.1564, 0.226, 0.4522, 0.9366, 1.719, 2.821, 4.275, 6.106, 8.337, 11.02",\
                 "0.156, 0.2266, 0.4522, 0.935, 1.72, 2.823, 4.276, 6.107, 8.349, 11",\
                 "0.1564, 0.2268, 0.453, 0.9362, 1.718, 2.824, 4.278, 6.11, 8.348, 11.01",\
                 "0.156, 0.226, 0.4522, 0.9366, 1.718, 2.823, 4.276, 6.106, 8.337, 11.02",\
                 "0.156, 0.2268, 0.452, 0.9362, 1.72, 2.823, 4.276, 6.106, 8.338, 11.02",\
                 "0.156, 0.2268, 0.4526, 0.9364, 1.72, 2.821, 4.272, 6.1, 8.342, 11.01",\
                 "0.1564, 0.2262, 0.4522, 0.9352, 1.718, 2.82, 4.274, 6.11, 8.347, 11.01",\
                 "0.156, 0.226, 0.4522, 0.935, 1.721, 2.82, 4.269, 6.107, 8.348, 11.01",\
                 "0.1558, 0.2262, 0.453, 0.9362, 1.719, 2.82, 4.271, 6.099, 8.338, 11.01",\
                 "0.1562, 0.226, 0.4524, 0.9362, 1.719, 2.82, 4.276, 6.102, 8.326, 10.99");
        }
      }
    }
  }

