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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003279 ;
      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.621 ;
      min_pulse_width_high : 1.301 ;
      min_pulse_width_low : 1.263 ;
      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.1001, 0.09978, 0.09932, 0.1003, 0.1033, 0.1085, 0.1159, 0.1259, \
                  0.1387, 0.1544");
        }

        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.07731, 0.077, 0.07662, 0.07711, 0.07931, 0.0836, 0.09005, 0.09891, \
                  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.1015, 0.1011, 0.1006, 0.1016, 0.1046, 0.1097, 0.1171, 0.1271, \
                  0.1399, 0.1556");
        }

        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.07739, 0.07709, 0.07664, 0.07716, 0.07942, 0.08362, 0.09011, \
                  0.09904, 0.1103, 0.1242");
        }
      }

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

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

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

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

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

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

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

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

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

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

    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.05149, 0.05107, 0.05044, 0.05073, 0.05242, 0.05532, 0.05927, \
                  0.06434, 0.07067, 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.038, 0.03901, 0.04099, 0.04403, 0.04816, \
                  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.003309, 0.003299, 0.003305, 0.003309, 0.003305, 0.003313, 0.003308, \
                  0.003305, 0.003299, 0.003287");
        }

        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.002033, -0.002069, -0.002101, -0.002121, -0.002127, \
                  -0.002136, -0.002145, -0.002154, -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.137, 0.152, 0.221, 0.341, 0.442, 0.527, 0.576, 0.614, 0.617, 0.593",\
                 "0.12, 0.138, 0.21, 0.325, 0.428, 0.508, 0.566, 0.595, 0.598, 0.573",\
                 "0.058, 0.075, 0.148, 0.265, 0.365, 0.443, 0.501, 0.536, 0.535, 0.512",\
                 "-0.092, -0.077, -0.006, 0.113, 0.216, 0.295, 0.348, 0.384, 0.386, 0.361",\
                 "-0.297, -0.285, -0.22, -0.099, -0, 0.083, 0.136, 0.176, 0.173, 0.151",\
                 "-0.563, -0.551, -0.483, -0.368, -0.27, -0.191, -0.134, -0.099, -0.094, -0.114",\
                 "-0.879, -0.868, -0.809, -0.695, -0.599, -0.522, -0.466, -0.425, -0.431, -0.448",\
                 "-1.247, -1.243, -1.18, -1.077, -0.983, -0.905, -0.852, -0.815, -0.82, -0.841",\
                 "-1.686, -1.681, -1.626, -1.522, -1.434, -1.357, -1.305, -1.268, -1.268, -1.293",\
                 "-2.18, -2.183, -2.127, -2.024, -1.946, -1.868, -1.823, -1.78, -1.788, -1.807");
        }

        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.057, 0.081, 0.148, 0.227, 0.287, 0.327, 0.338, 0.338, 0.304, 0.249",\
                 "0.041, 0.06, 0.129, 0.21, 0.276, 0.309, 0.329, 0.331, 0.298, 0.247",\
                 "-0.003, 0.021, 0.093, 0.174, 0.236, 0.283, 0.302, 0.3, 0.278, 0.226",\
                 "-0.027, -0.007, 0.065, 0.15, 0.21, 0.258, 0.279, 0.283, 0.254, 0.204",\
                 "-0.023, -0.001, 0.064, 0.144, 0.21, 0.254, 0.273, 0.27, 0.245, 0.197",\
                 "0.01, 0.029, 0.099, 0.181, 0.236, 0.286, 0.3, 0.296, 0.272, 0.223",\
                 "0.085, 0.107, 0.176, 0.249, 0.303, 0.347, 0.358, 0.35, 0.321, 0.27",\
                 "0.221, 0.235, 0.304, 0.376, 0.423, 0.456, 0.461, 0.451, 0.417, 0.362",\
                 "0.412, 0.425, 0.493, 0.55, 0.595, 0.626, 0.626, 0.605, 0.565, 0.503",\
                 "0.67, 0.679, 0.748, 0.798, 0.833, 0.855, 0.847, 0.826, 0.777, 0.711");
        }
      }

      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.578, 0.555, 0.477, 0.336, 0.214, 0.11, 0.037, -0.01, -0.032, -0.017",\
                 "0.588, 0.566, 0.489, 0.35, 0.227, 0.124, 0.053, 0.001, -0.018, 0",\
                 "0.652, 0.637, 0.556, 0.415, 0.289, 0.187, 0.119, 0.069, 0.047, 0.067",\
                 "0.823, 0.804, 0.728, 0.592, 0.458, 0.364, 0.287, 0.233, 0.217, 0.236",\
                 "1.108, 1.082, 1.003, 0.865, 0.74, 0.638, 0.57, 0.517, 0.499, 0.515",\
                 "1.466, 1.44, 1.367, 1.229, 1.101, 1.001, 0.926, 0.873, 0.852, 0.871",\
                 "1.874, 1.848, 1.771, 1.631, 1.508, 1.408, 1.33, 1.285, 1.264, 1.274",\
                 "2.343, 2.322, 2.248, 2.107, 1.986, 1.882, 1.805, 1.753, 1.739, 1.746",\
                 "2.891, 2.872, 2.789, 2.653, 2.527, 2.428, 2.356, 2.299, 2.279, 2.291",\
                 "3.516, 3.496, 3.414, 3.276, 3.15, 3.052, 2.976, 2.923, 2.902, 2.916");
        }

        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.504, 0.477, 0.392, 0.26, 0.16, 0.074, 0.032, 0.02, 0.029, 0.082",\
                 "0.524, 0.497, 0.414, 0.281, 0.17, 0.095, 0.047, 0.032, 0.044, 0.1",\
                 "0.591, 0.569, 0.482, 0.345, 0.236, 0.155, 0.108, 0.085, 0.099, 0.149",\
                 "0.682, 0.654, 0.567, 0.442, 0.321, 0.245, 0.192, 0.165, 0.173, 0.215",\
                 "0.753, 0.721, 0.633, 0.504, 0.395, 0.302, 0.253, 0.227, 0.229, 0.265",\
                 "0.771, 0.743, 0.658, 0.533, 0.419, 0.327, 0.278, 0.248, 0.247, 0.287",\
                 "0.746, 0.722, 0.638, 0.505, 0.389, 0.309, 0.25, 0.22, 0.228, 0.266",\
                 "0.681, 0.655, 0.575, 0.443, 0.336, 0.238, 0.189, 0.167, 0.167, 0.202",\
                 "0.566, 0.532, 0.457, 0.326, 0.209, 0.126, 0.073, 0.048, 0.05, 0.088",\
                 "0.388, 0.36, 0.274, 0.148, 0.045, -0.048, -0.103, -0.13, -0.122, -0.085");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 1.435 ;
      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.0109, 0.04565, 0.112, 0.2154, 0.3604, 0.5513, 0.7917, 1.085, 1.435");
          values("0.1991, 0.1983, 0.1991, 0.2012, 0.2026, 0.2034, 0.2039, 0.2042, 0.2045, 0.2046",\
                 "0.1991, 0.1982, 0.1991, 0.2011, 0.2026, 0.2035, 0.204, 0.2044, 0.2045, 0.2047",\
                 "0.1991, 0.1981, 0.1991, 0.2011, 0.2025, 0.2034, 0.2038, 0.2042, 0.2044, 0.2045",\
                 "0.1992, 0.1983, 0.1992, 0.2013, 0.2027, 0.2035, 0.204, 0.2044, 0.2046, 0.2047",\
                 "0.1995, 0.1986, 0.1996, 0.2016, 0.203, 0.2038, 0.2043, 0.2047, 0.2049, 0.205",\
                 "0.1996, 0.1988, 0.1998, 0.2018, 0.2031, 0.204, 0.2045, 0.2048, 0.205, 0.2052",\
                 "0.1998, 0.199, 0.1999, 0.202, 0.2033, 0.2042, 0.2047, 0.2051, 0.2053, 0.2054",\
                 "0.2002, 0.1994, 0.2002, 0.2023, 0.2038, 0.2046, 0.2051, 0.2054, 0.2056, 0.2057",\
                 "0.2005, 0.1997, 0.2006, 0.2026, 0.2039, 0.2047, 0.2053, 0.2056, 0.2059, 0.206",\
                 "0.2011, 0.2, 0.2009, 0.203, 0.2044, 0.2052, 0.2058, 0.2061, 0.2063, 0.2064");
        }

        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.0109, 0.04565, 0.112, 0.2154, 0.3604, 0.5513, 0.7917, 1.085, 1.435");
          values("0.1993, 0.1977, 0.1964, 0.1976, 0.2003, 0.2028, 0.2056, 0.2095, 0.2128, 0.2719",\
                 "0.1992, 0.1975, 0.1964, 0.1977, 0.2005, 0.2034, 0.2056, 0.2095, 0.214, 0.2729",\
                 "0.1991, 0.1975, 0.1963, 0.1977, 0.2006, 0.2033, 0.2057, 0.2075, 0.214, 0.2818",\
                 "0.199, 0.1972, 0.1961, 0.1975, 0.2005, 0.2034, 0.2052, 0.2073, 0.2145, 0.2907",\
                 "0.1989, 0.1971, 0.1958, 0.1974, 0.2004, 0.2032, 0.2059, 0.2076, 0.2158, 0.3076",\
                 "0.199, 0.1971, 0.1962, 0.197, 0.1999, 0.2029, 0.2056, 0.2076, 0.219, 0.3329",\
                 "0.1992, 0.1971, 0.1959, 0.1972, 0.2002, 0.2027, 0.2058, 0.2094, 0.226, 0.3759",\
                 "0.1989, 0.1976, 0.196, 0.1974, 0.1986, 0.2046, 0.2064, 0.2071, 0.2324, 0.4406",\
                 "0.1994, 0.1977, 0.1962, 0.1976, 0.1994, 0.2008, 0.2068, 0.2125, 0.2543, 0.5634",\
                 "0.1997, 0.1977, 0.1967, 0.1981, 0.1995, 0.2025, 0.2044, 0.2153, 0.3024, 0.7876");
        }
      }

      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.0109, 0.04565, 0.112, 0.2154, 0.3604, 0.5513, 0.7917, 1.085, 1.435");
          values("1.414, 1.469, 1.597, 1.783, 2.047, 2.411, 2.888, 3.49, 4.224, 5.1",\
                 "1.435, 1.489, 1.617, 1.804, 2.068, 2.431, 2.909, 3.511, 4.246, 5.121",\
                 "1.51, 1.565, 1.693, 1.879, 2.143, 2.507, 2.985, 3.587, 4.321, 5.197",\
                 "1.643, 1.698, 1.826, 2.012, 2.276, 2.64, 3.118, 3.719, 4.454, 5.329",\
                 "1.771, 1.826, 1.954, 2.14, 2.404, 2.768, 3.246, 3.848, 4.582, 5.458",\
                 "1.873, 1.928, 2.057, 2.243, 2.507, 2.871, 3.348, 3.95, 4.685, 5.559",\
                 "1.952, 2.007, 2.135, 2.321, 2.585, 2.949, 3.427, 4.028, 4.763, 5.638",\
                 "2.007, 2.062, 2.19, 2.376, 2.64, 3.004, 3.482, 4.084, 4.818, 5.693",\
                 "2.035, 2.091, 2.219, 2.405, 2.669, 3.033, 3.51, 4.112, 4.846, 5.721",\
                 "2.035, 2.09, 2.218, 2.404, 2.668, 3.032, 3.51, 4.112, 4.846, 5.721");
        }

        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.0109, 0.04565, 0.112, 0.2154, 0.3604, 0.5513, 0.7917, 1.085, 1.435");
          values("1.622, 1.688, 1.855, 2.152, 2.614, 3.262, 4.113, 5.186, 6.494, 8.053",\
                 "1.643, 1.709, 1.877, 2.173, 2.636, 3.283, 4.134, 5.207, 6.515, 8.074",\
                 "1.718, 1.784, 1.951, 2.248, 2.711, 3.359, 4.21, 5.281, 6.59, 8.15",\
                 "1.848, 1.915, 2.082, 2.379, 2.841, 3.489, 4.34, 5.412, 6.721, 8.28",\
                 "1.975, 2.041, 2.208, 2.505, 2.967, 3.615, 4.466, 5.538, 6.847, 8.407",\
                 "2.077, 2.143, 2.311, 2.607, 3.07, 3.718, 4.569, 5.641, 6.949, 8.509",\
                 "2.157, 2.223, 2.39, 2.687, 3.149, 3.797, 4.648, 5.72, 7.028, 8.589",\
                 "2.212, 2.279, 2.446, 2.743, 3.205, 3.853, 4.703, 5.775, 7.084, 8.643",\
                 "2.245, 2.311, 2.478, 2.775, 3.237, 3.884, 4.736, 5.808, 7.116, 8.675",\
                 "2.248, 2.314, 2.482, 2.779, 3.241, 3.889, 4.74, 5.812, 7.121, 8.68");
        }

        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.0109, 0.04565, 0.112, 0.2154, 0.3604, 0.5513, 0.7917, 1.085, 1.435");
          values("0.1168, 0.1648, 0.2942, 0.5388, 0.9458, 1.538, 2.325, 3.318, 4.526, 5.979",\
                 "0.1166, 0.1648, 0.2948, 0.5384, 0.9444, 1.538, 2.325, 3.317, 4.532, 5.979",\
                 "0.1166, 0.1648, 0.2942, 0.539, 0.9456, 1.538, 2.324, 3.319, 4.525, 5.979",\
                 "0.1166, 0.1648, 0.2948, 0.5388, 0.945, 1.538, 2.325, 3.317, 4.533, 5.976",\
                 "0.1168, 0.1648, 0.2948, 0.5382, 0.9462, 1.538, 2.325, 3.317, 4.534, 5.978",\
                 "0.1166, 0.1648, 0.2944, 0.5392, 0.9456, 1.538, 2.324, 3.315, 4.533, 5.971",\
                 "0.1168, 0.165, 0.2944, 0.5392, 0.9448, 1.536, 2.321, 3.314, 4.53, 5.975",\
                 "0.1166, 0.1648, 0.2944, 0.5384, 0.9446, 1.537, 2.322, 3.311, 4.52, 5.962",\
                 "0.1168, 0.1648, 0.2944, 0.5394, 0.9448, 1.536, 2.323, 3.314, 4.52, 5.96",\
                 "0.1168, 0.165, 0.2942, 0.5382, 0.9452, 1.536, 2.324, 3.313, 4.52, 5.962");
        }

        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.0109, 0.04565, 0.112, 0.2154, 0.3604, 0.5513, 0.7917, 1.085, 1.435");
          values("0.1424, 0.2054, 0.4294, 0.926, 1.714, 2.819, 4.274, 6.109, 8.35, 11.02",\
                 "0.1414, 0.2058, 0.4292, 0.9256, 1.711, 2.82, 4.274, 6.109, 8.345, 11.02",\
                 "0.1414, 0.2052, 0.4292, 0.9246, 1.712, 2.817, 4.273, 6.108, 8.35, 11.01",\
                 "0.1416, 0.2056, 0.4288, 0.9258, 1.712, 2.816, 4.268, 6.107, 8.35, 11.01",\
                 "0.1412, 0.2054, 0.4286, 0.9258, 1.712, 2.816, 4.269, 6.108, 8.349, 11.01",\
                 "0.1416, 0.2052, 0.4286, 0.9246, 1.713, 2.818, 4.272, 6.108, 8.349, 11.01",\
                 "0.1418, 0.2048, 0.4284, 0.9248, 1.712, 2.819, 4.272, 6.109, 8.348, 11.01",\
                 "0.1416, 0.2056, 0.4294, 0.9246, 1.713, 2.815, 4.269, 6.102, 8.346, 11.02",\
                 "0.142, 0.2058, 0.4286, 0.9264, 1.711, 2.816, 4.27, 6.1, 8.34, 11.02",\
                 "0.1418, 0.2048, 0.429, 0.9262, 1.713, 2.816, 4.27, 6.1, 8.336, 11.02");
        }
      }
    }
  }

