/*
 * 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 : "5.7537e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLK&D" ;
      value : "7.10334e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLK&!D" ;
      value : "8.89416e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLK&D" ;
      value : "8.66322e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "8.89416e-05" ;
    }

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

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

    pin(CLK) {
      capacitance : 0.00308 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 12 ;
      min_period : 5.002 ;
      min_pulse_width_high : 2.485 ;
      min_pulse_width_low : 2.417 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.03479, 0.0347, 0.03448, 0.03427, 0.03417, 0.03426, 0.03447, \
                 0.03487, 0.03542, 0.03612");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.02655, 0.02651, 0.02635, 0.02615, 0.02601, 0.02599, 0.02615, \
                 0.02646, 0.02697, 0.02761");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.03533, 0.03524, 0.03501, 0.0348, 0.03471, 0.03479, 0.03501, \
                 0.03539, 0.03593, 0.03663");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.02659, 0.02655, 0.02639, 0.02617, 0.02604, 0.02602, 0.02619, \
                 0.02651, 0.02701, 0.02766");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002223 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 12 ;
      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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.01832, 0.01826, 0.01801, 0.01783, 0.01779, 0.01788, 0.01811, \
                 0.01843, 0.01887, 0.01941");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.01353, 0.01356, 0.01355, 0.01347, 0.01342, 0.01343, 0.01355, \
                 0.01377, 0.01408, 0.01451");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.001257, 0.001257, 0.001257, 0.001257, 0.001255, 0.001255, 0.001252, \
                 0.001249, 0.001243, 0.001234");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("-0.0006539, -0.0006582, -0.00067, -0.0006813, -0.0006894, -0.0006976, \
                 -0.0007035, -0.0007106, -0.0007182, -0.0007309");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.12, 0.147, 0.238, 0.405, 0.605, 0.773, 0.919, 1.032, 1.105, 1.143",\
                 "0.107, 0.132, 0.221, 0.379, 0.574, 0.749, 0.89, 1.007, 1.077, 1.11",\
                 "0.035, 0.064, 0.157, 0.315, 0.505, 0.679, 0.817, 0.933, 0.999, 1.033",\
                 "-0.139, -0.114, -0.022, 0.137, 0.327, 0.499, 0.645, 0.757, 0.831, 0.866",\
                 "-0.408, -0.385, -0.296, -0.142, 0.046, 0.216, 0.36, 0.467, 0.541, 0.577",\
                 "-0.726, -0.709, -0.618, -0.469, -0.287, -0.125, 0.012, 0.125, 0.195, 0.225",\
                 "-1.109, -1.083, -1.003, -0.857, -0.674, -0.521, -0.384, -0.28, -0.207, -0.181",\
                 "-1.526, -1.508, -1.428, -1.29, -1.115, -0.967, -0.833, -0.737, -0.659, -0.645",\
                 "-2.01, -1.99, -1.912, -1.783, -1.607, -1.47, -1.347, -1.241, -1.182, -1.158",\
                 "-2.546, -2.531, -2.45, -2.328, -2.16, -2.025, -1.907, -1.817, -1.749, -1.727");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.052, 0.074, 0.168, 0.295, 0.409, 0.494, 0.557, 0.586, 0.578, 0.538",\
                 "0.027, 0.053, 0.143, 0.274, 0.39, 0.479, 0.539, 0.573, 0.562, 0.523",\
                 "-0.041, -0.015, 0.079, 0.21, 0.331, 0.428, 0.489, 0.523, 0.52, 0.477",\
                 "-0.11, -0.077, 0.008, 0.147, 0.263, 0.36, 0.42, 0.454, 0.457, 0.417",\
                 "-0.143, -0.12, -0.036, 0.099, 0.219, 0.306, 0.376, 0.406, 0.404, 0.363",\
                 "-0.153, -0.121, -0.04, 0.097, 0.203, 0.289, 0.355, 0.38, 0.376, 0.342",\
                 "-0.11, -0.084, -0.001, 0.127, 0.236, 0.322, 0.373, 0.401, 0.39, 0.353",\
                 "-0.028, -0, 0.082, 0.207, 0.308, 0.386, 0.442, 0.459, 0.454, 0.406",\
                 "0.102, 0.129, 0.204, 0.333, 0.426, 0.5, 0.55, 0.574, 0.556, 0.505",\
                 "0.297, 0.325, 0.391, 0.513, 0.603, 0.671, 0.715, 0.728, 0.708, 0.654");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("1.288, 1.249, 1.142, 0.965, 0.721, 0.483, 0.31, 0.15, 0.053, -0.02",\
                 "1.304, 1.271, 1.162, 0.983, 0.738, 0.506, 0.33, 0.164, 0.068, 0.006",\
                 "1.383, 1.341, 1.232, 1.062, 0.815, 0.581, 0.401, 0.236, 0.147, 0.072",\
                 "1.566, 1.532, 1.452, 1.246, 0.999, 0.772, 0.591, 0.427, 0.333, 0.265",\
                 "1.901, 1.855, 1.749, 1.574, 1.33, 1.093, 0.918, 0.757, 0.661, 0.586",\
                 "2.362, 2.33, 2.223, 2.047, 1.799, 1.568, 1.396, 1.228, 1.131, 1.065",\
                 "2.959, 2.923, 2.813, 2.64, 2.392, 2.152, 1.981, 1.817, 1.728, 1.654",\
                 "3.607, 3.573, 3.502, 3.293, 3.042, 2.803, 2.633, 2.463, 2.371, 2.295",\
                 "4.307, 4.265, 4.194, 3.984, 3.737, 3.499, 3.326, 3.158, 3.065, 2.99",\
                 "5.059, 5.016, 4.956, 4.729, 4.479, 4.247, 4.073, 3.904, 3.813, 3.739");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          values("0.933, 0.893, 0.824, 0.589, 0.387, 0.204, 0.092, -0.012, -0.03, -0.012",\
                 "0.955, 0.917, 0.848, 0.613, 0.411, 0.236, 0.114, 0.008, -0.004, 0.006",\
                 "1.046, 0.999, 0.936, 0.701, 0.497, 0.322, 0.197, 0.091, 0.067, 0.08",\
                 "1.191, 1.15, 1.083, 0.851, 0.645, 0.464, 0.339, 0.225, 0.206, 0.211",\
                 "1.352, 1.31, 1.24, 1.014, 0.811, 0.627, 0.503, 0.384, 0.354, 0.355",\
                 "1.494, 1.448, 1.386, 1.154, 0.951, 0.762, 0.646, 0.514, 0.493, 0.483",\
                 "1.58, 1.538, 1.466, 1.239, 1.043, 0.855, 0.729, 0.603, 0.575, 0.566",\
                 "1.615, 1.573, 1.505, 1.281, 1.079, 0.886, 0.765, 0.641, 0.612, 0.596",\
                 "1.604, 1.564, 1.501, 1.271, 1.071, 0.883, 0.75, 0.623, 0.599, 0.589",\
                 "1.546, 1.509, 1.441, 1.214, 1.014, 0.825, 0.7, 0.567, 0.542, 0.533");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.8303 ;
      max_transition : 12 ;
      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.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006724, 0.02682, 0.06518, 0.125, 0.2088, 0.3192, 0.4582, 0.628, 0.8303");
          values("0.06698, 0.06732, 0.06825, 0.06922, 0.06991, 0.07034, 0.07059, 0.07075, 0.07085, 0.07091",\
                 "0.067, 0.06732, 0.06826, 0.06924, 0.06991, 0.07033, 0.07059, 0.07074, 0.07085, 0.07092",\
                 "0.06696, 0.06732, 0.06825, 0.06923, 0.06992, 0.07033, 0.07058, 0.07074, 0.07084, 0.07091",\
                 "0.06697, 0.06733, 0.06824, 0.06921, 0.0699, 0.07033, 0.07058, 0.07074, 0.07084, 0.07091",\
                 "0.06704, 0.06736, 0.06831, 0.06927, 0.06996, 0.07038, 0.07064, 0.0708, 0.0709, 0.07096",\
                 "0.06712, 0.06743, 0.06836, 0.06935, 0.07003, 0.07045, 0.0707, 0.07086, 0.07096, 0.07103",\
                 "0.06713, 0.06748, 0.0684, 0.0694, 0.07007, 0.07049, 0.07073, 0.07089, 0.071, 0.07106",\
                 "0.06721, 0.06756, 0.0685, 0.06946, 0.07014, 0.07058, 0.07082, 0.07097, 0.07107, 0.07114",\
                 "0.06725, 0.0676, 0.06852, 0.06951, 0.07019, 0.07062, 0.07087, 0.07102, 0.07112, 0.07118",\
                 "0.06733, 0.06766, 0.06858, 0.06958, 0.07026, 0.0707, 0.07096, 0.07111, 0.0712, 0.07128");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006724, 0.02682, 0.06518, 0.125, 0.2088, 0.3192, 0.4582, 0.628, 0.8303");
          values("0.0626, 0.06277, 0.06328, 0.06412, 0.0651, 0.06603, 0.06709, 0.06799, 0.07119, 0.1018",\
                 "0.06261, 0.06279, 0.06326, 0.06406, 0.06512, 0.06605, 0.06712, 0.06787, 0.07146, 0.1038",\
                 "0.06254, 0.06275, 0.06329, 0.06403, 0.06519, 0.06599, 0.06697, 0.0677, 0.07216, 0.1066",\
                 "0.06248, 0.06262, 0.06311, 0.06402, 0.06498, 0.06589, 0.06692, 0.06796, 0.07274, 0.1122",\
                 "0.06239, 0.06261, 0.06308, 0.0639, 0.06491, 0.06583, 0.06673, 0.06772, 0.07405, 0.1213",\
                 "0.06236, 0.06258, 0.06302, 0.06392, 0.0649, 0.06583, 0.06687, 0.068, 0.07687, 0.1381",\
                 "0.06231, 0.06255, 0.06296, 0.06391, 0.06485, 0.0658, 0.06679, 0.06833, 0.081, 0.1645",\
                 "0.06228, 0.06248, 0.06288, 0.0638, 0.06491, 0.06578, 0.06673, 0.06888, 0.09057, 0.2067",\
                 "0.06226, 0.06241, 0.06295, 0.06363, 0.06459, 0.06583, 0.06692, 0.07049, 0.1094, 0.2767",\
                 "0.06218, 0.0624, 0.06287, 0.06371, 0.06472, 0.06526, 0.06691, 0.07742, 0.1509, 0.3872");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006724, 0.02682, 0.06518, 0.125, 0.2088, 0.3192, 0.4582, 0.628, 0.8303");
          values("2.35, 2.403, 2.534, 2.714, 2.948, 3.25, 3.638, 4.124, 4.715, 5.421",\
                 "2.379, 2.432, 2.562, 2.742, 2.976, 3.279, 3.666, 4.152, 4.743, 5.449",\
                 "2.478, 2.531, 2.662, 2.842, 3.076, 3.378, 3.766, 4.252, 4.844, 5.549",\
                 "2.665, 2.718, 2.849, 3.029, 3.263, 3.565, 3.953, 4.439, 5.031, 5.736",\
                 "2.893, 2.946, 3.077, 3.257, 3.491, 3.794, 4.181, 4.667, 5.259, 5.964",\
                 "3.106, 3.159, 3.29, 3.47, 3.704, 4.006, 4.394, 4.879, 5.472, 6.177",\
                 "3.292, 3.345, 3.476, 3.656, 3.89, 4.192, 4.58, 5.066, 5.657, 6.362",\
                 "3.446, 3.499, 3.63, 3.81, 4.044, 4.346, 4.734, 5.219, 5.811, 6.516",\
                 "3.564, 3.616, 3.747, 3.928, 4.162, 4.464, 4.852, 5.338, 5.929, 6.634",\
                 "3.642, 3.695, 3.825, 4.006, 4.24, 4.543, 4.931, 5.417, 6.008, 6.712");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006724, 0.02682, 0.06518, 0.125, 0.2088, 0.3192, 0.4582, 0.628, 0.8303");
          values("3.036, 3.11, 3.304, 3.631, 4.134, 4.837, 5.761, 6.922, 8.338, 10.03",\
                 "3.065, 3.138, 3.332, 3.66, 4.163, 4.866, 5.789, 6.95, 8.367, 10.06",\
                 "3.164, 3.237, 3.431, 3.759, 4.262, 4.965, 5.888, 7.049, 8.466, 10.15",\
                 "3.347, 3.42, 3.614, 3.942, 4.445, 5.148, 6.071, 7.232, 8.649, 10.34",\
                 "3.57, 3.643, 3.838, 4.165, 4.668, 5.371, 6.295, 7.456, 8.872, 10.56",\
                 "3.78, 3.853, 4.047, 4.374, 4.878, 5.58, 6.504, 7.665, 9.082, 10.77",\
                 "3.963, 4.037, 4.231, 4.558, 5.061, 5.764, 6.687, 7.849, 9.265, 10.95",\
                 "4.116, 4.189, 4.383, 4.711, 5.213, 5.917, 6.839, 8.001, 9.418, 11.11",\
                 "4.233, 4.307, 4.501, 4.828, 5.331, 6.034, 6.957, 8.118, 9.535, 11.22",\
                 "4.312, 4.386, 4.58, 4.907, 5.41, 6.114, 7.036, 8.198, 9.614, 11.3");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006724, 0.02682, 0.06518, 0.125, 0.2088, 0.3192, 0.4582, 0.628, 0.8303");
          values("0.1998, 0.2402, 0.3592, 0.5632, 0.8848, 1.356, 1.998, 2.821, 3.832, 5.034",\
                 "0.1994, 0.2404, 0.3588, 0.566, 0.8856, 1.356, 1.998, 2.821, 3.833, 5.036",\
                 "0.1998, 0.2406, 0.3592, 0.566, 0.8852, 1.356, 1.996, 2.817, 3.828, 5.038",\
                 "0.1996, 0.2404, 0.3586, 0.564, 0.8848, 1.356, 1.996, 2.817, 3.827, 5.039",\
                 "0.1998, 0.2406, 0.3586, 0.564, 0.8842, 1.354, 1.998, 2.821, 3.833, 5.032",\
                 "0.1998, 0.2406, 0.3592, 0.566, 0.8846, 1.356, 1.997, 2.819, 3.831, 5.033",\
                 "0.1998, 0.2404, 0.359, 0.5648, 0.8846, 1.355, 1.996, 2.82, 3.83, 5.039",\
                 "0.1996, 0.2406, 0.3598, 0.5642, 0.885, 1.356, 1.995, 2.815, 3.824, 5.035",\
                 "0.1996, 0.2402, 0.3592, 0.5658, 0.8848, 1.356, 1.997, 2.82, 3.824, 5.026",\
                 "0.198, 0.24, 0.36, 0.564, 0.886, 1.354, 1.996, 2.822, 3.826, 5.032");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1027, 0.3929, 0.9472, 1.811, 3.022, 4.617, 6.625, 9.077, 12");
          index_2("0.001, 0.006724, 0.02682, 0.06518, 0.125, 0.2088, 0.3192, 0.4582, 0.628, 0.8303");
          values("0.2606, 0.3218, 0.5544, 1.077, 1.928, 3.124, 4.703, 6.688, 9.103, 12",\
                 "0.261, 0.323, 0.555, 1.077, 1.928, 3.121, 4.703, 6.684, 9.112, 12.01",\
                 "0.261, 0.3222, 0.5556, 1.075, 1.928, 3.125, 4.7, 6.686, 9.114, 12.01",\
                 "0.261, 0.3216, 0.5558, 1.077, 1.928, 3.123, 4.703, 6.688, 9.107, 12",\
                 "0.2606, 0.3222, 0.555, 1.076, 1.928, 3.125, 4.701, 6.687, 9.11, 12.01",\
                 "0.261, 0.3224, 0.5556, 1.077, 1.928, 3.122, 4.703, 6.688, 9.104, 11.99",\
                 "0.2608, 0.3224, 0.5548, 1.077, 1.928, 3.124, 4.704, 6.689, 9.103, 11.99",\
                 "0.261, 0.3226, 0.556, 1.077, 1.925, 3.121, 4.703, 6.686, 9.11, 12.01",\
                 "0.2608, 0.3224, 0.5542, 1.078, 1.928, 3.118, 4.692, 6.682, 9.108, 12",\
                 "0.26, 0.32, 0.556, 1.076, 1.928, 3.122, 4.698, 6.678, 9.104, 12");
        }
      }
    }
  }

