/*
 * 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_1) {
    area : 63.660800 ;

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

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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003183 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 8.6 ;
      min_period : 1.709 ;
      min_pulse_width_high : 0.707 ;
      min_pulse_width_low : 0.853 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.1204, 0.12, 0.1208, 0.1266, 0.1385, 0.1574, 0.1837, 0.218, 0.2606, \
                 0.3118");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.09117, 0.09093, 0.09137, 0.096, 0.1057, 0.1218, 0.1448, 0.175, \
                 0.2125, 0.2578");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.1223, 0.1219, 0.1227, 0.1285, 0.1404, 0.1592, 0.1855, 0.2197, \
                 0.2623, 0.3135");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.0911, 0.09083, 0.09129, 0.0959, 0.1057, 0.1219, 0.1449, 0.1751, \
                 0.2127, 0.258");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002361 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 8.6 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.06687, 0.0663, 0.06598, 0.06817, 0.07384, 0.08251, 0.09444, \
                 0.1101, 0.1296, 0.1532");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.04624, 0.04637, 0.04688, 0.04894, 0.05308, 0.05992, 0.06961, \
                 0.08233, 0.09827, 0.1175");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.00438, 0.004375, 0.004372, 0.004376, 0.004367, 0.004372, 0.004373, \
                 0.00437, 0.004365, 0.004356");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("-0.002702, -0.002705, -0.002716, -0.002736, -0.002756, -0.002771, \
                 -0.002789, -0.002797, -0.002808, -0.002819");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.069, 0.083, 0.125, 0.199, 0.256, 0.29, 0.31, 0.302, 0.274, 0.216",\
                 "0.06, 0.071, 0.118, 0.189, 0.247, 0.282, 0.295, 0.29, 0.265, 0.209",\
                 "0.015, 0.024, 0.079, 0.144, 0.2, 0.239, 0.257, 0.249, 0.222, 0.166",\
                 "-0.108, -0.093, -0.05, 0.023, 0.079, 0.125, 0.136, 0.135, 0.102, 0.053",\
                 "-0.285, -0.278, -0.225, -0.152, -0.094, -0.057, -0.035, -0.039, -0.069, -0.121",\
                 "-0.514, -0.501, -0.455, -0.381, -0.328, -0.281, -0.268, -0.264, -0.295, -0.349",\
                 "-0.791, -0.776, -0.728, -0.655, -0.605, -0.561, -0.541, -0.54, -0.576, -0.631",\
                 "-1.116, -1.109, -1.063, -0.99, -0.938, -0.89, -0.875, -0.875, -0.908, -0.964",\
                 "-1.499, -1.494, -1.454, -1.378, -1.322, -1.277, -1.262, -1.259, -1.292, -1.343",\
                 "-1.949, -1.944, -1.903, -1.826, -1.779, -1.726, -1.709, -1.708, -1.746, -1.79");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.034, 0.049, 0.087, 0.134, 0.167, 0.181, 0.175, 0.154, 0.115, 0.049",\
                 "0.026, 0.039, 0.082, 0.131, 0.162, 0.17, 0.175, 0.147, 0.113, 0.046",\
                 "-0.001, 0.012, 0.055, 0.103, 0.139, 0.156, 0.157, 0.137, 0.098, 0.037",\
                 "-0.008, 0.004, 0.048, 0.1, 0.132, 0.147, 0.146, 0.129, 0.093, 0.025",\
                 "0.005, 0.015, 0.062, 0.112, 0.142, 0.162, 0.153, 0.138, 0.092, 0.028",\
                 "0.055, 0.071, 0.113, 0.161, 0.189, 0.194, 0.19, 0.166, 0.119, 0.052",\
                 "0.162, 0.176, 0.214, 0.254, 0.282, 0.281, 0.275, 0.241, 0.192, 0.119",\
                 "0.318, 0.33, 0.367, 0.406, 0.425, 0.424, 0.403, 0.366, 0.314, 0.24",\
                 "0.53, 0.545, 0.581, 0.615, 0.627, 0.614, 0.594, 0.55, 0.49, 0.413",\
                 "0.811, 0.818, 0.859, 0.882, 0.89, 0.873, 0.845, 0.797, 0.731, 0.64");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.389, 0.381, 0.326, 0.247, 0.184, 0.136, 0.111, 0.106, 0.132, 0.186",\
                 "0.397, 0.389, 0.332, 0.254, 0.185, 0.142, 0.116, 0.115, 0.143, 0.195",\
                 "0.447, 0.432, 0.378, 0.303, 0.236, 0.189, 0.16, 0.162, 0.192, 0.242",\
                 "0.581, 0.565, 0.515, 0.437, 0.37, 0.321, 0.294, 0.293, 0.318, 0.373",\
                 "0.799, 0.788, 0.73, 0.649, 0.586, 0.539, 0.51, 0.514, 0.532, 0.586",\
                 "1.078, 1.066, 1.011, 0.937, 0.872, 0.826, 0.793, 0.794, 0.813, 0.867",\
                 "1.432, 1.418, 1.371, 1.284, 1.223, 1.174, 1.147, 1.145, 1.167, 1.216",\
                 "1.848, 1.837, 1.784, 1.705, 1.641, 1.597, 1.568, 1.562, 1.583, 1.635",\
                 "2.335, 2.329, 2.273, 2.19, 2.127, 2.084, 2.047, 2.049, 2.069, 2.118",\
                 "2.892, 2.882, 2.826, 2.745, 2.68, 2.632, 2.602, 2.594, 2.62, 2.661");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.372, 0.354, 0.294, 0.211, 0.154, 0.119, 0.103, 0.112, 0.156, 0.227",\
                 "0.377, 0.365, 0.302, 0.225, 0.162, 0.13, 0.107, 0.127, 0.168, 0.231",\
                 "0.42, 0.408, 0.347, 0.263, 0.201, 0.164, 0.142, 0.156, 0.192, 0.264",\
                 "0.471, 0.45, 0.393, 0.314, 0.244, 0.212, 0.194, 0.199, 0.23, 0.294",\
                 "0.487, 0.471, 0.409, 0.327, 0.263, 0.224, 0.207, 0.21, 0.248, 0.312",\
                 "0.463, 0.447, 0.392, 0.308, 0.241, 0.205, 0.187, 0.196, 0.227, 0.298",\
                 "0.403, 0.39, 0.33, 0.246, 0.182, 0.15, 0.129, 0.14, 0.174, 0.239",\
                 "0.29, 0.278, 0.218, 0.135, 0.072, 0.04, 0.017, 0.029, 0.071, 0.143",\
                 "0.13, 0.105, 0.048, -0.029, -0.088, -0.127, -0.151, -0.132, -0.086, -0.017",\
                 "-0.102, -0.121, -0.177, -0.254, -0.323, -0.356, -0.367, -0.35, -0.307, -0.23");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.3602 ;
      max_transition : 8.6 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003479, 0.01218, 0.0288, 0.0547, 0.09103, 0.1388, 0.1991, 0.2726, 0.3602");
          values("0.1079, 0.1073, 0.1066, 0.1064, 0.1064, 0.1063, 0.1063, 0.1063, 0.1063, 0.1063",\
                 "0.1078, 0.1072, 0.1066, 0.1064, 0.1063, 0.1063, 0.1063, 0.1063, 0.1063, 0.1063",\
                 "0.1079, 0.1073, 0.1066, 0.1065, 0.1064, 0.1063, 0.1063, 0.1063, 0.1063, 0.1063",\
                 "0.1082, 0.1076, 0.107, 0.1068, 0.1068, 0.1067, 0.1067, 0.1067, 0.1067, 0.1067",\
                 "0.1089, 0.1083, 0.1077, 0.1075, 0.1074, 0.1074, 0.1074, 0.1074, 0.1074, 0.1074",\
                 "0.1094, 0.1088, 0.1082, 0.108, 0.1079, 0.1079, 0.1079, 0.1079, 0.1079, 0.1079",\
                 "0.1103, 0.1096, 0.109, 0.1089, 0.1088, 0.1087, 0.1087, 0.1087, 0.1087, 0.1087",\
                 "0.111, 0.1104, 0.1097, 0.1096, 0.1095, 0.1095, 0.1095, 0.1094, 0.1094, 0.1094",\
                 "0.1119, 0.1112, 0.1106, 0.1104, 0.1104, 0.1103, 0.1103, 0.1103, 0.1103, 0.1103",\
                 "0.1128, 0.1123, 0.1117, 0.1114, 0.1114, 0.1113, 0.1113, 0.1113, 0.1113, 0.1113");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003479, 0.01218, 0.0288, 0.0547, 0.09103, 0.1388, 0.1991, 0.2726, 0.3602");
          values("0.1076, 0.1067, 0.1055, 0.105, 0.1052, 0.1059, 0.1066, 0.107, 0.108, 0.1119",\
                 "0.1076, 0.1066, 0.1054, 0.1049, 0.1052, 0.1058, 0.1066, 0.1073, 0.1078, 0.1116",\
                 "0.1074, 0.1066, 0.1053, 0.1049, 0.1052, 0.1058, 0.1066, 0.1069, 0.1076, 0.1119",\
                 "0.1078, 0.1069, 0.1057, 0.1052, 0.1054, 0.1061, 0.1067, 0.1072, 0.1082, 0.1128",\
                 "0.1083, 0.1074, 0.1061, 0.1057, 0.1059, 0.1065, 0.1072, 0.1077, 0.1085, 0.1145",\
                 "0.109, 0.1081, 0.1068, 0.1067, 0.1067, 0.1073, 0.1078, 0.1085, 0.1096, 0.1163",\
                 "0.11, 0.1091, 0.1078, 0.1072, 0.1079, 0.1086, 0.1089, 0.1095, 0.1107, 0.1189",\
                 "0.1114, 0.1104, 0.1091, 0.1087, 0.1087, 0.1096, 0.1108, 0.1116, 0.1119, 0.1232",\
                 "0.1128, 0.1119, 0.1105, 0.1102, 0.1102, 0.1104, 0.1119, 0.1137, 0.1151, 0.1303",\
                 "0.1146, 0.1137, 0.1124, 0.1117, 0.1119, 0.1121, 0.1129, 0.1143, 0.1186, 0.1422");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003479, 0.01218, 0.0288, 0.0547, 0.09103, 0.1388, 0.1991, 0.2726, 0.3602");
          values("0.858, 0.8906, 0.9789, 1.115, 1.311, 1.58, 1.934, 2.379, 2.923, 3.571",\
                 "0.8716, 0.9038, 0.9925, 1.129, 1.324, 1.594, 1.947, 2.393, 2.936, 3.584",\
                 "0.9219, 0.9542, 1.043, 1.179, 1.374, 1.644, 1.997, 2.443, 2.987, 3.635",\
                 "1.001, 1.033, 1.121, 1.258, 1.453, 1.723, 2.076, 2.522, 3.065, 3.714",\
                 "1.067, 1.1, 1.188, 1.325, 1.52, 1.789, 2.143, 2.588, 3.132, 3.78",\
                 "1.118, 1.151, 1.239, 1.376, 1.571, 1.84, 2.194, 2.639, 3.183, 3.83",\
                 "1.152, 1.184, 1.272, 1.409, 1.605, 1.874, 2.227, 2.673, 3.216, 3.864",\
                 "1.163, 1.195, 1.283, 1.42, 1.615, 1.885, 2.238, 2.683, 3.227, 3.875",\
                 "1.148, 1.18, 1.269, 1.405, 1.601, 1.87, 2.224, 2.669, 3.212, 3.86",\
                 "1.106, 1.139, 1.227, 1.364, 1.559, 1.828, 2.182, 2.627, 3.171, 3.819");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003479, 0.01218, 0.0288, 0.0547, 0.09103, 0.1388, 0.1991, 0.2726, 0.3602");
          values("0.9773, 1.018, 1.14, 1.363, 1.711, 2.199, 2.841, 3.651, 4.639, 5.818",\
                 "0.9906, 1.031, 1.153, 1.376, 1.724, 2.212, 2.854, 3.664, 4.653, 5.83",\
                 "1.04, 1.081, 1.203, 1.426, 1.774, 2.262, 2.904, 3.714, 4.702, 5.881",\
                 "1.119, 1.159, 1.282, 1.505, 1.853, 2.341, 2.983, 3.793, 4.781, 5.96",\
                 "1.188, 1.228, 1.35, 1.573, 1.921, 2.41, 3.052, 3.861, 4.849, 6.028",\
                 "1.242, 1.282, 1.404, 1.628, 1.975, 2.464, 3.106, 3.915, 4.904, 6.082",\
                 "1.281, 1.321, 1.443, 1.666, 2.014, 2.503, 3.144, 3.954, 4.943, 6.121",\
                 "1.299, 1.339, 1.461, 1.685, 2.032, 2.52, 3.163, 3.972, 4.959, 6.136",\
                 "1.293, 1.333, 1.455, 1.678, 2.026, 2.515, 3.157, 3.967, 4.953, 6.13",\
                 "1.262, 1.302, 1.424, 1.648, 1.996, 2.484, 3.126, 3.935, 4.923, 6.101");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003479, 0.01218, 0.0288, 0.0547, 0.09103, 0.1388, 0.1991, 0.2726, 0.3602");
          values("0.1061, 0.1391, 0.2394, 0.424, 0.7294, 1.177, 1.77, 2.516, 3.435, 4.524",\
                 "0.1059, 0.1391, 0.2395, 0.4238, 0.7308, 1.177, 1.77, 2.517, 3.435, 4.525",\
                 "0.1058, 0.1392, 0.239, 0.4242, 0.7308, 1.176, 1.769, 2.516, 3.435, 4.522",\
                 "0.1056, 0.139, 0.2394, 0.424, 0.7314, 1.177, 1.768, 2.519, 3.435, 4.521",\
                 "0.1058, 0.1388, 0.2392, 0.425, 0.7308, 1.177, 1.769, 2.52, 3.43, 4.525",\
                 "0.1056, 0.1392, 0.2384, 0.424, 0.7294, 1.175, 1.769, 2.515, 3.43, 4.525",\
                 "0.1058, 0.1386, 0.239, 0.4238, 0.7298, 1.174, 1.766, 2.514, 3.426, 4.523",\
                 "0.1056, 0.1388, 0.2398, 0.4242, 0.7298, 1.176, 1.766, 2.513, 3.425, 4.514",\
                 "0.1062, 0.1386, 0.239, 0.4244, 0.7302, 1.176, 1.77, 2.514, 3.426, 4.512",\
                 "0.1056, 0.1392, 0.239, 0.4238, 0.7316, 1.176, 1.769, 2.514, 3.426, 4.515");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.003479, 0.01218, 0.0288, 0.0547, 0.09103, 0.1388, 0.1991, 0.2726, 0.3602");
          values("0.1334, 0.1864, 0.3724, 0.7582, 1.373, 2.233, 3.362, 4.789, 6.532, 8.607",\
                 "0.1336, 0.186, 0.3722, 0.7582, 1.372, 2.233, 3.362, 4.789, 6.532, 8.614",\
                 "0.133, 0.1862, 0.3722, 0.7582, 1.37, 2.23, 3.36, 4.79, 6.532, 8.609",\
                 "0.1336, 0.186, 0.3724, 0.7582, 1.37, 2.233, 3.365, 4.787, 6.531, 8.61",\
                 "0.1334, 0.1864, 0.3724, 0.758, 1.371, 2.233, 3.366, 4.787, 6.532, 8.614",\
                 "0.1332, 0.1862, 0.3726, 0.7592, 1.37, 2.233, 3.368, 4.789, 6.532, 8.609",\
                 "0.1332, 0.1862, 0.3724, 0.7588, 1.372, 2.23, 3.363, 4.79, 6.533, 8.614",\
                 "0.134, 0.1864, 0.3726, 0.7592, 1.371, 2.23, 3.361, 4.794, 6.53, 8.61",\
                 "0.1334, 0.1862, 0.3726, 0.7576, 1.371, 2.232, 3.364, 4.786, 6.529, 8.606",\
                 "0.1342, 0.1864, 0.3728, 0.7598, 1.37, 2.23, 3.362, 4.794, 6.526, 8.602");
        }
      }
    }
  }

