/*
 * 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_2) {
    area : 68.051200 ;

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

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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.002895 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      min_period : 12.19 ;
      min_pulse_width_high : 5.005 ;
      min_pulse_width_low : 6.13 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02869, 0.02863, 0.02847, 0.02831, 0.0282, 0.02814, 0.02815, \
                  0.02823, 0.02818, 0.01534");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02282, 0.02279, 0.02269, 0.02252, 0.02237, 0.02227, 0.02225, \
                  0.0223, 0.02247, 0.02288");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02906, 0.029, 0.02884, 0.02868, 0.02855, 0.02851, 0.02851, 0.02857, \
                  0.02844, 0.01526");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.02285, 0.02282, 0.02272, 0.02254, 0.02239, 0.02231, 0.02227, \
                  0.02233, 0.0225, 0.02293");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002199 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.0151, 0.01509, 0.01492, 0.01477, 0.0147, 0.0147, 0.01475, 0.01481, \
                  0.01343, 0.004243");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.01143, 0.01145, 0.01144, 0.01138, 0.01133, 0.01129, 0.01129, \
                  0.01134, 0.01145, 0.01169");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.0009383, 0.0009381, 0.0009384, 0.0009374, 0.0009361, 0.0009302, \
                  0.0009209, 0.0009014, 0.0008129, 0.0006184");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.0004814, -0.0004865, -0.0004953, -0.0005039, -0.0005138, -0.0005244, \
                  -0.0005386, -0.000566, -0.0006179, -0.000597");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.401, 0.462, 0.674, 1.072, 1.599, 2.126, 2.622, 3.084, 3.487, 3.841",\
                 "0.336, 0.397, 0.609, 0.999, 1.52, 2.048, 2.536, 2.988, 3.391, 3.747",\
                 "0.178, 0.244, 0.453, 0.842, 1.356, 1.876, 2.359, 2.807, 3.21, 3.554",\
                 "-0.211, -0.151, 0.055, 0.45, 0.962, 1.483, 1.973, 2.426, 2.826, 3.178",\
                 "-0.832, -0.77, -0.571, -0.185, 0.328, 0.842, 1.328, 1.781, 2.193, 2.539",\
                 "-1.565, -1.51, -1.317, -0.945, -0.449, 0.06, 0.538, 0.981, 1.383, 1.726",\
                 "-2.437, -2.376, -2.19, -1.827, -1.344, -0.85, -0.382, 0.056, 0.444, 0.774",\
                 "-3.389, -3.338, -3.164, -2.811, -2.339, -1.863, -1.422, -0.987, -0.615, -0.29",\
                 "-4.477, -4.423, -4.251, -3.92, -3.463, -2.994, -2.568, -2.156, -1.796, -1.478",\
                 "-5.686, -5.634, -5.471, -5.171, -4.707, -4.259, -3.844, -3.451, -3.103, -2.783");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.011, 0.076, 0.288, 0.61, 0.936, 1.234, 1.504, 1.723, 1.902, 2.019",\
                 "-0.04, 0.025, 0.232, 0.558, 0.889, 1.187, 1.457, 1.685, 1.859, 1.98",\
                 "-0.223, -0.156, 0.061, 0.389, 0.723, 1.032, 1.315, 1.544, 1.73, 1.852",\
                 "-0.447, -0.383, -0.171, 0.166, 0.5, 0.815, 1.107, 1.347, 1.533, 1.663",\
                 "-0.643, -0.582, -0.374, -0.031, 0.301, 0.612, 0.897, 1.133, 1.327, 1.46",\
                 "-0.788, -0.721, -0.517, -0.178, 0.142, 0.451, 0.727, 0.963, 1.152, 1.283",\
                 "-0.855, -0.79, -0.584, -0.254, 0.069, 0.361, 0.628, 0.854, 1.043, 1.168",\
                 "-0.816, -0.758, -0.561, -0.241, 0.072, 0.354, 0.616, 0.832, 1.017, 1.134",\
                 "-0.687, -0.628, -0.437, -0.122, 0.178, 0.451, 0.703, 0.915, 1.077, 1.195",\
                 "-0.441, -0.383, -0.195, 0.108, 0.394, 0.658, 0.896, 1.092, 1.251, 1.362");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("3.326, 3.247, 3.001, 2.554, 1.932, 1.305, 0.71, 0.15, -0.344, -0.789",\
                 "3.382, 3.298, 3.057, 2.612, 1.984, 1.364, 0.773, 0.211, -0.282, -0.726",\
                 "3.552, 3.469, 3.226, 2.784, 2.155, 1.532, 0.941, 0.379, -0.109, -0.554",\
                 "3.978, 3.892, 3.648, 3.207, 2.579, 1.963, 1.36, 0.801, 0.305, -0.131",\
                 "4.714, 4.63, 4.381, 3.937, 3.307, 2.689, 2.097, 1.538, 1.037, 0.598",\
                 "5.774, 5.688, 5.447, 5.009, 4.378, 3.757, 3.162, 2.6, 2.107, 1.665",\
                 "7.183, 7.099, 6.853, 6.413, 5.783, 5.165, 4.565, 4.013, 3.519, 3.072",\
                 "8.842, 8.774, 8.517, 8.074, 7.453, 6.826, 6.233, 5.671, 5.193, 4.737",\
                 "10.67, 10.57, 10.33, 9.9, 9.266, 8.638, 8.046, 7.487, 6.978, 6.525",\
                 "12.61, 12.5, 12.27, 11.84, 11.18, 10.58, 9.957, 9.407, 8.907, 8.457");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("2.851, 2.764, 2.503, 2.098, 1.497, 0.928, 0.472, 0.051, -0.271, -0.545",\
                 "2.907, 2.817, 2.557, 2.155, 1.55, 0.985, 0.525, 0.094, -0.225, -0.495",\
                 "3.095, 3.01, 2.756, 2.346, 1.749, 1.179, 0.716, 0.292, -0.033, -0.317",\
                 "3.454, 3.367, 3.104, 2.709, 2.104, 1.535, 1.069, 0.632, 0.305, 0.012",\
                 "3.871, 3.781, 3.529, 3.125, 2.533, 1.965, 1.498, 1.053, 0.722, 0.42",\
                 "4.281, 4.195, 3.941, 3.535, 2.948, 2.382, 1.913, 1.474, 1.137, 0.834",\
                 "4.633, 4.546, 4.284, 3.885, 3.3, 2.733, 2.265, 1.816, 1.487, 1.182",\
                 "4.882, 4.8, 4.539, 4.134, 3.55, 2.983, 2.517, 2.072, 1.736, 1.43",\
                 "5.028, 4.957, 4.696, 4.306, 3.732, 3.158, 2.67, 2.214, 1.885, 1.581",\
                 "5.116, 5.023, 4.768, 4.382, 3.781, 3.233, 2.741, 2.312, 1.971, 1.657");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.3867 ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.003662, 0.01301, 0.03086, 0.05866, 0.09767, 0.149, 0.2137, 0.2926, 0.3867");
          values("0.03048, 0.03063, 0.03101, 0.0314, 0.03168, 0.03186, 0.03196, 0.03203, 0.03207, 0.03205",\
                 "0.03049, 0.03064, 0.03102, 0.03141, 0.03169, 0.03186, 0.03197, 0.03204, 0.03207, 0.03206",\
                 "0.03049, 0.03063, 0.03101, 0.03139, 0.03167, 0.03185, 0.03196, 0.03202, 0.03206, 0.03203",\
                 "0.03048, 0.03063, 0.03101, 0.0314, 0.03168, 0.03185, 0.03197, 0.03203, 0.03206, 0.032",\
                 "0.03052, 0.03067, 0.03104, 0.03144, 0.03172, 0.03189, 0.032, 0.03207, 0.03208, 0.03194",\
                 "0.03057, 0.03072, 0.0311, 0.03149, 0.03177, 0.03195, 0.03205, 0.03211, 0.03208, 0.03175",\
                 "0.03061, 0.03076, 0.03114, 0.03152, 0.0318, 0.03197, 0.03207, 0.03209, 0.03185, 0.03113",\
                 "0.03064, 0.03078, 0.03115, 0.03155, 0.03183, 0.032, 0.03205, 0.03176, 0.03089, 0.02989",\
                 "0.03063, 0.0308, 0.03117, 0.03156, 0.03181, 0.03173, 0.03086, 0.02968, 0.02883, 0.02821",\
                 "0.0269, 0.02693, 0.02602, 0.0249, 0.02436, 0.02409, 0.02394, 0.02385, 0.02379, 0.02375");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.003662, 0.01301, 0.03086, 0.05866, 0.09767, 0.149, 0.2137, 0.2926, 0.3867");
          values("-0.03906, -0.03894, -0.03869, -0.03831, -0.03792, -0.03742, -0.03341, 0.0005567, 0.0923, 0.1993",\
                 "-0.03906, -0.03897, -0.03867, -0.03834, -0.03797, -0.0374, -0.03316, 0.001988, 0.09456, 0.2004",\
                 "-0.03907, -0.03896, -0.03869, -0.03835, -0.03798, -0.03741, -0.03202, 0.00736, 0.1023, 0.2041",\
                 "-0.03911, -0.03902, -0.03873, -0.0384, -0.03803, -0.03737, -0.02971, 0.01852, 0.1162, 0.2091",\
                 "-0.03916, -0.03906, -0.03879, -0.03843, -0.03801, -0.03699, -0.02375, 0.03857, 0.1334, 0.2119",\
                 "-0.03922, -0.03911, -0.03885, -0.03846, -0.03805, -0.03576, -0.009999, 0.06577, 0.1471, 0.2071",\
                 "-0.03924, -0.03914, -0.03888, -0.03851, -0.03798, -0.0302, 0.01778, 0.09163, 0.1483, 0.1879",\
                 "-0.03932, -0.03922, -0.03895, -0.03862, -0.03607, -0.00676, 0.05124, 0.09543, 0.125, 0.1453",\
                 "-0.03968, -0.03957, -0.03929, -0.03688, -0.01137, 0.02081, 0.04082, 0.05332, 0.06145, 0.06696",\
                 "-0.05384, -0.05375, -0.05366, -0.05363, -0.05361, -0.05361, -0.05361, -0.05362, -0.05362, -0.05362");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.003662, 0.01301, 0.03086, 0.05866, 0.09767, 0.149, 0.2137, 0.2926, 0.3867");
          values("5.357, 5.471, 5.761, 6.156, 6.651, 7.266, 8.03, 8.973, 10.12, 11.48",\
                 "5.423, 5.537, 5.827, 6.222, 6.717, 7.332, 8.096, 9.039, 10.18, 11.54",\
                 "5.654, 5.768, 6.058, 6.453, 6.948, 7.563, 8.327, 9.27, 10.41, 11.77",\
                 "6.091, 6.205, 6.495, 6.89, 7.385, 8, 8.764, 9.707, 10.85, 12.21",\
                 "6.676, 6.79, 7.08, 7.477, 7.971, 8.586, 9.35, 10.29, 11.43, 12.79",\
                 "7.277, 7.391, 7.681, 8.076, 8.571, 9.185, 9.95, 10.89, 12.04, 13.4",\
                 "7.857, 7.971, 8.261, 8.656, 9.151, 9.766, 10.53, 11.47, 12.61, 13.98",\
                 "8.403, 8.517, 8.807, 9.203, 9.698, 10.31, 11.08, 12.02, 13.16, 14.52",\
                 "8.909, 9.022, 9.313, 9.708, 10.2, 10.82, 11.58, 12.52, 13.67, 15.03",\
                 "9.356, 9.47, 9.76, 10.15, 10.65, 11.26, 12.03, 12.97, 14.11, 15.47");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.003662, 0.01301, 0.03086, 0.05866, 0.09767, 0.149, 0.2137, 0.2926, 0.3867");
          values("6.569, 6.721, 7.149, 7.857, 8.921, 10.41, 12.35, 14.8, 17.79, 21.35",\
                 "6.635, 6.787, 7.215, 7.923, 8.987, 10.47, 12.42, 14.87, 17.86, 21.42",\
                 "6.863, 7.015, 7.443, 8.151, 9.216, 10.7, 12.65, 15.1, 18.09, 21.65",\
                 "7.287, 7.439, 7.866, 8.575, 9.638, 11.12, 13.07, 15.52, 18.51, 22.07",\
                 "7.852, 8.004, 8.431, 9.139, 10.2, 11.69, 13.64, 16.08, 19.07, 22.63",\
                 "8.434, 8.586, 9.014, 9.722, 10.79, 12.27, 14.22, 16.67, 19.66, 23.22",\
                 "9.002, 9.154, 9.582, 10.29, 11.35, 12.84, 14.79, 17.24, 20.22, 23.78",\
                 "9.538, 9.69, 10.12, 10.83, 11.89, 13.38, 15.32, 17.77, 20.76, 24.32",\
                 "10.03, 10.19, 10.62, 11.32, 12.39, 13.87, 15.82, 18.27, 21.26, 24.82",\
                 "10.48, 10.63, 11.06, 11.77, 12.83, 14.31, 16.26, 18.71, 21.7, 25.26");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.003662, 0.01301, 0.03086, 0.05866, 0.09767, 0.149, 0.2137, 0.2926, 0.3867");
          values("0.5138, 0.6004, 0.8528, 1.27, 1.888, 2.771, 3.975, 5.536, 7.475, 9.795",\
                 "0.5142, 0.6004, 0.853, 1.27, 1.888, 2.77, 3.973, 5.535, 7.476, 9.796",\
                 "0.5144, 0.6002, 0.853, 1.27, 1.889, 2.771, 3.974, 5.54, 7.476, 9.803",\
                 "0.5138, 0.6004, 0.8522, 1.27, 1.888, 2.771, 3.974, 5.534, 7.476, 9.804",\
                 "0.5142, 0.6004, 0.8524, 1.269, 1.888, 2.77, 3.976, 5.54, 7.472, 9.792",\
                 "0.514, 0.6, 0.85, 1.268, 1.886, 2.77, 3.972, 5.53, 7.476, 9.792",\
                 "0.514, 0.602, 0.852, 1.268, 1.888, 2.77, 3.976, 5.536, 7.472, 9.798",\
                 "0.514, 0.6, 0.852, 1.268, 1.89, 2.768, 3.972, 5.534, 7.47, 9.782",\
                 "0.514, 0.6, 0.85, 1.27, 1.886, 2.768, 3.97, 5.536, 7.464, 9.78",\
                 "0.516, 0.602, 0.852, 1.268, 1.888, 2.77, 3.974, 5.534, 7.476, 9.78");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.003662, 0.01301, 0.03086, 0.05866, 0.09767, 0.149, 0.2137, 0.2926, 0.3867");
          values("0.6054, 0.753, 1.272, 2.339, 4.09, 6.581, 9.851, 13.99, 19.03, 25",\
                 "0.6048, 0.7534, 1.271, 2.338, 4.089, 6.582, 9.85, 13.98, 19.03, 25",\
                 "0.6046, 0.7532, 1.27, 2.337, 4.086, 6.577, 9.854, 13.98, 19.02, 25.02",\
                 "0.6046, 0.753, 1.271, 2.337, 4.088, 6.58, 9.844, 13.98, 19, 25.06",\
                 "0.6052, 0.752, 1.27, 2.338, 4.092, 6.582, 9.85, 13.99, 19, 25.03",\
                 "0.604, 0.754, 1.27, 2.34, 4.092, 6.576, 9.854, 13.98, 19.02, 25.04",\
                 "0.606, 0.752, 1.272, 2.338, 4.09, 6.578, 9.844, 13.96, 19.01, 25.04",\
                 "0.604, 0.754, 1.272, 2.338, 4.086, 6.58, 9.844, 13.98, 19.02, 25.05",\
                 "0.604, 0.754, 1.27, 2.338, 4.084, 6.57, 9.844, 13.98, 19.02, 25.03",\
                 "0.606, 0.752, 1.272, 2.338, 4.088, 6.57, 9.838, 13.96, 19.01, 25.03");
        }
      }
    }
  }

