/*
 * 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_mcu9t5v0__dffq_2) {
    area : 84.672000 ;

    ff(IQ1,IQN1) {
      clocked_on : "CLK" ;
      next_state : "D" ;
    }

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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.004521 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 6 ;
      min_period : 1.442 ;
      min_pulse_width_high : 0.581 ;
      min_pulse_width_low : 0.714 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.06, 0.05975, 0.05921, 0.05895, 0.05935, 0.06036, 0.06201, 0.06429, \
                  0.06739, 0.07122");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.03748, 0.03735, 0.03697, 0.0367, 0.0368, 0.03755, 0.03896, 0.04104, \
                  0.04383, 0.04738");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.05973, 0.05943, 0.05889, 0.05863, 0.05903, 0.06002, 0.06168, \
                  0.06399, 0.06703, 0.07088");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.0376, 0.03747, 0.03706, 0.03677, 0.03688, 0.03762, 0.03905, \
                  0.04114, 0.04396, 0.04753");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.003569 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 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.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.03322, 0.03298, 0.03246, 0.03222, 0.0325, 0.03321, 0.03435, \
                  0.03593, 0.03796, 0.0405");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.02163, 0.02162, 0.0214, 0.02118, 0.02123, 0.02172, 0.02265, \
                  0.02402, 0.02584, 0.0282");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.003773, 0.003765, 0.003778, 0.003767, 0.00378, 0.003778, 0.003779, \
                  0.003778, 0.003775, 0.00377");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("-0.003186, -0.003193, -0.003209, -0.003244, -0.003266, -0.00328, \
                  -0.003299, -0.003305, -0.003314, -0.003322");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.172, 0.183, 0.226, 0.299, 0.371, 0.427, 0.459, 0.48, 0.481, 0.466",\
                 "0.161, 0.174, 0.213, 0.291, 0.359, 0.409, 0.446, 0.475, 0.472, 0.452",\
                 "0.134, 0.136, 0.184, 0.257, 0.323, 0.378, 0.412, 0.433, 0.432, 0.418",\
                 "0.082, 0.088, 0.136, 0.202, 0.268, 0.324, 0.354, 0.376, 0.381, 0.359",\
                 "0.023, 0.031, 0.073, 0.145, 0.206, 0.262, 0.289, 0.313, 0.312, 0.295",\
                 "-0.046, -0.037, 0.004, 0.069, 0.137, 0.186, 0.221, 0.242, 0.239, 0.221",\
                 "-0.125, -0.119, -0.073, -0.01, 0.055, 0.105, 0.131, 0.156, 0.156, 0.132",\
                 "-0.209, -0.21, -0.167, -0.11, -0.044, 0.009, 0.037, 0.065, 0.06, 0.039",\
                 "-0.317, -0.318, -0.273, -0.22, -0.158, -0.105, -0.081, -0.04, -0.049, -0.071",\
                 "-0.437, -0.438, -0.396, -0.352, -0.279, -0.231, -0.208, -0.168, -0.176, -0.194");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("-0.017, -0.006, 0.032, 0.076, 0.101, 0.114, 0.112, 0.1, 0.057, 0.01",\
                 "-0.027, -0.015, 0.023, 0.063, 0.091, 0.106, 0.106, 0.09, 0.056, -0",\
                 "-0.06, -0.054, -0.013, 0.033, 0.063, 0.08, 0.079, 0.06, 0.033, -0.022",\
                 "-0.105, -0.094, -0.052, -0.006, 0.027, 0.042, 0.045, 0.033, -0.003, -0.052",\
                 "-0.135, -0.126, -0.083, -0.035, -0.01, 0.009, 0.01, -0.003, -0.029, -0.083",\
                 "-0.148, -0.132, -0.099, -0.053, -0.021, -0.008, -0.009, -0.021, -0.05, -0.098",\
                 "-0.149, -0.137, -0.099, -0.053, -0.027, -0.01, -0.012, -0.023, -0.052, -0.109",\
                 "-0.133, -0.125, -0.087, -0.043, -0.018, -0.003, -0.005, -0.016, -0.045, -0.102",\
                 "-0.108, -0.095, -0.062, -0.015, 0.01, 0.028, 0.027, 0.007, -0.027, -0.084",\
                 "-0.054, -0.045, -0.009, 0.035, 0.058, 0.07, 0.063, 0.045, 0.008, -0.044");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.263, 0.252, 0.207, 0.125, 0.039, -0.021, -0.076, -0.108, -0.119, -0.113",\
                 "0.274, 0.262, 0.216, 0.133, 0.048, -0.019, -0.069, -0.099, -0.113, -0.105",\
                 "0.318, 0.303, 0.254, 0.172, 0.086, 0.023, -0.027, -0.061, -0.074, -0.062",\
                 "0.4, 0.39, 0.347, 0.265, 0.184, 0.112, 0.069, 0.033, 0.016, 0.027",\
                 "0.545, 0.533, 0.486, 0.409, 0.324, 0.257, 0.211, 0.177, 0.164, 0.176",\
                 "0.723, 0.711, 0.658, 0.579, 0.496, 0.434, 0.384, 0.35, 0.332, 0.344",\
                 "0.904, 0.892, 0.843, 0.763, 0.682, 0.615, 0.567, 0.534, 0.52, 0.526",\
                 "1.113, 1.098, 1.055, 0.967, 0.888, 0.822, 0.772, 0.744, 0.721, 0.73",\
                 "1.335, 1.322, 1.277, 1.199, 1.117, 1.047, 0.999, 0.973, 0.948, 0.957",\
                 "1.586, 1.572, 1.525, 1.451, 1.364, 1.307, 1.253, 1.218, 1.201, 1.207");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          values("0.378, 0.363, 0.318, 0.24, 0.18, 0.148, 0.131, 0.137, 0.158, 0.211",\
                 "0.391, 0.378, 0.336, 0.255, 0.194, 0.154, 0.141, 0.149, 0.167, 0.222",\
                 "0.428, 0.413, 0.368, 0.297, 0.229, 0.191, 0.182, 0.179, 0.202, 0.249",\
                 "0.494, 0.481, 0.436, 0.357, 0.293, 0.255, 0.234, 0.243, 0.264, 0.304",\
                 "0.557, 0.545, 0.499, 0.424, 0.363, 0.327, 0.301, 0.304, 0.325, 0.369",\
                 "0.613, 0.599, 0.546, 0.478, 0.414, 0.372, 0.355, 0.356, 0.376, 0.417",\
                 "0.636, 0.619, 0.575, 0.505, 0.444, 0.404, 0.384, 0.382, 0.403, 0.44",\
                 "0.648, 0.637, 0.593, 0.519, 0.456, 0.416, 0.391, 0.396, 0.417, 0.455",\
                 "0.651, 0.637, 0.591, 0.517, 0.453, 0.41, 0.398, 0.393, 0.406, 0.458",\
                 "0.628, 0.616, 0.57, 0.494, 0.438, 0.395, 0.373, 0.376, 0.391, 0.431");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.63 ;
      max_transition : 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.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.005341, 0.02058, 0.04968, 0.09501, 0.1586, 0.2423, 0.3478, 0.4765, 0.63");
          values("0.07393, 0.07404, 0.07459, 0.07533, 0.0759, 0.07627, 0.07648, 0.07661, 0.0767, 0.07675",\
                 "0.07392, 0.07402, 0.07458, 0.07535, 0.07587, 0.07623, 0.07645, 0.07657, 0.07666, 0.07672",\
                 "0.07387, 0.07398, 0.07454, 0.0753, 0.07585, 0.07622, 0.07642, 0.07656, 0.07665, 0.07671",\
                 "0.07399, 0.07403, 0.07459, 0.07535, 0.07593, 0.07629, 0.07651, 0.07664, 0.07672, 0.07679",\
                 "0.0742, 0.07425, 0.07481, 0.07556, 0.07613, 0.0765, 0.07671, 0.07685, 0.07693, 0.07699",\
                 "0.07438, 0.07449, 0.07507, 0.07579, 0.07635, 0.07666, 0.07687, 0.07699, 0.07708, 0.07713",\
                 "0.07453, 0.07466, 0.07522, 0.07595, 0.07653, 0.07688, 0.07708, 0.07721, 0.0773, 0.07735",\
                 "0.07481, 0.07489, 0.07546, 0.0762, 0.07676, 0.07712, 0.07733, 0.07746, 0.07754, 0.07759",\
                 "0.07497, 0.07503, 0.07563, 0.07639, 0.07694, 0.0773, 0.0775, 0.07761, 0.07771, 0.07777",\
                 "0.0752, 0.07532, 0.07587, 0.07661, 0.07717, 0.07752, 0.07772, 0.07784, 0.07794, 0.07799");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.005341, 0.02058, 0.04968, 0.09501, 0.1586, 0.2423, 0.3478, 0.4765, 0.63");
          values("0.06741, 0.06751, 0.06797, 0.06891, 0.06987, 0.07085, 0.07156, 0.07222, 0.07274, 0.07322",\
                 "0.06739, 0.06741, 0.06801, 0.06899, 0.06987, 0.07086, 0.07168, 0.07213, 0.07269, 0.07354",\
                 "0.0673, 0.06738, 0.06798, 0.06899, 0.06999, 0.07078, 0.07146, 0.07208, 0.07267, 0.07316",\
                 "0.06718, 0.06725, 0.06773, 0.0688, 0.06958, 0.07063, 0.07137, 0.07208, 0.07295, 0.07365",\
                 "0.0671, 0.06714, 0.06772, 0.06875, 0.06977, 0.07054, 0.0712, 0.07179, 0.07243, 0.07294",\
                 "0.06702, 0.06709, 0.0677, 0.06856, 0.0695, 0.07051, 0.07131, 0.072, 0.07285, 0.07383",\
                 "0.06695, 0.06712, 0.06753, 0.06846, 0.06962, 0.07037, 0.0711, 0.0717, 0.07228, 0.074",\
                 "0.06694, 0.06703, 0.06753, 0.06847, 0.06931, 0.07066, 0.0716, 0.07161, 0.07227, 0.07389",\
                 "0.067, 0.06714, 0.06757, 0.06869, 0.06963, 0.07001, 0.07155, 0.07264, 0.07241, 0.07343",\
                 "0.06697, 0.06705, 0.06749, 0.06865, 0.06907, 0.07018, 0.07065, 0.07254, 0.0734, 0.07368");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.005341, 0.02058, 0.04968, 0.09501, 0.1586, 0.2423, 0.3478, 0.4765, 0.63");
          values("0.8992, 0.9269, 0.994, 1.087, 1.208, 1.368, 1.575, 1.835, 2.152, 2.53",\
                 "0.9117, 0.9394, 1.006, 1.099, 1.221, 1.38, 1.588, 1.847, 2.165, 2.542",\
                 "0.9562, 0.9838, 1.051, 1.144, 1.265, 1.425, 1.632, 1.892, 2.209, 2.587",\
                 "1.035, 1.063, 1.13, 1.223, 1.344, 1.504, 1.711, 1.971, 2.288, 2.667",\
                 "1.116, 1.144, 1.211, 1.304, 1.425, 1.585, 1.792, 2.052, 2.369, 2.747",\
                 "1.183, 1.211, 1.278, 1.371, 1.492, 1.652, 1.859, 2.119, 2.436, 2.815",\
                 "1.234, 1.262, 1.329, 1.422, 1.543, 1.703, 1.91, 2.17, 2.487, 2.865",\
                 "1.269, 1.296, 1.363, 1.456, 1.577, 1.737, 1.945, 2.204, 2.521, 2.899",\
                 "1.285, 1.313, 1.38, 1.473, 1.594, 1.754, 1.961, 2.221, 2.538, 2.916",\
                 "1.283, 1.311, 1.378, 1.47, 1.592, 1.752, 1.959, 2.219, 2.536, 2.914");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.005341, 0.02058, 0.04968, 0.09501, 0.1586, 0.2423, 0.3478, 0.4765, 0.63");
          values("0.8485, 0.8807, 0.9725, 1.135, 1.386, 1.735, 2.194, 2.771, 3.476, 4.316",\
                 "0.8609, 0.8933, 0.9851, 1.148, 1.398, 1.747, 2.206, 2.784, 3.488, 4.328",\
                 "0.9046, 0.9369, 1.029, 1.191, 1.442, 1.791, 2.25, 2.827, 3.532, 4.372",\
                 "0.9801, 1.012, 1.104, 1.267, 1.517, 1.867, 2.325, 2.903, 3.606, 4.446",\
                 "1.057, 1.089, 1.181, 1.344, 1.594, 1.943, 2.402, 2.979, 3.684, 4.524",\
                 "1.121, 1.153, 1.245, 1.407, 1.658, 2.007, 2.466, 3.043, 3.747, 4.587",\
                 "1.169, 1.201, 1.293, 1.456, 1.706, 2.056, 2.514, 3.092, 3.796, 4.635",\
                 "1.201, 1.233, 1.325, 1.488, 1.738, 2.088, 2.546, 3.124, 3.828, 4.667",\
                 "1.217, 1.249, 1.341, 1.504, 1.754, 2.104, 2.562, 3.139, 3.844, 4.682",\
                 "1.215, 1.247, 1.339, 1.501, 1.752, 2.101, 2.56, 3.138, 3.841, 4.68");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.005341, 0.02058, 0.04968, 0.09501, 0.1586, 0.2423, 0.3478, 0.4765, 0.63");
          values("0.08984, 0.1117, 0.1724, 0.2792, 0.4498, 0.7034, 1.047, 1.485, 2.022, 2.658",\
                 "0.0898, 0.112, 0.1726, 0.2798, 0.4498, 0.7034, 1.047, 1.483, 2.019, 2.662",\
                 "0.0898, 0.112, 0.1728, 0.2788, 0.4498, 0.703, 1.047, 1.485, 2.019, 2.662",\
                 "0.0898, 0.112, 0.1726, 0.279, 0.4498, 0.7034, 1.047, 1.485, 2.022, 2.658",\
                 "0.09, 0.1118, 0.1724, 0.2792, 0.4502, 0.7034, 1.046, 1.484, 2.02, 2.661",\
                 "0.0898, 0.1122, 0.173, 0.2794, 0.4502, 0.7034, 1.047, 1.485, 2.021, 2.659",\
                 "0.0898, 0.1118, 0.1726, 0.2796, 0.4504, 0.7022, 1.045, 1.483, 2.02, 2.661",\
                 "0.0898, 0.1118, 0.1726, 0.279, 0.4502, 0.703, 1.046, 1.482, 2.017, 2.656",\
                 "0.0898, 0.112, 0.1726, 0.2794, 0.4504, 0.703, 1.047, 1.485, 2.017, 2.655",\
                 "0.09, 0.1118, 0.1726, 0.2798, 0.45, 0.7032, 1.046, 1.483, 2.018, 2.656");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06127, 0.2062, 0.4828, 0.9139, 1.519, 2.315, 3.317, 4.541, 6");
          index_2("0.001, 0.005341, 0.02058, 0.04968, 0.09501, 0.1586, 0.2423, 0.3478, 0.4765, 0.63");
          values("0.09464, 0.1295, 0.2572, 0.5252, 0.9518, 1.551, 2.337, 3.332, 4.55, 5.991",\
                 "0.0953, 0.1301, 0.2571, 0.5252, 0.9516, 1.551, 2.34, 3.331, 4.549, 5.992",\
                 "0.0952, 0.13, 0.257, 0.5252, 0.9514, 1.549, 2.337, 3.331, 4.549, 5.992",\
                 "0.0952, 0.1302, 0.2572, 0.525, 0.951, 1.551, 2.34, 3.335, 4.545, 6.001",\
                 "0.0952, 0.1302, 0.2572, 0.525, 0.9524, 1.548, 2.338, 3.333, 4.551, 5.99",\
                 "0.0944, 0.1294, 0.2574, 0.5254, 0.9524, 1.551, 2.34, 3.335, 4.544, 6",\
                 "0.0948, 0.1296, 0.2574, 0.5248, 0.9502, 1.55, 2.339, 3.332, 4.543, 6",\
                 "0.095, 0.1294, 0.257, 0.5248, 0.9516, 1.551, 2.336, 3.333, 4.548, 5.995",\
                 "0.0948, 0.13, 0.2576, 0.525, 0.9512, 1.55, 2.336, 3.328, 4.546, 5.987",\
                 "0.0948, 0.1292, 0.2572, 0.5248, 0.9522, 1.55, 2.339, 3.329, 4.54, 5.99");
        }
      }
    }
  }

