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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003081 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      min_period : 13.26 ;
      min_pulse_width_high : 6.622 ;
      min_pulse_width_low : 6.293 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02905, 0.029, 0.02884, 0.02868, 0.02855, 0.02851, 0.02852, 0.0286, \
                  0.02854, 0.01535");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02282, 0.0228, 0.0227, 0.02252, 0.02238, 0.02228, 0.02227, 0.0223, \
                  0.02248, 0.02288");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.0294, 0.02934, 0.02919, 0.02902, 0.0289, 0.02885, 0.02885, 0.0289, \
                  0.02871, 0.01528");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02286, 0.02283, 0.02273, 0.02255, 0.0224, 0.02231, 0.02229, \
                  0.02233, 0.02252, 0.02297");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002199 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.0151, 0.01509, 0.01492, 0.01477, 0.01471, 0.0147, 0.01475, 0.01481, \
                  0.01343, 0.004242");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.01143, 0.01144, 0.01144, 0.01138, 0.01133, 0.01129, 0.01129, \
                  0.01134, 0.01146, 0.01169");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.000938, 0.000938, 0.0009379, 0.0009372, 0.0009352, 0.0009304, \
                  0.0009207, 0.0009013, 0.0008127, 0.0006184");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.0004827, -0.0004872, -0.0004942, -0.0005055, -0.0005135, -0.0005245, \
                  -0.0005388, -0.0005664, -0.000618, -0.0005972");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.149, 0.211, 0.415, 0.799, 1.324, 1.842, 2.338, 2.795, 3.234, 3.56",\
                 "0.094, 0.159, 0.356, 0.739, 1.254, 1.771, 2.259, 2.712, 3.147, 3.471",\
                 "-0.065, -0.003, 0.2, 0.58, 1.09, 1.6, 2.09, 2.537, 2.964, 3.287",\
                 "-0.484, -0.417, -0.213, 0.176, 0.682, 1.194, 1.682, 2.136, 2.567, 2.891",\
                 "-1.163, -1.096, -0.904, -0.514, -0.009, 0.504, 0.993, 1.447, 1.885, 2.199",\
                 "-1.988, -1.929, -1.739, -1.363, -0.878, -0.383, 0.103, 0.534, 0.973, 1.283",\
                 "-2.947, -2.895, -2.703, -2.347, -1.871, -1.399, -0.924, -0.498, -0.062, 0.233",\
                 "-4.024, -3.973, -3.799, -3.449, -2.996, -2.53, -2.074, -1.665, -1.233, -0.96",\
                 "-5.23, -5.177, -5.006, -4.677, -4.242, -3.791, -3.344, -2.948, -2.521, -2.273",\
                 "-6.553, -6.506, -6.357, -6.032, -5.6, -5.164, -4.753, -4.372, -3.951, -3.718");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.086, 0.148, 0.359, 0.688, 1.022, 1.334, 1.608, 1.847, 2.025, 2.145",\
                 "0.032, 0.098, 0.309, 0.643, 0.978, 1.29, 1.569, 1.81, 1.99, 2.106",\
                 "-0.131, -0.074, 0.148, 0.481, 0.824, 1.144, 1.434, 1.675, 1.864, 1.989",\
                 "-0.321, -0.258, -0.051, 0.293, 0.633, 0.955, 1.245, 1.498, 1.688, 1.814",\
                 "-0.472, -0.415, -0.21, 0.13, 0.465, 0.781, 1.073, 1.311, 1.502, 1.63",\
                 "-0.572, -0.515, -0.31, 0.021, 0.347, 0.654, 0.935, 1.177, 1.361, 1.486",\
                 "-0.588, -0.53, -0.334, -0.005, 0.308, 0.607, 0.873, 1.103, 1.279, 1.398",\
                 "-0.494, -0.449, -0.265, 0.06, 0.359, 0.646, 0.907, 1.126, 1.297, 1.397",\
                 "-0.316, -0.276, -0.086, 0.225, 0.514, 0.787, 1.032, 1.233, 1.395, 1.492",\
                 "-0.026, 0.012, 0.202, 0.507, 0.785, 1.037, 1.269, 1.458, 1.607, 1.694");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("3.475, 3.427, 3.143, 2.696, 2.075, 1.428, 0.843, 0.265, -0.243, -0.7",\
                 "3.57, 3.481, 3.204, 2.754, 2.132, 1.49, 0.902, 0.327, -0.185, -0.636",\
                 "3.735, 3.657, 3.375, 2.926, 2.302, 1.661, 1.073, 0.492, -0.016, -0.47",\
                 "4.162, 4.073, 3.797, 3.354, 2.726, 2.083, 1.492, 0.923, 0.41, -0.044",\
                 "4.856, 4.808, 4.522, 4.077, 3.453, 2.815, 2.224, 1.648, 1.158, 0.683",\
                 "5.92, 5.877, 5.593, 5.148, 4.517, 3.878, 3.295, 2.719, 2.204, 1.749",\
                 "7.334, 7.282, 6.997, 6.552, 5.927, 5.288, 4.702, 4.124, 3.62, 3.159",\
                 "8.998, 8.958, 8.674, 8.234, 7.604, 6.963, 6.379, 5.793, 5.279, 4.828",\
                 "10.82, 10.79, 10.49, 10.04, 9.421, 8.772, 8.192, 7.603, 7.101, 6.628",\
                 "12.78, 12.74, 12.43, 11.99, 11.37, 10.72, 10.14, 9.537, 9.037, 8.577");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("2.273, 2.19, 1.925, 1.499, 0.891, 0.335, -0.142, -0.535, -0.845, -1.041",\
                 "2.334, 2.237, 1.98, 1.55, 0.948, 0.385, -0.088, -0.483, -0.792, -0.987",\
                 "2.527, 2.433, 2.171, 1.745, 1.139, 0.585, 0.104, -0.3, -0.612, -0.821",\
                 "2.882, 2.79, 2.531, 2.112, 1.502, 0.937, 0.452, 0.041, -0.264, -0.53",\
                 "3.303, 3.209, 2.953, 2.53, 1.931, 1.367, 0.875, 0.458, 0.117, -0.116",\
                 "3.727, 3.635, 3.373, 2.957, 2.362, 1.796, 1.298, 0.878, 0.526, 0.288",\
                 "4.077, 3.986, 3.728, 3.303, 2.709, 2.147, 1.638, 1.212, 0.863, 0.61",\
                 "4.329, 4.24, 3.982, 3.562, 2.965, 2.393, 1.9, 1.469, 1.108, 0.835",\
                 "4.494, 4.395, 4.14, 3.718, 3.134, 2.569, 2.054, 1.635, 1.277, 1.019",\
                 "4.575, 4.478, 4.211, 3.792, 3.219, 2.632, 2.148, 1.706, 1.331, 1.083");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.7715 ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006318, 0.02498, 0.06063, 0.1162, 0.1941, 0.2966, 0.4258, 0.5835, 0.7715");
          values("0.05538, 0.0557, 0.0565, 0.05728, 0.05782, 0.05815, 0.05834, 0.05846, 0.05853, 0.05849",\
                 "0.05537, 0.0557, 0.05649, 0.05726, 0.0578, 0.05813, 0.05833, 0.05845, 0.05852, 0.05846",\
                 "0.05537, 0.05569, 0.05649, 0.05726, 0.0578, 0.05813, 0.05833, 0.05845, 0.05851, 0.05843",\
                 "0.05538, 0.05569, 0.05649, 0.05727, 0.0578, 0.05813, 0.05833, 0.05845, 0.0585, 0.05835",\
                 "0.0554, 0.05572, 0.05651, 0.05729, 0.05783, 0.05816, 0.05835, 0.05847, 0.05848, 0.05817",\
                 "0.05544, 0.05576, 0.05656, 0.05733, 0.05787, 0.05821, 0.0584, 0.0585, 0.0584, 0.05766",\
                 "0.05546, 0.05578, 0.05657, 0.05737, 0.0579, 0.05822, 0.05841, 0.05843, 0.05786, 0.05625",\
                 "0.05549, 0.05581, 0.0566, 0.0574, 0.05793, 0.05824, 0.05833, 0.05765, 0.0557, 0.0535",\
                 "0.05548, 0.05582, 0.05661, 0.05738, 0.05787, 0.05766, 0.05558, 0.05295, 0.05107, 0.04972",\
                 "0.04666, 0.04575, 0.04252, 0.04088, 0.04022, 0.03992, 0.03976, 0.03967, 0.03962, 0.03958");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006318, 0.02498, 0.06063, 0.1162, 0.1941, 0.2966, 0.4258, 0.5835, 0.7715");
          values("-0.03507, -0.03486, -0.03436, -0.03368, -0.03295, -0.03183, -0.01947, 0.0672, 0.2605, 0.4558",\
                 "-0.03509, -0.03487, -0.03439, -0.03372, -0.03294, -0.03183, -0.01852, 0.07072, 0.2647, 0.4573",\
                 "-0.0351, -0.03492, -0.03438, -0.03367, -0.03286, -0.03159, -0.01554, 0.08365, 0.2788, 0.4617",\
                 "-0.03517, -0.03496, -0.03444, -0.03373, -0.03299, -0.03133, -0.007725, 0.1107, 0.3028, 0.4658",\
                 "-0.03523, -0.03504, -0.03451, -0.03385, -0.03303, -0.02984, 0.01042, 0.1539, 0.3289, 0.4621",\
                 "-0.03535, -0.03515, -0.03464, -0.03397, -0.03304, -0.0247, 0.04854, 0.2048, 0.3423, 0.4399",\
                 "-0.03563, -0.03544, -0.0349, -0.03419, -0.03252, -0.003433, 0.1123, 0.2373, 0.3247, 0.3851",\
                 "-0.03638, -0.03618, -0.03566, -0.03487, -0.02093, 0.06131, 0.1525, 0.2124, 0.2518, 0.2787",\
                 "-0.03892, -0.03875, -0.03789, -0.01599, 0.03001, 0.05803, 0.07435, 0.08433, 0.09072, 0.09505",\
                 "-0.07638, -0.07638, -0.07638, -0.07639, -0.0764, -0.0764, -0.0764, -0.0764, -0.0764, -0.07641");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006318, 0.02498, 0.06063, 0.1162, 0.1941, 0.2966, 0.4258, 0.5835, 0.7715");
          values("5.627, 5.731, 5.992, 6.355, 6.822, 7.418, 8.174, 9.117, 10.26, 11.63",\
                 "5.693, 5.797, 6.058, 6.421, 6.888, 7.484, 8.24, 9.183, 10.33, 11.7",\
                 "5.924, 6.027, 6.288, 6.652, 7.119, 7.715, 8.471, 9.414, 10.56, 11.93",\
                 "6.362, 6.465, 6.726, 7.09, 7.556, 8.152, 8.909, 9.851, 11, 12.37",\
                 "6.951, 7.055, 7.316, 7.678, 8.146, 8.741, 9.498, 10.44, 11.59, 12.95",\
                 "7.557, 7.659, 7.921, 8.284, 8.751, 9.347, 10.1, 11.05, 12.19, 13.56",\
                 "8.145, 8.246, 8.508, 8.872, 9.338, 9.934, 10.69, 11.63, 12.78, 14.15",\
                 "8.697, 8.8, 9.061, 9.424, 9.891, 10.49, 11.24, 12.19, 13.33, 14.7",\
                 "9.211, 9.314, 9.575, 9.937, 10.41, 11, 11.76, 12.7, 13.85, 15.21",\
                 "9.665, 9.768, 10.03, 10.39, 10.86, 11.46, 12.21, 13.15, 14.3, 15.67");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006318, 0.02498, 0.06063, 0.1162, 0.1941, 0.2966, 0.4258, 0.5835, 0.7715");
          values("7.938, 8.085, 8.493, 9.186, 10.25, 11.73, 13.67, 16.12, 19.11, 22.66",\
                 "8.003, 8.151, 8.559, 9.252, 10.31, 11.79, 13.74, 16.19, 19.17, 22.73",\
                 "8.233, 8.38, 8.789, 9.481, 10.54, 12.02, 13.97, 16.42, 19.4, 22.96",\
                 "8.663, 8.811, 9.219, 9.912, 10.97, 12.45, 14.4, 16.85, 19.83, 23.39",\
                 "9.243, 9.39, 9.798, 10.49, 11.55, 13.03, 14.98, 17.43, 20.41, 23.97",\
                 "9.839, 9.987, 10.39, 11.09, 12.15, 13.63, 15.57, 18.02, 21.01, 24.57",\
                 "10.42, 10.57, 10.97, 11.67, 12.73, 14.21, 16.16, 18.6, 21.59, 25.15",\
                 "10.97, 11.12, 11.53, 12.22, 13.28, 14.76, 16.7, 19.15, 22.14, 25.7",\
                 "11.48, 11.62, 12.03, 12.73, 13.78, 15.27, 17.21, 19.66, 22.65, 26.2",\
                 "11.93, 12.08, 12.49, 13.18, 14.24, 15.72, 17.67, 20.11, 23.1, 26.66");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006318, 0.02498, 0.06063, 0.1162, 0.1941, 0.2966, 0.4258, 0.5835, 0.7715");
          values("0.4312, 0.512, 0.7526, 1.162, 1.785, 2.693, 3.928, 5.518, 7.471, 9.826",\
                 "0.4314, 0.5134, 0.7536, 1.161, 1.788, 2.691, 3.929, 5.523, 7.476, 9.819",\
                 "0.4316, 0.5128, 0.7534, 1.162, 1.787, 2.692, 3.926, 5.519, 7.474, 9.83",\
                 "0.4314, 0.5126, 0.7518, 1.16, 1.785, 2.691, 3.927, 5.515, 7.472, 9.826",\
                 "0.432, 0.5124, 0.7532, 1.162, 1.786, 2.694, 3.928, 5.516, 7.474, 9.832",\
                 "0.432, 0.514, 0.752, 1.162, 1.788, 2.692, 3.93, 5.522, 7.48, 9.83",\
                 "0.432, 0.512, 0.752, 1.164, 1.786, 2.694, 3.928, 5.514, 7.48, 9.826",\
                 "0.432, 0.512, 0.752, 1.164, 1.786, 2.694, 3.928, 5.52, 7.472, 9.81",\
                 "0.43, 0.514, 0.752, 1.16, 1.786, 2.694, 3.926, 5.52, 7.47, 9.8",\
                 "0.432, 0.512, 0.754, 1.162, 1.786, 2.694, 3.93, 5.522, 7.466, 9.808");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.006318, 0.02498, 0.06063, 0.1162, 0.1941, 0.2966, 0.4258, 0.5835, 0.7715");
          values("0.571, 0.7006, 1.197, 2.281, 4.045, 6.528, 9.792, 13.91, 18.94, 24.98",\
                 "0.5708, 0.7006, 1.198, 2.281, 4.046, 6.53, 9.796, 13.93, 18.95, 24.92",\
                 "0.5706, 0.701, 1.197, 2.282, 4.044, 6.534, 9.802, 13.92, 18.95, 24.94",\
                 "0.5712, 0.7008, 1.196, 2.28, 4.046, 6.532, 9.796, 13.92, 18.93, 24.94",\
                 "0.57, 0.702, 1.196, 2.28, 4.044, 6.532, 9.804, 13.93, 18.95, 24.95",\
                 "0.572, 0.7, 1.198, 2.28, 4.044, 6.532, 9.8, 13.91, 18.95, 24.94",\
                 "0.572, 0.702, 1.2, 2.282, 4.046, 6.534, 9.806, 13.92, 18.96, 24.94",\
                 "0.572, 0.704, 1.198, 2.282, 4.044, 6.526, 9.788, 13.91, 18.96, 24.97",\
                 "0.572, 0.702, 1.198, 2.28, 4.038, 6.52, 9.788, 13.92, 18.96, 24.97",\
                 "0.572, 0.7, 1.198, 2.278, 4.04, 6.518, 9.782, 13.91, 18.93, 24.94");
        }
      }
    }
  }

