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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.00324 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5 ;
      min_period : 1.444 ;
      min_pulse_width_high : 0.662 ;
      min_pulse_width_low : 0.725 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.2281, 0.2277, 0.2284, 0.235, 0.2504, 0.2747, 0.3091, 0.354, \
                  0.4098, 0.4767");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.1778, 0.1773, 0.1773, 0.182, 0.1946, 0.215, 0.245, 0.2845, 0.3344, \
                  0.3945");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.2312, 0.2307, 0.2315, 0.2381, 0.2535, 0.2777, 0.312, 0.3569, \
                  0.4124, 0.4796");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.1775, 0.177, 0.1769, 0.1818, 0.1944, 0.215, 0.245, 0.2846, 0.3344, \
                  0.3946");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002371 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.122, 0.1213, 0.1205, 0.1227, 0.1295, 0.1411, 0.1568, 0.1776, \
                  0.2037, 0.2351");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.08608, 0.08631, 0.08673, 0.08916, 0.09435, 0.1032, 0.1158, 0.1326, \
                  0.1538, 0.1796");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.007524, 0.007518, 0.007518, 0.007519, 0.007536, 0.007526, 0.007525, \
                  0.007534, 0.007528, 0.007532");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.00502, -0.005019, -0.005005, -0.005037, -0.005075, -0.005104, \
                  -0.005118, -0.005133, -0.005139, -0.00515");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.103, 0.109, 0.142, 0.191, 0.245, 0.293, 0.344, 0.377, 0.409, 0.422",\
                 "0.101, 0.105, 0.133, 0.186, 0.241, 0.291, 0.338, 0.372, 0.401, 0.417",\
                 "0.082, 0.08, 0.11, 0.165, 0.218, 0.267, 0.317, 0.351, 0.378, 0.395",\
                 "0.016, 0.018, 0.042, 0.096, 0.157, 0.203, 0.252, 0.293, 0.314, 0.334",\
                 "-0.097, -0.094, -0.066, -0.015, 0.05, 0.099, 0.148, 0.184, 0.211, 0.226",\
                 "-0.235, -0.232, -0.204, -0.158, -0.094, -0.046, 0.009, 0.043, 0.069, 0.086",\
                 "-0.406, -0.406, -0.377, -0.325, -0.266, -0.22, -0.164, -0.13, -0.108, -0.084",\
                 "-0.605, -0.604, -0.576, -0.526, -0.46, -0.416, -0.369, -0.333, -0.31, -0.293",\
                 "-0.829, -0.835, -0.804, -0.758, -0.697, -0.649, -0.6, -0.568, -0.542, -0.532",\
                 "-1.097, -1.097, -1.071, -1.025, -0.962, -0.921, -0.869, -0.837, -0.816, -0.806");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.04, 0.045, 0.073, 0.114, 0.146, 0.184, 0.214, 0.234, 0.247, 0.255",\
                 "0.031, 0.042, 0.068, 0.104, 0.144, 0.179, 0.211, 0.227, 0.247, 0.248",\
                 "0.013, 0.024, 0.046, 0.093, 0.127, 0.171, 0.2, 0.223, 0.239, 0.242",\
                 "-0.003, 0.004, 0.034, 0.076, 0.116, 0.158, 0.185, 0.212, 0.226, 0.235",\
                 "-0.009, 0.002, 0.025, 0.072, 0.109, 0.147, 0.182, 0.211, 0.222, 0.233",\
                 "-0.002, 0.006, 0.037, 0.079, 0.116, 0.157, 0.187, 0.209, 0.225, 0.231",\
                 "0.03, 0.037, 0.062, 0.108, 0.144, 0.178, 0.213, 0.225, 0.243, 0.245",\
                 "0.088, 0.098, 0.123, 0.167, 0.198, 0.229, 0.253, 0.272, 0.281, 0.282",\
                 "0.182, 0.185, 0.216, 0.25, 0.279, 0.311, 0.332, 0.342, 0.349, 0.348",\
                 "0.296, 0.306, 0.332, 0.37, 0.395, 0.427, 0.446, 0.452, 0.452, 0.451");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.292, 0.286, 0.255, 0.204, 0.139, 0.078, 0.025, -0.019, -0.056, -0.082",\
                 "0.293, 0.287, 0.266, 0.202, 0.139, 0.081, 0.026, -0.018, -0.055, -0.075",\
                 "0.323, 0.318, 0.283, 0.232, 0.166, 0.109, 0.05, 0.003, -0.031, -0.057",\
                 "0.392, 0.383, 0.355, 0.298, 0.24, 0.179, 0.121, 0.078, 0.036, 0.018",\
                 "0.52, 0.505, 0.483, 0.426, 0.361, 0.299, 0.248, 0.198, 0.161, 0.141",\
                 "0.686, 0.678, 0.652, 0.603, 0.535, 0.473, 0.422, 0.375, 0.336, 0.312",\
                 "0.9, 0.897, 0.867, 0.812, 0.751, 0.691, 0.639, 0.584, 0.55, 0.522",\
                 "1.156, 1.153, 1.125, 1.066, 1.002, 0.945, 0.888, 0.843, 0.805, 0.782",\
                 "1.458, 1.45, 1.417, 1.364, 1.3, 1.241, 1.189, 1.136, 1.102, 1.072",\
                 "1.791, 1.782, 1.753, 1.703, 1.632, 1.579, 1.519, 1.477, 1.435, 1.407");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.281, 0.267, 0.246, 0.185, 0.129, 0.063, 0.02, -0.019, -0.037, -0.057",\
                 "0.287, 0.28, 0.247, 0.188, 0.129, 0.073, 0.021, -0.011, -0.036, -0.05",\
                 "0.315, 0.3, 0.271, 0.216, 0.155, 0.093, 0.045, 0.003, -0.021, -0.038",\
                 "0.353, 0.342, 0.315, 0.252, 0.193, 0.133, 0.078, 0.038, 0.009, -0.009",\
                 "0.382, 0.368, 0.342, 0.284, 0.227, 0.159, 0.109, 0.065, 0.037, 0.014",\
                 "0.395, 0.38, 0.356, 0.294, 0.233, 0.17, 0.121, 0.073, 0.043, 0.029",\
                 "0.376, 0.369, 0.339, 0.283, 0.224, 0.163, 0.107, 0.061, 0.038, 0.016",\
                 "0.348, 0.336, 0.306, 0.253, 0.193, 0.129, 0.074, 0.034, 0.007, -0.009",\
                 "0.285, 0.276, 0.249, 0.184, 0.121, 0.063, 0.011, -0.031, -0.055, -0.073",\
                 "0.186, 0.174, 0.146, 0.088, 0.028, -0.037, -0.084, -0.123, -0.15, -0.163");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.2531 ;
      max_transition : 5 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.00274, 0.008846, 0.02051, 0.03868, 0.06417, 0.09771, 0.14, 0.1916, 0.2531");
          values("0.2037, 0.2027, 0.201, 0.2002, 0.2, 0.1999, 0.1998, 0.1998, 0.1998, 0.1997",\
                 "0.2038, 0.2026, 0.201, 0.2003, 0.2, 0.1998, 0.1998, 0.1997, 0.1997, 0.1997",\
                 "0.2039, 0.2028, 0.2011, 0.2003, 0.2, 0.1998, 0.1998, 0.1998, 0.1998, 0.1997",\
                 "0.2042, 0.203, 0.2014, 0.2006, 0.2003, 0.2003, 0.2002, 0.2001, 0.2001, 0.2001",\
                 "0.2051, 0.2039, 0.2023, 0.2015, 0.2012, 0.2012, 0.2011, 0.201, 0.201, 0.201",\
                 "0.2061, 0.205, 0.2034, 0.2028, 0.2024, 0.2023, 0.2021, 0.2021, 0.2021, 0.2021",\
                 "0.207, 0.2059, 0.2044, 0.2037, 0.2033, 0.2032, 0.203, 0.203, 0.203, 0.203",\
                 "0.2084, 0.2073, 0.2057, 0.2048, 0.2045, 0.2045, 0.2043, 0.2043, 0.2043, 0.2043",\
                 "0.2097, 0.2087, 0.207, 0.2064, 0.206, 0.2059, 0.2057, 0.2057, 0.2057, 0.2057",\
                 "0.2114, 0.2104, 0.2087, 0.2077, 0.2077, 0.2076, 0.2074, 0.2073, 0.2073, 0.2073");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.00274, 0.008846, 0.02051, 0.03868, 0.06417, 0.09771, 0.14, 0.1916, 0.2531");
          values("0.2061, 0.2047, 0.2016, 0.199, 0.1981, 0.198, 0.1984, 0.1997, 0.2001, 0.2007",\
                 "0.2061, 0.2046, 0.2014, 0.1995, 0.1986, 0.1981, 0.1991, 0.1999, 0.2004, 0.2012",\
                 "0.2061, 0.2045, 0.2013, 0.1992, 0.1982, 0.1981, 0.199, 0.1999, 0.2005, 0.2018",\
                 "0.2064, 0.2047, 0.2016, 0.1994, 0.1984, 0.1982, 0.1992, 0.1998, 0.2006, 0.2023",\
                 "0.2071, 0.2055, 0.2024, 0.2003, 0.1993, 0.1992, 0.2001, 0.2006, 0.2013, 0.2023",\
                 "0.2084, 0.2067, 0.2037, 0.2012, 0.2004, 0.2002, 0.2015, 0.2017, 0.203, 0.2033",\
                 "0.2096, 0.2081, 0.2049, 0.2028, 0.2018, 0.2015, 0.2023, 0.2029, 0.2038, 0.2055",\
                 "0.2113, 0.2099, 0.2066, 0.2041, 0.2037, 0.2045, 0.2045, 0.2048, 0.2056, 0.2073",\
                 "0.2137, 0.2122, 0.2094, 0.2063, 0.2055, 0.2057, 0.2079, 0.2084, 0.208, 0.2088",\
                 "0.2166, 0.2148, 0.2117, 0.2094, 0.2083, 0.208, 0.2087, 0.2114, 0.2129, 0.2125");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.00274, 0.008846, 0.02051, 0.03868, 0.06417, 0.09771, 0.14, 0.1916, 0.2531");
          values("0.7941, 0.8151, 0.8763, 0.9732, 1.111, 1.3, 1.549, 1.862, 2.244, 2.699",\
                 "0.8009, 0.822, 0.8832, 0.9801, 1.118, 1.307, 1.555, 1.868, 2.25, 2.706",\
                 "0.828, 0.849, 0.9102, 1.007, 1.145, 1.334, 1.583, 1.895, 2.278, 2.733",\
                 "0.8823, 0.9034, 0.9646, 1.061, 1.199, 1.389, 1.637, 1.95, 2.332, 2.787",\
                 "0.948, 0.9691, 1.03, 1.127, 1.265, 1.454, 1.703, 2.016, 2.398, 2.853",\
                 "1.009, 1.03, 1.091, 1.188, 1.326, 1.515, 1.763, 2.076, 2.458, 2.913",\
                 "1.065, 1.086, 1.147, 1.244, 1.382, 1.571, 1.82, 2.133, 2.514, 2.97",\
                 "1.115, 1.136, 1.197, 1.294, 1.432, 1.621, 1.869, 2.182, 2.564, 3.019",\
                 "1.156, 1.177, 1.238, 1.335, 1.473, 1.662, 1.91, 2.223, 2.605, 3.06",\
                 "1.187, 1.208, 1.269, 1.366, 1.504, 1.693, 1.942, 2.255, 2.636, 3.092");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.00274, 0.008846, 0.02051, 0.03868, 0.06417, 0.09771, 0.14, 0.1916, 0.2531");
          values("0.9089, 0.9329, 1.007, 1.138, 1.342, 1.63, 2.01, 2.488, 3.072, 3.768",\
                 "0.9158, 0.9399, 1.014, 1.145, 1.349, 1.637, 2.017, 2.495, 3.079, 3.775",\
                 "0.9426, 0.9667, 1.04, 1.172, 1.376, 1.664, 2.044, 2.522, 3.106, 3.803",\
                 "0.9968, 1.021, 1.095, 1.226, 1.43, 1.718, 2.098, 2.576, 3.16, 3.856",\
                 "1.064, 1.087, 1.161, 1.292, 1.497, 1.785, 2.165, 2.643, 3.227, 3.923",\
                 "1.126, 1.15, 1.223, 1.354, 1.559, 1.847, 2.227, 2.705, 3.289, 3.985",\
                 "1.185, 1.209, 1.282, 1.413, 1.618, 1.906, 2.285, 2.764, 3.348, 4.044",\
                 "1.237, 1.262, 1.335, 1.466, 1.671, 1.959, 2.339, 2.817, 3.401, 4.097",\
                 "1.284, 1.308, 1.382, 1.513, 1.717, 2.005, 2.385, 2.863, 3.447, 4.143",\
                 "1.321, 1.345, 1.418, 1.55, 1.754, 2.042, 2.422, 2.9, 3.484, 4.18");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.00274, 0.008846, 0.02051, 0.03868, 0.06417, 0.09771, 0.14, 0.1916, 0.2531");
          values("0.09148, 0.1138, 0.1825, 0.3084, 0.5156, 0.8172, 1.222, 1.733, 2.36, 3.101",\
                 "0.0916, 0.1136, 0.1824, 0.308, 0.5154, 0.818, 1.223, 1.735, 2.36, 3.1",\
                 "0.0915, 0.1138, 0.1827, 0.309, 0.5154, 0.8182, 1.223, 1.735, 2.36, 3.101",\
                 "0.0916, 0.1134, 0.1824, 0.309, 0.5144, 0.8184, 1.223, 1.735, 2.36, 3.101",\
                 "0.0914, 0.1136, 0.1826, 0.309, 0.5146, 0.8184, 1.222, 1.733, 2.361, 3.102",\
                 "0.0914, 0.114, 0.1826, 0.3088, 0.5144, 0.8174, 1.222, 1.734, 2.358, 3.107",\
                 "0.0914, 0.1134, 0.1826, 0.308, 0.5144, 0.817, 1.221, 1.732, 2.359, 3.107",\
                 "0.0916, 0.1138, 0.1826, 0.3082, 0.5148, 0.8172, 1.221, 1.733, 2.358, 3.101",\
                 "0.0914, 0.1136, 0.1828, 0.309, 0.5146, 0.8182, 1.222, 1.733, 2.356, 3.099",\
                 "0.0914, 0.1138, 0.1824, 0.308, 0.5146, 0.818, 1.222, 1.733, 2.358, 3.099");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.00274, 0.008846, 0.02051, 0.03868, 0.06417, 0.09771, 0.14, 0.1916, 0.2531");
          values("0.1097, 0.1401, 0.2456, 0.4622, 0.8148, 1.312, 1.965, 2.792, 3.802, 5.006",\
                 "0.1097, 0.1407, 0.2455, 0.462, 0.8144, 1.312, 1.968, 2.794, 3.802, 4.994",\
                 "0.11, 0.1408, 0.2454, 0.4618, 0.8146, 1.313, 1.967, 2.793, 3.795, 5",\
                 "0.1098, 0.1408, 0.2454, 0.4618, 0.8146, 1.314, 1.968, 2.788, 3.794, 4.997",\
                 "0.1098, 0.1404, 0.2454, 0.462, 0.8146, 1.313, 1.966, 2.789, 3.796, 4.996",\
                 "0.1098, 0.1402, 0.2454, 0.4622, 0.8148, 1.313, 1.968, 2.788, 3.798, 4.994",\
                 "0.1098, 0.1404, 0.2458, 0.4624, 0.815, 1.313, 1.966, 2.79, 3.803, 5",\
                 "0.1102, 0.1402, 0.2456, 0.4618, 0.8154, 1.312, 1.966, 2.791, 3.795, 4.998",\
                 "0.1096, 0.1404, 0.2456, 0.4622, 0.8146, 1.312, 1.965, 2.789, 3.798, 4.996",\
                 "0.11, 0.1408, 0.2458, 0.4622, 0.8142, 1.312, 1.965, 2.79, 3.794, 4.997");
        }
      }
    }
  }

