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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003265 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7 ;
      min_period : 2.148 ;
      min_pulse_width_high : 1.054 ;
      min_pulse_width_low : 1.077 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.2343, 0.2338, 0.235, 0.2433, 0.2624, 0.2931, 0.3365, 0.3931, \
                  0.4636, 0.5483");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1822, 0.1818, 0.1822, 0.1887, 0.2045, 0.2305, 0.2686, 0.3187, \
                  0.3816, 0.4576");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.2379, 0.2374, 0.2385, 0.2468, 0.266, 0.2966, 0.34, 0.3966, 0.4669, \
                  0.5515");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1819, 0.1814, 0.182, 0.1884, 0.2044, 0.2306, 0.2684, 0.3188, \
                  0.3816, 0.4577");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.00238 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7 ;
      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.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.1307, 0.1301, 0.1295, 0.132, 0.1398, 0.1534, 0.1728, 0.1982, \
                  0.23, 0.2683");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.09026, 0.0905, 0.09117, 0.09425, 0.1006, 0.1111, 0.1262, 0.1463, \
                  0.1716, 0.2022");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.00755, 0.007542, 0.007552, 0.007545, 0.007558, 0.007545, 0.007558, \
                  0.007554, 0.007546, 0.007531");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("-0.004744, -0.004758, -0.004755, -0.004755, -0.004755, -0.004787, \
                  -0.0048, -0.004814, -0.004826, -0.004846");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.149, 0.154, 0.192, 0.259, 0.33, 0.391, 0.438, 0.466, 0.485, 0.483",\
                 "0.145, 0.151, 0.187, 0.255, 0.326, 0.388, 0.428, 0.46, 0.474, 0.475",\
                 "0.112, 0.119, 0.153, 0.217, 0.292, 0.353, 0.399, 0.429, 0.446, 0.451",\
                 "0.018, 0.029, 0.062, 0.13, 0.198, 0.262, 0.309, 0.341, 0.355, 0.364",\
                 "-0.134, -0.13, -0.094, -0.021, 0.05, 0.113, 0.163, 0.192, 0.207, 0.208",\
                 "-0.333, -0.328, -0.288, -0.225, -0.148, -0.089, -0.038, -0.01, 0.002, 0.005",\
                 "-0.571, -0.563, -0.526, -0.458, -0.39, -0.329, -0.286, -0.259, -0.245, -0.248",\
                 "-0.846, -0.844, -0.803, -0.748, -0.673, -0.613, -0.566, -0.544, -0.539, -0.547",\
                 "-1.179, -1.174, -1.132, -1.073, -0.999, -0.939, -0.898, -0.887, -0.878, -0.892",\
                 "-1.549, -1.549, -1.514, -1.454, -1.388, -1.328, -1.287, -1.273, -1.265, -1.278");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.069, 0.081, 0.114, 0.164, 0.216, 0.256, 0.284, 0.311, 0.309, 0.304",\
                 "0.058, 0.068, 0.106, 0.163, 0.208, 0.25, 0.279, 0.302, 0.309, 0.303",\
                 "0.044, 0.049, 0.084, 0.148, 0.197, 0.236, 0.264, 0.291, 0.297, 0.293",\
                 "0.026, 0.038, 0.072, 0.124, 0.181, 0.219, 0.252, 0.275, 0.284, 0.281",\
                 "0.031, 0.04, 0.075, 0.129, 0.179, 0.222, 0.248, 0.271, 0.277, 0.276",\
                 "0.062, 0.066, 0.1, 0.152, 0.2, 0.24, 0.267, 0.281, 0.286, 0.275",\
                 "0.122, 0.133, 0.171, 0.219, 0.261, 0.293, 0.318, 0.325, 0.326, 0.307",\
                 "0.244, 0.249, 0.283, 0.33, 0.368, 0.397, 0.411, 0.422, 0.406, 0.386",\
                 "0.404, 0.416, 0.451, 0.491, 0.53, 0.548, 0.554, 0.555, 0.541, 0.514",\
                 "0.628, 0.643, 0.675, 0.71, 0.739, 0.748, 0.75, 0.75, 0.723, 0.694");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.481, 0.476, 0.436, 0.359, 0.277, 0.207, 0.15, 0.108, 0.084, 0.081",\
                 "0.485, 0.482, 0.44, 0.365, 0.283, 0.214, 0.154, 0.121, 0.087, 0.084",\
                 "0.525, 0.513, 0.472, 0.401, 0.317, 0.244, 0.186, 0.145, 0.125, 0.121",\
                 "0.624, 0.616, 0.576, 0.494, 0.421, 0.341, 0.285, 0.247, 0.219, 0.215",\
                 "0.804, 0.791, 0.755, 0.677, 0.6, 0.527, 0.469, 0.423, 0.398, 0.398",\
                 "1.056, 1.049, 1.007, 0.937, 0.853, 0.785, 0.726, 0.681, 0.66, 0.653",\
                 "1.382, 1.373, 1.329, 1.259, 1.183, 1.11, 1.048, 1.003, 0.98, 0.972",\
                 "1.771, 1.76, 1.72, 1.651, 1.568, 1.498, 1.438, 1.397, 1.362, 1.357",\
                 "2.226, 2.216, 2.173, 2.099, 2.024, 1.944, 1.895, 1.843, 1.813, 1.805",\
                 "2.737, 2.727, 2.685, 2.61, 2.531, 2.456, 2.397, 2.356, 2.325, 2.316");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          values("0.487, 0.476, 0.436, 0.359, 0.271, 0.207, 0.15, 0.108, 0.097, 0.107",\
                 "0.492, 0.482, 0.445, 0.365, 0.283, 0.214, 0.161, 0.121, 0.106, 0.11",\
                 "0.525, 0.513, 0.472, 0.391, 0.317, 0.239, 0.186, 0.145, 0.132, 0.139",\
                 "0.576, 0.565, 0.526, 0.448, 0.359, 0.286, 0.236, 0.187, 0.176, 0.178",\
                 "0.608, 0.595, 0.557, 0.482, 0.398, 0.324, 0.27, 0.228, 0.212, 0.212",\
                 "0.622, 0.615, 0.571, 0.493, 0.403, 0.339, 0.277, 0.238, 0.221, 0.219",\
                 "0.598, 0.584, 0.549, 0.466, 0.381, 0.317, 0.252, 0.211, 0.196, 0.201",\
                 "0.534, 0.519, 0.48, 0.407, 0.314, 0.253, 0.189, 0.15, 0.135, 0.143",\
                 "0.42, 0.408, 0.378, 0.298, 0.207, 0.14, 0.084, 0.041, 0.032, 0.038",\
                 "0.261, 0.252, 0.214, 0.144, 0.052, -0.027, -0.078, -0.117, -0.126, -0.108");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.4952 ;
      max_transition : 7 ;
      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.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004411, 0.01638, 0.03925, 0.07487, 0.1248, 0.1906, 0.2735, 0.3746, 0.4952");
          values("0.3173, 0.3096, 0.2959, 0.287, 0.2821, 0.2792, 0.2773, 0.2762, 0.2753, 0.2746",\
                 "0.3173, 0.3095, 0.2957, 0.287, 0.2821, 0.2792, 0.2774, 0.2761, 0.2753, 0.2745",\
                 "0.3174, 0.3095, 0.2957, 0.287, 0.2822, 0.2792, 0.2774, 0.2761, 0.2753, 0.2745",\
                 "0.3178, 0.31, 0.2961, 0.2875, 0.2826, 0.2797, 0.2778, 0.2765, 0.2758, 0.2751",\
                 "0.3186, 0.3109, 0.297, 0.2883, 0.2836, 0.2804, 0.2786, 0.2774, 0.2765, 0.2758",\
                 "0.32, 0.3121, 0.2983, 0.2898, 0.2848, 0.2817, 0.2799, 0.2787, 0.2779, 0.2773",\
                 "0.321, 0.3132, 0.2994, 0.2909, 0.286, 0.2829, 0.281, 0.2799, 0.2789, 0.2783",\
                 "0.3226, 0.3149, 0.3009, 0.2924, 0.2876, 0.2844, 0.2827, 0.2813, 0.2804, 0.2798",\
                 "0.3241, 0.3165, 0.3027, 0.294, 0.2892, 0.2862, 0.2842, 0.2829, 0.2822, 0.2815",\
                 "0.3261, 0.3182, 0.3043, 0.2958, 0.291, 0.288, 0.2861, 0.2847, 0.2839, 0.2832");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004411, 0.01638, 0.03925, 0.07487, 0.1248, 0.1906, 0.2735, 0.3746, 0.4952");
          values("0.3216, 0.3134, 0.2994, 0.2883, 0.2817, 0.2786, 0.2777, 0.2781, 0.2795, 0.2818",\
                 "0.3216, 0.3134, 0.2995, 0.2887, 0.2821, 0.2789, 0.2782, 0.2782, 0.2791, 0.2832",\
                 "0.3214, 0.3131, 0.2992, 0.2883, 0.2819, 0.2786, 0.2779, 0.2781, 0.279, 0.2827",\
                 "0.3216, 0.3136, 0.2998, 0.289, 0.2825, 0.2794, 0.278, 0.2784, 0.2797, 0.2834",\
                 "0.3226, 0.3143, 0.3005, 0.2899, 0.283, 0.2807, 0.2798, 0.28, 0.2799, 0.2845",\
                 "0.3238, 0.3156, 0.3016, 0.2907, 0.2843, 0.2811, 0.2818, 0.2803, 0.2816, 0.2858",\
                 "0.3261, 0.3179, 0.304, 0.2935, 0.2868, 0.2834, 0.2827, 0.283, 0.2838, 0.2906",\
                 "0.3285, 0.3205, 0.307, 0.2947, 0.2888, 0.2873, 0.2863, 0.2852, 0.2859, 0.2951",\
                 "0.332, 0.3237, 0.3097, 0.2982, 0.2912, 0.2889, 0.2897, 0.2911, 0.2904, 0.301",\
                 "0.3358, 0.3276, 0.3141, 0.302, 0.2956, 0.2917, 0.2914, 0.2946, 0.2971, 0.3152");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004411, 0.01638, 0.03925, 0.07487, 0.1248, 0.1906, 0.2735, 0.3746, 0.4952");
          values("1.181, 1.217, 1.314, 1.458, 1.648, 1.896, 2.214, 2.614, 3.102, 3.684",\
                 "1.19, 1.227, 1.324, 1.467, 1.657, 1.905, 2.224, 2.624, 3.111, 3.693",\
                 "1.227, 1.264, 1.36, 1.504, 1.694, 1.942, 2.26, 2.66, 3.148, 3.73",\
                 "1.3, 1.336, 1.433, 1.576, 1.767, 2.014, 2.333, 2.733, 3.221, 3.802",\
                 "1.383, 1.419, 1.516, 1.66, 1.85, 2.098, 2.416, 2.816, 3.304, 3.886",\
                 "1.458, 1.494, 1.591, 1.735, 1.925, 2.173, 2.491, 2.891, 3.379, 3.961",\
                 "1.523, 1.559, 1.656, 1.799, 1.99, 2.238, 2.556, 2.956, 3.444, 4.026",\
                 "1.573, 1.61, 1.707, 1.85, 2.04, 2.288, 2.607, 3.006, 3.494, 4.076",\
                 "1.608, 1.644, 1.741, 1.885, 2.075, 2.323, 2.642, 3.041, 3.529, 4.111",\
                 "1.624, 1.661, 1.757, 1.901, 2.091, 2.339, 2.658, 3.057, 3.545, 4.127");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004411, 0.01638, 0.03925, 0.07487, 0.1248, 0.1906, 0.2735, 0.3746, 0.4952");
          values("1.37, 1.41, 1.521, 1.705, 1.979, 2.366, 2.876, 3.519, 4.306, 5.244",\
                 "1.38, 1.419, 1.53, 1.715, 1.989, 2.375, 2.886, 3.529, 4.315, 5.253",\
                 "1.416, 1.456, 1.567, 1.751, 2.025, 2.412, 2.922, 3.565, 4.351, 5.29",\
                 "1.489, 1.528, 1.639, 1.824, 2.098, 2.484, 2.995, 3.638, 4.424, 5.362",\
                 "1.574, 1.614, 1.725, 1.909, 2.183, 2.57, 3.08, 3.724, 4.509, 5.448",\
                 "1.652, 1.692, 1.803, 1.987, 2.261, 2.648, 3.158, 3.802, 4.588, 5.526",\
                 "1.722, 1.762, 1.873, 2.057, 2.331, 2.718, 3.228, 3.872, 4.658, 5.596",\
                 "1.78, 1.821, 1.932, 2.115, 2.39, 2.776, 3.286, 3.93, 4.716, 5.655",\
                 "1.824, 1.864, 1.976, 2.159, 2.434, 2.82, 3.33, 3.973, 4.759, 5.697",\
                 "1.852, 1.892, 2.003, 2.187, 2.461, 2.847, 3.357, 4.001, 4.787, 5.724");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004411, 0.01638, 0.03925, 0.07487, 0.1248, 0.1906, 0.2735, 0.3746, 0.4952");
          values("0.1394, 0.175, 0.277, 0.4464, 0.7074, 1.091, 1.615, 2.286, 3.109, 4.09",\
                 "0.1396, 0.1754, 0.2766, 0.447, 0.7078, 1.089, 1.614, 2.284, 3.107, 4.097",\
                 "0.1396, 0.1756, 0.2768, 0.4476, 0.7078, 1.089, 1.614, 2.283, 3.111, 4.091",\
                 "0.1394, 0.1754, 0.277, 0.4472, 0.707, 1.09, 1.614, 2.283, 3.108, 4.092",\
                 "0.1392, 0.1756, 0.2766, 0.4478, 0.708, 1.09, 1.615, 2.283, 3.111, 4.093",\
                 "0.139, 0.1754, 0.276, 0.4474, 0.7082, 1.09, 1.613, 2.285, 3.111, 4.097",\
                 "0.1396, 0.1752, 0.2768, 0.447, 0.7072, 1.09, 1.613, 2.283, 3.109, 4.091",\
                 "0.139, 0.1754, 0.2766, 0.447, 0.7074, 1.09, 1.612, 2.282, 3.105, 4.093",\
                 "0.1392, 0.1754, 0.277, 0.4474, 0.7082, 1.089, 1.613, 2.282, 3.106, 4.088",\
                 "0.139, 0.1754, 0.277, 0.4474, 0.7078, 1.09, 1.612, 2.285, 3.11, 4.093");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
          index_2("0.001, 0.004411, 0.01638, 0.03925, 0.07487, 0.1248, 0.1906, 0.2735, 0.3746, 0.4952");
          values("0.155, 0.1996, 0.3518, 0.6432, 1.124, 1.821, 2.74, 3.897, 5.313, 7.008",\
                 "0.155, 0.2002, 0.3524, 0.6426, 1.124, 1.821, 2.743, 3.896, 5.31, 6.999",\
                 "0.1552, 0.2002, 0.3524, 0.6434, 1.125, 1.821, 2.743, 3.896, 5.309, 6.999",\
                 "0.1552, 0.1996, 0.3522, 0.6424, 1.124, 1.818, 2.741, 3.896, 5.316, 7.01",\
                 "0.1554, 0.2004, 0.3514, 0.6422, 1.125, 1.82, 2.741, 3.899, 5.313, 6.998",\
                 "0.1544, 0.2004, 0.3518, 0.6422, 1.125, 1.821, 2.739, 3.904, 5.321, 6.998",\
                 "0.1544, 0.1996, 0.3522, 0.6432, 1.125, 1.818, 2.739, 3.904, 5.322, 7.01",\
                 "0.1552, 0.2006, 0.352, 0.6432, 1.124, 1.819, 2.74, 3.903, 5.321, 7.002",\
                 "0.1546, 0.2006, 0.3516, 0.6424, 1.125, 1.821, 2.738, 3.897, 5.314, 7.002",\
                 "0.1554, 0.2008, 0.3524, 0.6426, 1.125, 1.82, 2.74, 3.898, 5.312, 7");
        }
      }
    }
  }

