/*
 * 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__dffnq_2) {
    area : 72.441600 ;

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

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

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

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

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

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

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

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

    pin(CLKN) {
      capacitance : 0.002921 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 21 ;
      min_period : 9.572 ;
      min_pulse_width_high : 3.843 ;
      min_pulse_width_low : 4.788 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.03059, 0.03053, 0.03041, 0.03026, 0.03016, 0.03006, 0.02999, \
                  0.02995, 0.0299, 0.01903");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.01982, 0.01979, 0.01973, 0.01961, 0.01947, 0.01937, 0.01928, \
                  0.01923, 0.01919, 0.0193");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.03057, 0.03052, 0.0304, 0.03026, 0.03014, 0.03005, 0.02998, \
                  0.02994, 0.02988, 0.01892");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.01982, 0.0198, 0.01974, 0.01961, 0.01949, 0.01939, 0.01929, \
                  0.01924, 0.01917, 0.0193");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002033 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 21 ;
      nextstate_type : data ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!CLKN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.005728, 0.00559, 0.00544, 0.00538, 0.005344, 0.005326, 0.005314, \
                  0.005305, 0.005301, 0.005074");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.0008962, 0.0008687, 0.0007941, 0.0007181, 0.0006602, 0.0006206, \
                  0.0005933, 0.0005757, 0.0005617, 0.0006342");
        }
      }

      internal_power() {
        when : "CLKN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.0184, 0.01832, 0.01822, 0.01814, 0.01807, 0.01802, 0.01798, \
                  0.01796, 0.01791, 0.009176");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.01253, 0.0125, 0.01246, 0.0124, 0.01234, 0.01228, 0.01224, 0.01219, \
                  0.01216, 0.01222");
        }
      }

      timing() {
        related_pin : "CLKN" ;
        timing_type : hold_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("1.111, 1.177, 1.445, 1.94, 2.732, 3.855, 5.274, 6.892, 8.705, 10.72",\
                 "1.051, 1.115, 1.378, 1.875, 2.673, 3.788, 5.209, 6.828, 8.642, 10.66",\
                 "0.792, 0.861, 1.126, 1.622, 2.414, 3.532, 4.947, 6.563, 8.374, 10.4",\
                 "0.285, 0.352, 0.617, 1.108, 1.902, 3.022, 4.436, 6.054, 7.863, 9.882",\
                 "-0.522, -0.453, -0.197, 0.301, 1.095, 2.205, 3.625, 5.242, 7.054, 9.069",\
                 "-1.573, -1.506, -1.252, -0.756, 0.034, 1.142, 2.551, 4.158, 5.959, 7.961",\
                 "-2.806, -2.738, -2.487, -2.003, -1.227, -0.125, 1.269, 2.849, 4.637, 6.624",\
                 "-4.221, -4.166, -3.907, -3.444, -2.673, -1.593, -0.216, 1.346, 3.098, 5.068",\
                 "-5.816, -5.775, -5.516, -5.069, -4.317, -3.247, -1.891, -0.36, 1.36, 3.301",\
                 "-7.61, -7.554, -7.329, -6.881, -6.149, -5.098, -3.77, -2.267, -0.575, 1.326");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("1.729, 1.801, 2.074, 2.6, 3.434, 4.598, 6.106, 7.88, 9.88, 12.1",\
                 "1.668, 1.74, 2.014, 2.545, 3.37, 4.537, 6.046, 7.814, 9.818, 12.04",\
                 "1.457, 1.528, 1.798, 2.324, 3.153, 4.326, 5.829, 7.606, 9.606, 11.82",\
                 "1.117, 1.198, 1.458, 1.99, 2.816, 3.991, 5.5, 7.28, 9.275, 11.5",\
                 "0.744, 0.824, 1.089, 1.612, 2.436, 3.606, 5.113, 6.895, 8.892, 11.12",\
                 "0.364, 0.44, 0.708, 1.231, 2.042, 3.202, 4.697, 6.467, 8.463, 10.69",\
                 "-0.026, 0.051, 0.311, 0.827, 1.641, 2.786, 4.268, 6.024, 8.014, 10.23",\
                 "-0.429, -0.357, -0.09, 0.423, 1.231, 2.367, 3.835, 5.576, 7.55, 9.755",\
                 "-0.824, -0.757, -0.48, 0.029, 0.829, 1.95, 3.402, 5.133, 7.094, 9.276",\
                 "-1.212, -1.131, -0.863, -0.351, 0.439, 1.55, 2.985, 4.692, 6.635, 8.811");
        }
      }

      timing() {
        related_pin : "CLKN" ;
        timing_type : setup_falling ;

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("3.332, 3.229, 2.913, 2.338, 1.591, 0.664, -0.466, -1.807, -3.372, -5.134",\
                 "3.405, 3.291, 2.987, 2.413, 1.656, 0.735, -0.398, -1.744, -3.3, -5.068",\
                 "3.673, 3.56, 3.256, 2.675, 1.924, 1.006, -0.133, -1.47, -3.033, -4.803",\
                 "4.201, 4.091, 3.777, 3.206, 2.455, 1.535, 0.395, -0.945, -2.509, -4.271",\
                 "5.03, 4.917, 4.611, 4.039, 3.284, 2.358, 1.231, -0.114, -1.676, -3.445",\
                 "6.189, 6.082, 5.776, 5.204, 4.447, 3.518, 2.395, 1.047, -0.517, -2.283",\
                 "7.693, 7.579, 7.27, 6.692, 5.941, 5.007, 3.884, 2.539, 0.975, -0.788",\
                 "9.487, 9.377, 9.073, 8.497, 7.739, 6.788, 5.662, 4.319, 2.752, 0.977",\
                 "11.57, 11.46, 11.15, 10.58, 9.803, 8.846, 7.702, 6.356, 4.785, 3.011",\
                 "13.9, 13.79, 13.49, 12.9, 12.11, 11.14, 9.985, 8.629, 7.05, 5.27");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          values("0.641, 0.562, 0.298, -0.249, -1.143, -2.368, -3.932, -5.786, -7.899, -10.27",\
                 "0.704, 0.619, 0.359, -0.202, -1.075, -2.309, -3.854, -5.723, -7.829, -10.2",\
                 "0.915, 0.83, 0.566, 0.006, -0.869, -2.097, -3.648, -5.507, -7.615, -9.984",\
                 "1.28, 1.194, 0.92, 0.392, -0.507, -1.725, -3.283, -5.152, -7.258, -9.62",\
                 "1.773, 1.681, 1.416, 0.881, -0.015, -1.23, -2.809, -4.652, -6.76, -9.126",\
                 "2.342, 2.256, 1.981, 1.448, 0.564, -0.672, -2.231, -4.072, -6.172, -8.536",\
                 "2.973, 2.888, 2.603, 2.05, 1.188, -0.041, -1.595, -3.444, -5.538, -7.895",\
                 "3.629, 3.546, 3.268, 2.724, 1.847, 0.635, -0.939, -2.775, -4.861, -7.214",\
                 "4.329, 4.255, 3.949, 3.416, 2.53, 1.308, -0.23, -2.078, -4.166, -6.495",\
                 "5.035, 4.943, 4.662, 4.11, 3.238, 2.02, 0.479, -1.361, -3.441, -5.77");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.2959 ;
      max_transition : 21 ;
      min_capacitance : 0.001 ;
      output_voltage : default ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        related_pin : "CLKN" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.003035, 0.01018, 0.02382, 0.04508, 0.0749, 0.1141, 0.1636, 0.2239, 0.2959");
          values("0.03897, 0.03909, 0.03935, 0.03961, 0.0398, 0.03991, 0.03999, 0.04003, 0.04006, 0.04008",\
                 "0.03899, 0.03909, 0.03936, 0.03962, 0.03981, 0.03993, 0.04, 0.04005, 0.04007, 0.04009",\
                 "0.03898, 0.0391, 0.03936, 0.03961, 0.0398, 0.03992, 0.03999, 0.04004, 0.04006, 0.04009",\
                 "0.03898, 0.03909, 0.03936, 0.03961, 0.0398, 0.03992, 0.03999, 0.04003, 0.04006, 0.04008",\
                 "0.03894, 0.03905, 0.03932, 0.03959, 0.03978, 0.03989, 0.03997, 0.04001, 0.04003, 0.04006",\
                 "0.0389, 0.03903, 0.03929, 0.03955, 0.03973, 0.03986, 0.03993, 0.03998, 0.04001, 0.04001",\
                 "0.03888, 0.03899, 0.03925, 0.03952, 0.0397, 0.03982, 0.0399, 0.03994, 0.03995, 0.03991",\
                 "0.03884, 0.03895, 0.03921, 0.03947, 0.03966, 0.03978, 0.03985, 0.03986, 0.03957, 0.03873",\
                 "0.0387, 0.03882, 0.03907, 0.03932, 0.03934, 0.03859, 0.03741, 0.03661, 0.03606, 0.03569",\
                 "0.0003406, 0.0003406, 0.000339, 0.0003358, 0.0003325, 0.0003309, 0.0003293, 0.0003293, 0.0003277, 0.0003293");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.003035, 0.01018, 0.02382, 0.04508, 0.0749, 0.1141, 0.1636, 0.2239, 0.2959");
          values("-0.03129, -0.03121, -0.03101, -0.03071, -0.03041, -0.03009, -0.02974, -0.024, 0.02368, 0.1225",\
                 "-0.03126, -0.0312, -0.03099, -0.03067, -0.03038, -0.03018, -0.02968, -0.02379, 0.02625, 0.1246",\
                 "-0.0313, -0.03121, -0.03101, -0.03073, -0.03045, -0.03014, -0.02966, -0.02201, 0.03391, 0.131",\
                 "-0.0313, -0.03119, -0.03104, -0.03074, -0.03042, -0.03019, -0.02937, -0.01737, 0.04915, 0.1419",\
                 "-0.03134, -0.03124, -0.03103, -0.03075, -0.0304, -0.03025, -0.02862, -0.005285, 0.07407, 0.154",\
                 "-0.03131, -0.03124, -0.03102, -0.03075, -0.03042, -0.03005, -0.0242, 0.02458, 0.101, 0.16",\
                 "-0.03119, -0.03112, -0.03091, -0.03064, -0.03032, -0.02843, 0.001133, 0.06406, 0.1127, 0.1471",\
                 "-0.03098, -0.0309, -0.03072, -0.0304, -0.02836, 0.001133, 0.04063, 0.06696, 0.08456, 0.09664",\
                 "-0.03564, -0.03563, -0.03211, -0.02668, -0.02337, -0.02157, -0.0205, -0.01986, -0.01946, -0.01922",\
                 "-0.07634, -0.07634, -0.07634, -0.07634, -0.07634, -0.07634, -0.07634, -0.07634, -0.07634, -0.07634");
        }
      }

      timing() {
        related_pin : "CLKN" ;
        timing_type : falling_edge ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.003035, 0.01018, 0.02382, 0.04508, 0.0749, 0.1141, 0.1636, 0.2239, 0.2959");
          values("4.872, 4.946, 5.144, 5.424, 5.762, 6.17, 6.675, 7.296, 8.05, 8.948",\
                 "4.949, 5.023, 5.222, 5.502, 5.839, 6.248, 6.752, 7.374, 8.128, 9.026",\
                 "5.226, 5.3, 5.497, 5.777, 6.115, 6.524, 7.028, 7.65, 8.403, 9.301",\
                 "5.762, 5.836, 6.034, 6.313, 6.652, 7.06, 7.564, 8.186, 8.94, 9.838",\
                 "6.606, 6.681, 6.879, 7.159, 7.496, 7.905, 8.409, 9.031, 9.785, 10.68",\
                 "7.794, 7.869, 8.067, 8.346, 8.684, 9.093, 9.597, 10.22, 10.97, 11.87",\
                 "9.325, 9.399, 9.596, 9.876, 10.21, 10.62, 11.13, 11.75, 12.5, 13.4",\
                 "11.15, 11.22, 11.42, 11.7, 12.04, 12.45, 12.95, 13.57, 14.33, 15.22",\
                 "13.21, 13.28, 13.48, 13.76, 14.1, 14.51, 15.01, 15.63, 16.39, 17.29",\
                 "15.5, 15.58, 15.78, 16.05, 16.39, 16.8, 17.3, 17.93, 18.68, 19.58");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.003035, 0.01018, 0.02382, 0.04508, 0.0749, 0.1141, 0.1636, 0.2239, 0.2959");
          values("6.541, 6.638, 6.955, 7.543, 8.44, 9.691, 11.33, 13.4, 15.92, 18.92",\
                 "6.618, 6.715, 7.032, 7.62, 8.517, 9.768, 11.41, 13.48, 16, 19",\
                 "6.893, 6.99, 7.307, 7.895, 8.792, 10.04, 11.68, 13.75, 16.27, 19.28",\
                 "7.429, 7.526, 7.843, 8.43, 9.328, 10.58, 12.22, 14.29, 16.81, 19.81",\
                 "8.271, 8.37, 8.688, 9.275, 10.17, 11.42, 13.06, 15.13, 17.65, 20.66",\
                 "9.458, 9.556, 9.874, 10.46, 11.36, 12.61, 14.25, 16.32, 18.84, 21.84",\
                 "10.99, 11.09, 11.41, 12, 12.89, 14.14, 15.79, 17.85, 20.37, 23.38",\
                 "12.83, 12.92, 13.24, 13.83, 14.73, 15.98, 17.62, 19.69, 22.21, 25.21",\
                 "14.91, 15, 15.32, 15.91, 16.8, 18.05, 19.7, 21.76, 24.28, 27.29",\
                 "17.22, 17.31, 17.63, 18.22, 19.11, 20.37, 22.01, 24.07, 26.59, 29.6");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.003035, 0.01018, 0.02382, 0.04508, 0.0749, 0.1141, 0.1636, 0.2239, 0.2959");
          values("0.3998, 0.4596, 0.6364, 0.9104, 1.281, 1.828, 2.595, 3.6, 4.856, 6.363",\
                 "0.3998, 0.4604, 0.6364, 0.911, 1.283, 1.828, 2.595, 3.601, 4.85, 6.354",\
                 "0.399, 0.4592, 0.6362, 0.911, 1.282, 1.829, 2.595, 3.601, 4.848, 6.361",\
                 "0.3994, 0.4592, 0.6362, 0.9106, 1.281, 1.829, 2.595, 3.601, 4.849, 6.351",\
                 "0.3998, 0.4596, 0.6368, 0.9108, 1.283, 1.829, 2.595, 3.602, 4.848, 6.36",\
                 "0.4, 0.46, 0.636, 0.912, 1.282, 1.828, 2.594, 3.602, 4.848, 6.358",\
                 "0.4, 0.458, 0.638, 0.912, 1.282, 1.828, 2.594, 3.602, 4.85, 6.36",\
                 "0.4, 0.46, 0.636, 0.91, 1.282, 1.828, 2.594, 3.602, 4.85, 6.362",\
                 "0.398, 0.458, 0.638, 0.91, 1.282, 1.828, 2.594, 3.598, 4.85, 6.358",\
                 "0.4, 0.46, 0.636, 0.91, 1.282, 1.828, 2.594, 3.598, 4.848, 6.358");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1648, 0.6731, 1.644, 3.156, 5.278, 8.07, 11.59, 15.88, 21");
          index_2("0.001, 0.003035, 0.01018, 0.02382, 0.04508, 0.0749, 0.1141, 0.1636, 0.2239, 0.2959");
          values("0.4344, 0.5662, 1.05, 1.996, 3.467, 5.547, 8.29, 11.74, 15.96, 21.02",\
                 "0.4344, 0.566, 1.05, 1.996, 3.467, 5.551, 8.293, 11.74, 15.98, 21.01",\
                 "0.4342, 0.5662, 1.05, 1.996, 3.465, 5.549, 8.292, 11.74, 16, 21",\
                 "0.4342, 0.5662, 1.05, 1.996, 3.466, 5.55, 8.288, 11.74, 15.97, 21",\
                 "0.434, 0.568, 1.05, 1.996, 3.466, 5.55, 8.294, 11.74, 15.96, 21",\
                 "0.434, 0.566, 1.05, 1.996, 3.466, 5.548, 8.294, 11.76, 15.96, 20.99",\
                 "0.434, 0.566, 1.05, 1.996, 3.466, 5.546, 8.294, 11.74, 15.96, 21.02",\
                 "0.434, 0.566, 1.05, 1.996, 3.468, 5.55, 8.288, 11.75, 15.96, 21",\
                 "0.434, 0.566, 1.05, 1.996, 3.468, 5.546, 8.294, 11.76, 15.97, 20.99",\
                 "0.434, 0.566, 1.05, 1.996, 3.466, 5.55, 8.294, 11.76, 15.98, 21");
        }
      }
    }
  }

