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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003139 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 8.9 ;
      min_period : 2.786 ;
      min_pulse_width_high : 1.051 ;
      min_pulse_width_low : 1.391 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.0432, 0.04306, 0.04294, 0.0436, 0.04562, 0.04901, 0.05392, 0.06055, \
                  0.06898, 0.0793");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.03219, 0.03209, 0.032, 0.03253, 0.03407, 0.03683, 0.04102, 0.04675, \
                  0.0541, 0.06309");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.044, 0.04385, 0.04373, 0.04441, 0.04641, 0.04978, 0.05471, 0.0613, \
                  0.06972, 0.08007");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.03205, 0.03196, 0.03187, 0.03241, 0.03395, 0.03672, 0.04094, \
                  0.04672, 0.05407, 0.0631");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002384 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 8.9 ;
      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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.02508, 0.02495, 0.02468, 0.02483, 0.02571, 0.02746, 0.02992, \
                  0.03313, 0.03718, 0.04213");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.01707, 0.01711, 0.01718, 0.01749, 0.0182, 0.01944, 0.02133, \
                  0.02387, 0.02712, 0.03113");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.001669, 0.001666, 0.001667, 0.001669, 0.001664, 0.001668, 0.001665, \
                  0.001662, 0.001656, 0.00165");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("-0.001036, -0.001041, -0.001042, -0.001045, -0.00105, -0.001059, \
                  -0.001062, -0.001073, -0.00108, -0.00109");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.051, 0.064, 0.116, 0.203, 0.278, 0.334, 0.363, 0.36, 0.333, 0.271",\
                 "0.047, 0.056, 0.108, 0.193, 0.27, 0.321, 0.349, 0.349, 0.316, 0.259",\
                 "0.004, 0.013, 0.073, 0.153, 0.232, 0.285, 0.312, 0.308, 0.281, 0.216",\
                 "-0.11, -0.104, -0.052, 0.039, 0.114, 0.174, 0.197, 0.202, 0.169, 0.107",\
                 "-0.308, -0.301, -0.25, -0.158, -0.076, -0.014, 0.01, 0.013, -0.011, -0.076",\
                 "-0.559, -0.552, -0.496, -0.408, -0.33, -0.268, -0.242, -0.229, -0.261, -0.315",\
                 "-0.851, -0.853, -0.798, -0.713, -0.631, -0.573, -0.534, -0.528, -0.558, -0.608",\
                 "-1.207, -1.206, -1.155, -1.064, -0.985, -0.929, -0.9, -0.888, -0.911, -0.965",\
                 "-1.615, -1.618, -1.563, -1.479, -1.397, -1.337, -1.305, -1.295, -1.319, -1.371",\
                 "-2.084, -2.09, -2.045, -1.953, -1.871, -1.805, -1.783, -1.758, -1.787, -1.842");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.04, 0.057, 0.1, 0.166, 0.201, 0.216, 0.216, 0.184, 0.127, 0.045",\
                 "0.026, 0.04, 0.09, 0.154, 0.19, 0.212, 0.207, 0.177, 0.125, 0.037",\
                 "-0.006, 0.007, 0.057, 0.123, 0.169, 0.187, 0.181, 0.154, 0.11, 0.027",\
                 "-0.026, -0.006, 0.038, 0.102, 0.146, 0.166, 0.166, 0.14, 0.088, 0.009",\
                 "-0.017, -0, 0.046, 0.109, 0.152, 0.167, 0.164, 0.135, 0.086, -0.002",\
                 "0.021, 0.037, 0.083, 0.15, 0.185, 0.195, 0.189, 0.163, 0.107, 0.02",\
                 "0.114, 0.12, 0.165, 0.226, 0.255, 0.269, 0.258, 0.219, 0.163, 0.071",\
                 "0.256, 0.261, 0.308, 0.364, 0.385, 0.394, 0.371, 0.331, 0.269, 0.174",\
                 "0.456, 0.464, 0.506, 0.562, 0.579, 0.575, 0.546, 0.499, 0.435, 0.334",\
                 "0.725, 0.733, 0.771, 0.818, 0.827, 0.816, 0.785, 0.733, 0.654, 0.545");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.698, 0.685, 0.621, 0.523, 0.433, 0.372, 0.333, 0.317, 0.35, 0.407",\
                 "0.71, 0.69, 0.628, 0.538, 0.445, 0.377, 0.341, 0.329, 0.356, 0.413",\
                 "0.744, 0.735, 0.668, 0.573, 0.484, 0.419, 0.38, 0.372, 0.395, 0.455",\
                 "0.873, 0.855, 0.795, 0.693, 0.604, 0.542, 0.504, 0.488, 0.517, 0.575",\
                 "1.097, 1.08, 1.02, 0.924, 0.833, 0.764, 0.727, 0.714, 0.745, 0.802",\
                 "1.414, 1.397, 1.332, 1.237, 1.153, 1.081, 1.042, 1.038, 1.057, 1.117",\
                 "1.808, 1.791, 1.724, 1.62, 1.534, 1.47, 1.435, 1.42, 1.444, 1.5",\
                 "2.256, 2.243, 2.176, 2.079, 1.994, 1.929, 1.888, 1.875, 1.895, 1.954",\
                 "2.784, 2.772, 2.709, 2.608, 2.521, 2.453, 2.417, 2.406, 2.422, 2.48",\
                 "3.387, 3.369, 3.304, 3.208, 3.121, 3.055, 3.015, 3.004, 3.026, 3.075");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          values("0.635, 0.617, 0.554, 0.457, 0.373, 0.324, 0.298, 0.311, 0.35, 0.428",\
                 "0.655, 0.626, 0.568, 0.469, 0.389, 0.335, 0.306, 0.317, 0.365, 0.44",\
                 "0.7, 0.675, 0.612, 0.514, 0.43, 0.373, 0.352, 0.36, 0.395, 0.478",\
                 "0.762, 0.747, 0.682, 0.583, 0.495, 0.452, 0.421, 0.426, 0.463, 0.529",\
                 "0.814, 0.794, 0.733, 0.636, 0.555, 0.502, 0.473, 0.469, 0.501, 0.587",\
                 "0.827, 0.807, 0.746, 0.649, 0.556, 0.512, 0.478, 0.49, 0.521, 0.595",\
                 "0.79, 0.765, 0.714, 0.62, 0.53, 0.475, 0.45, 0.452, 0.485, 0.571",\
                 "0.714, 0.695, 0.636, 0.547, 0.457, 0.406, 0.38, 0.384, 0.415, 0.502",\
                 "0.596, 0.565, 0.512, 0.422, 0.331, 0.281, 0.254, 0.255, 0.29, 0.374",\
                 "0.4, 0.378, 0.321, 0.234, 0.14, 0.093, 0.063, 0.067, 0.119, 0.196");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.2328 ;
      max_transition : 8.9 ;
      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.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.0026, 0.008214, 0.01894, 0.03564, 0.05908, 0.08992, 0.1288, 0.1762, 0.2328");
          values("0.03872, 0.03862, 0.03852, 0.03852, 0.03854, 0.03858, 0.03858, 0.03859, 0.03857, 0.0386",\
                 "0.03873, 0.03862, 0.03853, 0.03853, 0.03854, 0.03858, 0.0386, 0.0386, 0.0386, 0.03861",\
                 "0.03873, 0.03864, 0.03855, 0.03853, 0.03857, 0.03859, 0.0386, 0.0386, 0.03861, 0.03861",\
                 "0.03881, 0.03871, 0.03861, 0.03861, 0.03863, 0.03866, 0.03867, 0.03868, 0.03869, 0.03869",\
                 "0.03893, 0.03884, 0.03874, 0.03874, 0.03877, 0.03879, 0.0388, 0.0388, 0.03881, 0.03881",\
                 "0.03908, 0.039, 0.03889, 0.0389, 0.03892, 0.03894, 0.03895, 0.03895, 0.03895, 0.03895",\
                 "0.03929, 0.0392, 0.03911, 0.0391, 0.03912, 0.03914, 0.03915, 0.03916, 0.03916, 0.03917",\
                 "0.03946, 0.03937, 0.03927, 0.03926, 0.0393, 0.03931, 0.03934, 0.03934, 0.03934, 0.03934",\
                 "0.03972, 0.03962, 0.03952, 0.03953, 0.03954, 0.03957, 0.03958, 0.03958, 0.03958, 0.03959",\
                 "0.03993, 0.03984, 0.03973, 0.03973, 0.03975, 0.03978, 0.03979, 0.0398, 0.0398, 0.0398");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.0026, 0.008214, 0.01894, 0.03564, 0.05908, 0.08992, 0.1288, 0.1762, 0.2328");
          values("0.03832, 0.03819, 0.03797, 0.0379, 0.03801, 0.03825, 0.03849, 0.03866, 0.03895, 0.04099",\
                 "0.03831, 0.03819, 0.03795, 0.03791, 0.03804, 0.03823, 0.03848, 0.03883, 0.03901, 0.04098",\
                 "0.03831, 0.03818, 0.03794, 0.0379, 0.03802, 0.03822, 0.03848, 0.03878, 0.03905, 0.04118",\
                 "0.0383, 0.03816, 0.03795, 0.03789, 0.038, 0.0382, 0.03846, 0.0388, 0.0391, 0.04126",\
                 "0.03837, 0.03824, 0.03799, 0.03795, 0.03807, 0.03828, 0.03852, 0.0388, 0.03915, 0.04191",\
                 "0.03852, 0.03839, 0.03819, 0.03813, 0.03823, 0.03846, 0.03872, 0.03894, 0.03949, 0.04269",\
                 "0.03866, 0.03851, 0.0383, 0.03828, 0.03848, 0.03864, 0.03882, 0.03904, 0.03962, 0.04357",\
                 "0.03891, 0.03876, 0.03854, 0.03844, 0.0386, 0.03894, 0.03922, 0.0393, 0.04012, 0.04524",\
                 "0.03922, 0.03907, 0.03883, 0.0388, 0.03883, 0.03905, 0.03949, 0.0398, 0.04081, 0.04787",\
                 "0.03957, 0.03944, 0.03919, 0.03914, 0.03923, 0.03941, 0.03961, 0.04016, 0.04201, 0.05249");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.0026, 0.008214, 0.01894, 0.03564, 0.05908, 0.08992, 0.1288, 0.1762, 0.2328");
          values("1.286, 1.318, 1.408, 1.545, 1.728, 1.969, 2.279, 2.669, 3.143, 3.709",\
                 "1.301, 1.333, 1.424, 1.56, 1.743, 1.984, 2.295, 2.684, 3.159, 3.725",\
                 "1.357, 1.389, 1.479, 1.616, 1.799, 2.04, 2.351, 2.74, 3.214, 3.78",\
                 "1.455, 1.486, 1.577, 1.714, 1.897, 2.138, 2.448, 2.837, 3.312, 3.878",\
                 "1.546, 1.578, 1.669, 1.805, 1.989, 2.229, 2.54, 2.929, 3.404, 3.97",\
                 "1.614, 1.646, 1.736, 1.873, 2.056, 2.297, 2.608, 2.997, 3.472, 4.038",\
                 "1.659, 1.691, 1.782, 1.918, 2.102, 2.343, 2.653, 3.042, 3.517, 4.083",\
                 "1.678, 1.71, 1.8, 1.937, 2.12, 2.361, 2.671, 3.061, 3.536, 4.101",\
                 "1.668, 1.7, 1.79, 1.927, 2.111, 2.351, 2.662, 3.051, 3.525, 4.091",\
                 "1.625, 1.656, 1.747, 1.884, 2.067, 2.308, 2.618, 3.008, 3.482, 4.048");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.0026, 0.008214, 0.01894, 0.03564, 0.05908, 0.08992, 0.1288, 0.1762, 0.2328");
          values("1.461, 1.504, 1.634, 1.863, 2.216, 2.71, 3.359, 4.176, 5.173, 6.361",\
                 "1.477, 1.519, 1.649, 1.879, 2.231, 2.725, 3.374, 4.191, 5.189, 6.377",\
                 "1.532, 1.575, 1.705, 1.934, 2.286, 2.781, 3.43, 4.246, 5.244, 6.432",\
                 "1.628, 1.67, 1.8, 2.029, 2.382, 2.876, 3.525, 4.342, 5.34, 6.529",\
                 "1.72, 1.763, 1.893, 2.122, 2.474, 2.969, 3.618, 4.434, 5.432, 6.62",\
                 "1.791, 1.833, 1.963, 2.192, 2.545, 3.039, 3.688, 4.505, 5.503, 6.691",\
                 "1.839, 1.882, 2.012, 2.241, 2.594, 3.087, 3.736, 4.554, 5.55, 6.739",\
                 "1.865, 1.908, 2.038, 2.267, 2.62, 3.114, 3.762, 4.579, 5.577, 6.766",\
                 "1.864, 1.907, 2.038, 2.267, 2.619, 3.113, 3.762, 4.579, 5.576, 6.764",\
                 "1.834, 1.876, 2.006, 2.235, 2.588, 3.082, 3.731, 4.548, 5.545, 6.734");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.0026, 0.008214, 0.01894, 0.03564, 0.05908, 0.08992, 0.1288, 0.1762, 0.2328");
          values("0.1668, 0.199, 0.2976, 0.4648, 0.7298, 1.118, 1.647, 2.321, 3.149, 4.142",\
                 "0.1668, 0.1988, 0.2966, 0.4648, 0.7298, 1.118, 1.647, 2.324, 3.151, 4.145",\
                 "0.1668, 0.1992, 0.2972, 0.4652, 0.7288, 1.118, 1.646, 2.324, 3.149, 4.144",\
                 "0.1668, 0.1992, 0.2974, 0.4648, 0.7298, 1.117, 1.647, 2.321, 3.15, 4.145",\
                 "0.1674, 0.1992, 0.2972, 0.4654, 0.7294, 1.117, 1.647, 2.321, 3.15, 4.145",\
                 "0.1668, 0.199, 0.2964, 0.4648, 0.729, 1.118, 1.645, 2.324, 3.152, 4.139",\
                 "0.1668, 0.199, 0.2964, 0.4648, 0.7298, 1.118, 1.644, 2.322, 3.15, 4.141",\
                 "0.1668, 0.1992, 0.2962, 0.4648, 0.7292, 1.118, 1.645, 2.322, 3.148, 4.137",\
                 "0.167, 0.199, 0.2974, 0.4646, 0.7296, 1.118, 1.645, 2.32, 3.146, 4.135",\
                 "0.1668, 0.1992, 0.2972, 0.4652, 0.73, 1.118, 1.645, 2.325, 3.149, 4.135");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.08129, 0.2964, 0.7073, 1.347, 2.245, 3.427, 4.916, 6.734, 8.9");
          index_2("0.001, 0.0026, 0.008214, 0.01894, 0.03564, 0.05908, 0.08992, 0.1288, 0.1762, 0.2328");
          values("0.2222, 0.2758, 0.4624, 0.847, 1.472, 2.355, 3.521, 4.982, 6.765, 8.9",\
                 "0.2226, 0.2758, 0.4616, 0.847, 1.471, 2.357, 3.521, 4.987, 6.768, 8.896",\
                 "0.2228, 0.2758, 0.462, 0.847, 1.471, 2.357, 3.521, 4.987, 6.768, 8.898",\
                 "0.2222, 0.2758, 0.4624, 0.8468, 1.471, 2.357, 3.52, 4.987, 6.768, 8.901",\
                 "0.2222, 0.2758, 0.4618, 0.847, 1.471, 2.357, 3.521, 4.986, 6.768, 8.898",\
                 "0.222, 0.2758, 0.463, 0.8468, 1.472, 2.358, 3.52, 4.988, 6.767, 8.896",\
                 "0.2218, 0.2752, 0.4622, 0.8476, 1.473, 2.353, 3.52, 4.978, 6.771, 8.895",\
                 "0.2218, 0.2752, 0.4618, 0.8468, 1.472, 2.353, 3.515, 4.989, 6.766, 8.898",\
                 "0.222, 0.2754, 0.4622, 0.8472, 1.472, 2.354, 3.517, 4.98, 6.775, 8.894",\
                 "0.2222, 0.2758, 0.4622, 0.848, 1.474, 2.354, 3.515, 4.98, 6.765, 8.9");
        }
      }
    }
  }

