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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003181 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 15.6 ;
      min_period : 3.562 ;
      min_pulse_width_high : 1.474 ;
      min_pulse_width_low : 1.784 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.102, 0.1016, 0.1016, 0.1044, 0.1109, 0.1212, 0.136, 0.1556, \
                  0.1801, 0.2098");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.07953, 0.07926, 0.07918, 0.08122, 0.08637, 0.09523, 0.1081, \
                  0.1253, 0.147, 0.1734");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.1036, 0.1032, 0.1032, 0.106, 0.1124, 0.1228, 0.1375, 0.1571, \
                  0.1816, 0.2113");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.07952, 0.07926, 0.07913, 0.08126, 0.08642, 0.09526, 0.1082, \
                  0.1255, 0.1471, 0.1735");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002342 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 15.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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.05551, 0.0552, 0.05472, 0.05561, 0.05865, 0.06374, 0.07063, \
                  0.07955, 0.09076, 0.1043");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.03948, 0.03959, 0.0398, 0.04077, 0.04293, 0.04663, 0.05199, \
                  0.05918, 0.06823, 0.0793");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.003419, 0.003422, 0.003414, 0.003415, 0.003419, 0.003412, 0.003407, \
                  0.003394, 0.003373, 0.003327");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("-0.001974, -0.001983, -0.001986, -0.001993, -0.002022, -0.002036, \
                  -0.002048, -0.002066, -0.002095, -0.002161");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.097, 0.126, 0.22, 0.363, 0.491, 0.582, 0.636, 0.642, 0.614, 0.53",\
                 "0.082, 0.107, 0.203, 0.346, 0.467, 0.556, 0.612, 0.618, 0.585, 0.51",\
                 "-0.005, 0.024, 0.114, 0.262, 0.383, 0.471, 0.527, 0.538, 0.504, 0.426",\
                 "-0.236, -0.203, -0.112, 0.039, 0.163, 0.259, 0.313, 0.321, 0.288, 0.21",\
                 "-0.571, -0.538, -0.448, -0.298, -0.174, -0.075, -0.019, -0.001, -0.034, -0.111",\
                 "-0.996, -0.971, -0.884, -0.727, -0.606, -0.503, -0.449, -0.43, -0.459, -0.536",\
                 "-1.512, -1.481, -1.399, -1.251, -1.131, -1.031, -0.969, -0.955, -0.982, -1.06",\
                 "-2.128, -2.102, -2.023, -1.878, -1.755, -1.647, -1.59, -1.573, -1.604, -1.682",\
                 "-2.844, -2.822, -2.743, -2.593, -2.475, -2.38, -2.315, -2.291, -2.328, -2.401",\
                 "-3.676, -3.649, -3.573, -3.433, -3.315, -3.214, -3.148, -3.13, -3.159, -3.236");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.052, 0.08, 0.168, 0.271, 0.336, 0.375, 0.379, 0.35, 0.281, 0.176",\
                 "0.036, 0.058, 0.144, 0.248, 0.319, 0.354, 0.365, 0.339, 0.271, 0.172",\
                 "-0.027, -0.002, 0.09, 0.196, 0.273, 0.317, 0.329, 0.307, 0.246, 0.148",\
                 "-0.051, -0.028, 0.066, 0.172, 0.244, 0.29, 0.304, 0.279, 0.218, 0.115",\
                 "-0.034, -0.011, 0.078, 0.188, 0.256, 0.301, 0.309, 0.281, 0.22, 0.119",\
                 "0.04, 0.061, 0.151, 0.25, 0.321, 0.352, 0.363, 0.335, 0.263, 0.159",\
                 "0.204, 0.219, 0.306, 0.407, 0.454, 0.486, 0.482, 0.448, 0.373, 0.26",\
                 "0.452, 0.478, 0.561, 0.644, 0.692, 0.708, 0.702, 0.65, 0.57, 0.448",\
                 "0.816, 0.828, 0.917, 0.989, 1.022, 1.03, 1.014, 0.955, 0.867, 0.735",\
                 "1.275, 1.298, 1.377, 1.438, 1.461, 1.459, 1.431, 1.366, 1.266, 1.125");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.87, 0.841, 0.736, 0.565, 0.417, 0.307, 0.233, 0.207, 0.229, 0.298",\
                 "0.885, 0.858, 0.748, 0.579, 0.432, 0.324, 0.249, 0.225, 0.243, 0.324",\
                 "0.975, 0.944, 0.837, 0.674, 0.524, 0.415, 0.338, 0.313, 0.335, 0.408",\
                 "1.214, 1.189, 1.076, 0.911, 0.764, 0.649, 0.582, 0.555, 0.569, 0.646",\
                 "1.621, 1.592, 1.487, 1.315, 1.169, 1.064, 0.984, 0.955, 0.979, 1.045",\
                 "2.161, 2.129, 2.023, 1.852, 1.71, 1.598, 1.524, 1.496, 1.508, 1.575",\
                 "2.801, 2.776, 2.668, 2.498, 2.348, 2.243, 2.163, 2.14, 2.152, 2.219",\
                 "3.572, 3.536, 3.429, 3.262, 3.116, 3.005, 2.932, 2.899, 2.912, 2.979",\
                 "4.465, 4.436, 4.319, 4.151, 4.012, 3.898, 3.818, 3.793, 3.803, 3.868",\
                 "5.482, 5.456, 5.347, 5.172, 5.023, 4.908, 4.833, 4.807, 4.812, 4.876");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          values("0.801, 0.779, 0.655, 0.48, 0.349, 0.267, 0.218, 0.217, 0.264, 0.373",\
                 "0.823, 0.8, 0.68, 0.503, 0.374, 0.279, 0.242, 0.235, 0.286, 0.38",\
                 "0.909, 0.876, 0.765, 0.59, 0.451, 0.36, 0.314, 0.308, 0.343, 0.446",\
                 "1.015, 0.984, 0.87, 0.695, 0.566, 0.466, 0.416, 0.407, 0.444, 0.525",\
                 "1.083, 1.052, 0.938, 0.766, 0.634, 0.528, 0.474, 0.468, 0.498, 0.586",\
                 "1.075, 1.047, 0.928, 0.754, 0.622, 0.523, 0.468, 0.461, 0.496, 0.583",\
                 "0.997, 0.979, 0.852, 0.682, 0.551, 0.452, 0.396, 0.388, 0.426, 0.509",\
                 "0.84, 0.814, 0.697, 0.528, 0.393, 0.29, 0.239, 0.23, 0.265, 0.362",\
                 "0.585, 0.557, 0.445, 0.28, 0.144, 0.038, -0.014, -0.017, 0.021, 0.123",\
                 "0.232, 0.2, 0.091, -0.085, -0.212, -0.316, -0.374, -0.37, -0.326, -0.221");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.3545 ;
      max_transition : 15.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.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.00344, 0.012, 0.02836, 0.05384, 0.08959, 0.1366, 0.1959, 0.2683, 0.3545");
          values("0.08882, 0.08857, 0.08847, 0.08861, 0.08874, 0.08879, 0.08882, 0.08884, 0.08886, 0.08887",\
                 "0.08882, 0.08858, 0.08849, 0.08864, 0.08874, 0.0888, 0.08883, 0.08885, 0.08887, 0.08888",\
                 "0.08877, 0.08853, 0.08844, 0.08857, 0.08869, 0.08876, 0.08879, 0.08882, 0.08883, 0.08884",\
                 "0.08908, 0.08882, 0.08872, 0.08883, 0.089, 0.08905, 0.08908, 0.0891, 0.08912, 0.08913",\
                 "0.0894, 0.08916, 0.08909, 0.08922, 0.08935, 0.08942, 0.08945, 0.08946, 0.08948, 0.08948",\
                 "0.08967, 0.08948, 0.08943, 0.08952, 0.08961, 0.0897, 0.08973, 0.08975, 0.08976, 0.08976",\
                 "0.09023, 0.09002, 0.08989, 0.09001, 0.09013, 0.09019, 0.09023, 0.09024, 0.09026, 0.09026",\
                 "0.09069, 0.09044, 0.09034, 0.09046, 0.0906, 0.09065, 0.09068, 0.09071, 0.09073, 0.09068",\
                 "0.09123, 0.09101, 0.09088, 0.091, 0.09115, 0.09122, 0.09125, 0.09127, 0.09127, 0.09117",\
                 "0.09168, 0.09143, 0.09131, 0.09146, 0.09161, 0.09165, 0.09167, 0.09171, 0.09166, 0.09139");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.00344, 0.012, 0.02836, 0.05384, 0.08959, 0.1366, 0.1959, 0.2683, 0.3545");
          values("0.08854, 0.08807, 0.08742, 0.08739, 0.08778, 0.08837, 0.08903, 0.09288, 0.1242, 0.2593",\
                 "0.08856, 0.08808, 0.08744, 0.08744, 0.08789, 0.08851, 0.08932, 0.09257, 0.1248, 0.261",\
                 "0.08854, 0.08806, 0.08738, 0.08739, 0.08784, 0.08843, 0.08915, 0.09302, 0.1282, 0.2716",\
                 "0.0886, 0.08812, 0.08749, 0.08748, 0.08787, 0.08855, 0.08919, 0.09384, 0.1335, 0.2904",\
                 "0.08878, 0.08834, 0.08765, 0.08766, 0.08811, 0.08867, 0.08948, 0.0955, 0.1433, 0.3205",\
                 "0.08914, 0.0886, 0.08797, 0.08806, 0.08836, 0.08901, 0.08986, 0.0985, 0.1593, 0.3632",\
                 "0.08962, 0.08912, 0.08844, 0.0884, 0.08909, 0.08967, 0.09063, 0.1039, 0.185, 0.4247",\
                 "0.09025, 0.08974, 0.08904, 0.08909, 0.08954, 0.09018, 0.09251, 0.1141, 0.2278, 0.5107",\
                 "0.0911, 0.0906, 0.08997, 0.08978, 0.09002, 0.09059, 0.09512, 0.1357, 0.3001, 0.6236",\
                 "0.092, 0.09147, 0.09085, 0.09066, 0.09096, 0.09151, 0.1019, 0.1815, 0.4125, 0.7538");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.00344, 0.012, 0.02836, 0.05384, 0.08959, 0.1366, 0.1959, 0.2683, 0.3545");
          values("1.722, 1.781, 1.94, 2.182, 2.523, 2.987, 3.596, 4.361, 5.297, 6.412",\
                 "1.749, 1.808, 1.968, 2.21, 2.55, 3.015, 3.623, 4.389, 5.323, 6.44",\
                 "1.85, 1.909, 2.069, 2.311, 2.651, 3.115, 3.724, 4.49, 5.424, 6.541",\
                 "2.016, 2.075, 2.235, 2.477, 2.817, 3.282, 3.89, 4.656, 5.592, 6.707",\
                 "2.164, 2.223, 2.383, 2.625, 2.965, 3.43, 4.038, 4.804, 5.74, 6.855",\
                 "2.279, 2.338, 2.498, 2.74, 3.081, 3.545, 4.154, 4.92, 5.856, 6.969",\
                 "2.362, 2.421, 2.581, 2.822, 3.163, 3.627, 4.236, 5.001, 5.936, 7.052",\
                 "2.406, 2.464, 2.624, 2.866, 3.207, 3.671, 4.28, 5.045, 5.979, 7.094",\
                 "2.405, 2.464, 2.624, 2.866, 3.206, 3.67, 4.279, 5.045, 5.98, 7.093",\
                 "2.355, 2.414, 2.574, 2.816, 3.156, 3.62, 4.229, 4.995, 5.93, 7.043");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.00344, 0.012, 0.02836, 0.05384, 0.08959, 0.1366, 0.1959, 0.2683, 0.3545");
          values("2, 2.077, 2.305, 2.713, 3.344, 4.229, 5.392, 6.858, 8.647, 10.78",\
                 "2.028, 2.105, 2.333, 2.74, 3.372, 4.257, 5.419, 6.885, 8.674, 10.8",\
                 "2.128, 2.205, 2.433, 2.84, 3.472, 4.356, 5.52, 6.985, 8.773, 10.91",\
                 "2.292, 2.369, 2.597, 3.005, 3.636, 4.521, 5.684, 7.149, 8.937, 11.07",\
                 "2.442, 2.519, 2.748, 3.155, 3.787, 4.671, 5.834, 7.3, 9.088, 11.22",\
                 "2.562, 2.639, 2.867, 3.275, 3.906, 4.79, 5.954, 7.42, 9.209, 11.34",\
                 "2.652, 2.729, 2.957, 3.364, 3.995, 4.88, 6.043, 7.509, 9.299, 11.43",\
                 "2.707, 2.784, 3.013, 3.42, 4.051, 4.936, 6.099, 7.564, 9.351, 11.49",\
                 "2.723, 2.8, 3.027, 3.434, 4.066, 4.951, 6.113, 7.578, 9.366, 11.5",\
                 "2.691, 2.768, 2.996, 3.403, 4.035, 4.919, 6.083, 7.547, 9.337, 11.47");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.00344, 0.012, 0.02836, 0.05384, 0.08959, 0.1366, 0.1959, 0.2683, 0.3545");
          values("0.2006, 0.2606, 0.4376, 0.7598, 1.289, 2.06, 3.095, 4.4, 5.997, 7.888",\
                 "0.2014, 0.2612, 0.4384, 0.7604, 1.288, 2.061, 3.091, 4.395, 5.998, 7.894",\
                 "0.2014, 0.2612, 0.4384, 0.76, 1.288, 2.061, 3.091, 4.401, 5.998, 7.892",\
                 "0.2006, 0.2612, 0.437, 0.76, 1.289, 2.06, 3.095, 4.4, 5.997, 7.889",\
                 "0.2012, 0.2616, 0.4382, 0.762, 1.288, 2.06, 3.093, 4.401, 5.998, 7.892",\
                 "0.2012, 0.2604, 0.4374, 0.7612, 1.29, 2.062, 3.092, 4.401, 5.99, 7.9",\
                 "0.2014, 0.2608, 0.4374, 0.7598, 1.288, 2.062, 3.09, 4.391, 5.984, 7.887",\
                 "0.2008, 0.2604, 0.4372, 0.761, 1.29, 2.062, 3.093, 4.395, 5.984, 7.882",\
                 "0.2014, 0.2606, 0.4374, 0.761, 1.288, 2.062, 3.09, 4.396, 5.982, 7.878",\
                 "0.202, 0.262, 0.438, 0.76, 1.288, 2.062, 3.092, 4.402, 5.986, 7.878");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1275, 0.505, 1.226, 2.349, 3.925, 5.998, 8.61, 11.8, 15.6");
          index_2("0.001, 0.00344, 0.012, 0.02836, 0.05384, 0.08959, 0.1366, 0.1959, 0.2683, 0.3545");
          values("0.2666, 0.3616, 0.6948, 1.387, 2.496, 4.059, 6.106, 8.69, 11.85, 15.6",\
                 "0.2668, 0.361, 0.6938, 1.39, 2.496, 4.059, 6.103, 8.69, 11.84, 15.62",\
                 "0.2668, 0.3604, 0.6936, 1.387, 2.494, 4.054, 6.114, 8.69, 11.86, 15.65",\
                 "0.2666, 0.3612, 0.6934, 1.388, 2.494, 4.057, 6.109, 8.686, 11.85, 15.61",\
                 "0.2658, 0.3608, 0.6942, 1.387, 2.496, 4.059, 6.102, 8.691, 11.85, 15.61",\
                 "0.2654, 0.3602, 0.693, 1.387, 2.495, 4.054, 6.114, 8.69, 11.85, 15.61",\
                 "0.2664, 0.3608, 0.6946, 1.39, 2.494, 4.052, 6.111, 8.689, 11.85, 15.61",\
                 "0.266, 0.3608, 0.6932, 1.388, 2.495, 4.051, 6.102, 8.7, 11.84, 15.61",\
                 "0.266, 0.3606, 0.6944, 1.39, 2.494, 4.058, 6.1, 8.686, 11.85, 15.6",\
                 "0.268, 0.36, 0.696, 1.388, 2.496, 4.052, 6.11, 8.688, 11.84, 15.6");
        }
      }
    }
  }

