/*
 * 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_4) {
    area : 83.417600 ;

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLKN&!D" ;
      value : "0.0002496351" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLKN&D" ;
      value : "0.0002546511" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLKN&!D" ;
      value : "0.0002134473" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLKN&D" ;
      value : "0.0002114079" ;
    }

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

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

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

    pin(CLKN) {
      capacitance : 0.003401 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 8.6 ;
      min_period : 1.461 ;
      min_pulse_width_high : 0.604 ;
      min_pulse_width_low : 0.728 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.1313, 0.1308, 0.1314, 0.1372, 0.1494, 0.1683, 0.1949, 0.2297, \
                 0.2732, 0.3254");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.08396, 0.08368, 0.08418, 0.08896, 0.09883, 0.1152, 0.1385, 0.1691, \
                 0.2074, 0.2535");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.1312, 0.1308, 0.1314, 0.1372, 0.1493, 0.1682, 0.1949, 0.2297, \
                 0.2731, 0.3253");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.08409, 0.08377, 0.08431, 0.08908, 0.09892, 0.1153, 0.1386, 0.1693, \
                 0.2075, 0.2536");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002369 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 8.6 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.02498, 0.02445, 0.02618, 0.03154, 0.0411, 0.05512, 0.07415, \
                 0.09844, 0.1284, 0.1643");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.002809, 0.002598, 0.003591, 0.007613, 0.01538, 0.02718, 0.04329, \
                 0.06394, 0.08946, 0.1201");
        }
      }

      internal_power() {
        when : "CLKN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.08556, 0.08526, 0.08616, 0.09077, 0.1, 0.1141, 0.1339, 0.1595, \
                 0.1914, 0.2298");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.05571, 0.05557, 0.05645, 0.06008, 0.06716, 0.07852, 0.09447, \
                 0.1155, 0.1419, 0.1738");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.057, 0.076, 0.136, 0.244, 0.353, 0.503, 0.664, 0.856, 1.078, 1.33",\
                 "0.046, 0.063, 0.118, 0.218, 0.34, 0.483, 0.647, 0.84, 1.06, 1.309",\
                 "-0.023, -0.006, 0.047, 0.149, 0.269, 0.411, 0.574, 0.765, 0.983, 1.238",\
                 "-0.153, -0.131, -0.079, 0.023, 0.137, 0.279, 0.445, 0.63, 0.845, 1.094",\
                 "-0.315, -0.294, -0.243, -0.142, -0.033, 0.109, 0.268, 0.449, 0.669, 0.91",\
                 "-0.514, -0.495, -0.443, -0.344, -0.24, -0.103, 0.049, 0.233, 0.444, 0.685",\
                 "-0.748, -0.733, -0.682, -0.585, -0.49, -0.359, -0.202, -0.022, 0.18, 0.418",\
                 "-1.027, -1.013, -0.963, -0.876, -0.775, -0.646, -0.504, -0.332, -0.125, 0.113",\
                 "-1.348, -1.334, -1.281, -1.194, -1.105, -0.989, -0.848, -0.679, -0.475, -0.244",\
                 "-1.709, -1.692, -1.645, -1.569, -1.487, -1.37, -1.238, -1.07, -0.873, -0.649");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.223, 0.24, 0.307, 0.434, 0.591, 0.768, 0.985, 1.222, 1.484, 1.783",\
                 "0.21, 0.23, 0.29, 0.42, 0.572, 0.76, 0.972, 1.21, 1.478, 1.771",\
                 "0.181, 0.196, 0.26, 0.38, 0.539, 0.724, 0.936, 1.175, 1.446, 1.737",\
                 "0.165, 0.177, 0.24, 0.368, 0.523, 0.703, 0.915, 1.157, 1.421, 1.715",\
                 "0.176, 0.185, 0.253, 0.369, 0.532, 0.714, 0.92, 1.16, 1.426, 1.72",\
                 "0.217, 0.23, 0.291, 0.416, 0.574, 0.75, 0.958, 1.193, 1.46, 1.752",\
                 "0.305, 0.313, 0.377, 0.494, 0.648, 0.827, 1.034, 1.266, 1.533, 1.824",\
                 "0.436, 0.45, 0.504, 0.62, 0.765, 0.937, 1.145, 1.379, 1.644, 1.94",\
                 "0.625, 0.641, 0.688, 0.807, 0.939, 1.102, 1.303, 1.536, 1.797, 2.088",\
                 "0.878, 0.886, 0.934, 1.037, 1.158, 1.32, 1.516, 1.739, 2.001, 2.282");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.418, 0.409, 0.331, 0.22, 0.087, -0.071, -0.251, -0.461, -0.696, -0.954",\
                 "0.438, 0.421, 0.35, 0.245, 0.1, -0.059, -0.236, -0.446, -0.675, -0.943",\
                 "0.506, 0.491, 0.417, 0.309, 0.175, 0.017, -0.166, -0.373, -0.602, -0.868",\
                 "0.653, 0.633, 0.561, 0.452, 0.307, 0.153, -0.026, -0.242, -0.469, -0.735",\
                 "0.844, 0.834, 0.756, 0.644, 0.505, 0.346, 0.155, -0.049, -0.281, -0.547",\
                 "1.09, 1.078, 1.005, 0.893, 0.749, 0.583, 0.396, 0.188, -0.051, -0.31",\
                 "1.39, 1.384, 1.299, 1.185, 1.04, 0.871, 0.686, 0.471, 0.233, -0.025",\
                 "1.753, 1.735, 1.659, 1.538, 1.39, 1.219, 1.022, 0.807, 0.57, 0.31",\
                 "2.16, 2.152, 2.067, 1.946, 1.786, 1.612, 1.415, 1.198, 0.957, 0.695",\
                 "2.631, 2.62, 2.542, 2.415, 2.245, 2.063, 1.867, 1.645, 1.404, 1.131");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          values("0.218, 0.204, 0.138, 0.02, -0.129, -0.324, -0.529, -0.785, -1.054, -1.371",\
                 "0.233, 0.222, 0.154, 0.033, -0.116, -0.306, -0.527, -0.768, -1.045, -1.351",\
                 "0.275, 0.26, 0.197, 0.077, -0.077, -0.258, -0.474, -0.727, -1.008, -1.318",\
                 "0.335, 0.315, 0.248, 0.123, -0.036, -0.221, -0.435, -0.676, -0.958, -1.267",\
                 "0.36, 0.348, 0.278, 0.153, 0, -0.188, -0.399, -0.641, -0.925, -1.237",\
                 "0.376, 0.359, 0.29, 0.162, 0.004, -0.189, -0.399, -0.646, -0.921, -1.235",\
                 "0.352, 0.338, 0.266, 0.146, -0.024, -0.207, -0.42, -0.67, -0.949, -1.26",\
                 "0.296, 0.284, 0.211, 0.082, -0.076, -0.272, -0.481, -0.732, -1.009, -1.317",\
                 "0.202, 0.185, 0.114, -0.012, -0.182, -0.368, -0.582, -0.834, -1.113, -1.422",\
                 "0.059, 0.046, -0.027, -0.159, -0.323, -0.511, -0.73, -0.972, -1.244, -1.56");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 1.289 ;
      max_transition : 8.6 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.009891, 0.0411, 0.1007, 0.1936, 0.3238, 0.4953, 0.7113, 0.9749, 1.289");
          values("0.3286, 0.3174, 0.3003, 0.2918, 0.2871, 0.2845, 0.2829, 0.2819, 0.2812, 0.2806",\
                 "0.3286, 0.3172, 0.3003, 0.2917, 0.287, 0.2845, 0.2829, 0.2818, 0.2811, 0.2806",\
                 "0.3285, 0.3171, 0.3002, 0.2916, 0.287, 0.2845, 0.2829, 0.2818, 0.281, 0.2806",\
                 "0.329, 0.3177, 0.3006, 0.292, 0.2874, 0.2849, 0.2833, 0.2822, 0.2815, 0.2809",\
                 "0.3302, 0.3189, 0.302, 0.2933, 0.2886, 0.286, 0.2844, 0.2834, 0.2826, 0.2821",\
                 "0.3316, 0.3205, 0.3036, 0.2947, 0.2901, 0.2875, 0.2858, 0.2848, 0.284, 0.2835",\
                 "0.3341, 0.3227, 0.3055, 0.2969, 0.2923, 0.2895, 0.2879, 0.2868, 0.2861, 0.2856",\
                 "0.3367, 0.3254, 0.3083, 0.2997, 0.2948, 0.2921, 0.2904, 0.2894, 0.2886, 0.2881",\
                 "0.34, 0.3286, 0.3114, 0.3024, 0.2977, 0.295, 0.2933, 0.2923, 0.2915, 0.291",\
                 "0.344, 0.3326, 0.3151, 0.3061, 0.3012, 0.2986, 0.2968, 0.2958, 0.295, 0.2945");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.009891, 0.0411, 0.1007, 0.1936, 0.3238, 0.4953, 0.7113, 0.9749, 1.289");
          values("0.3637, 0.3581, 0.3503, 0.347, 0.3463, 0.3479, 0.3494, 0.3519, 0.3552, 0.3712",\
                 "0.3636, 0.3578, 0.3498, 0.3465, 0.3459, 0.3477, 0.3495, 0.3514, 0.355, 0.369",\
                 "0.3639, 0.3582, 0.3503, 0.347, 0.3462, 0.3477, 0.3506, 0.3527, 0.3551, 0.3726",\
                 "0.3647, 0.3589, 0.3512, 0.3478, 0.3479, 0.3489, 0.3504, 0.3532, 0.3556, 0.3749",\
                 "0.3663, 0.3603, 0.3527, 0.3494, 0.3492, 0.3503, 0.3521, 0.3536, 0.3582, 0.3789",\
                 "0.3678, 0.3621, 0.3548, 0.3512, 0.3505, 0.3522, 0.3537, 0.357, 0.3592, 0.3875",\
                 "0.3702, 0.3647, 0.3568, 0.3536, 0.3537, 0.3549, 0.3574, 0.3594, 0.3634, 0.4022",\
                 "0.3726, 0.3674, 0.36, 0.3554, 0.3569, 0.359, 0.3598, 0.3618, 0.3674, 0.4229",\
                 "0.3761, 0.3707, 0.3631, 0.3591, 0.3583, 0.3598, 0.3653, 0.3667, 0.3753, 0.4624",\
                 "0.3791, 0.3738, 0.3658, 0.3624, 0.361, 0.3617, 0.3649, 0.3733, 0.3911, 0.5356");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.009891, 0.0411, 0.1007, 0.1936, 0.3238, 0.4953, 0.7113, 0.9749, 1.289");
          values("0.9739, 1.018, 1.128, 1.283, 1.479, 1.728, 2.048, 2.448, 2.936, 3.518",\
                 "0.9908, 1.034, 1.145, 1.3, 1.495, 1.745, 2.065, 2.465, 2.952, 3.534",\
                 "1.057, 1.1, 1.211, 1.366, 1.561, 1.811, 2.131, 2.531, 3.019, 3.6",\
                 "1.186, 1.229, 1.339, 1.495, 1.69, 1.94, 2.26, 2.659, 3.147, 3.729",\
                 "1.354, 1.398, 1.508, 1.663, 1.859, 2.108, 2.428, 2.828, 3.316, 3.897",\
                 "1.549, 1.593, 1.703, 1.859, 2.054, 2.304, 2.624, 3.023, 3.511, 4.093",\
                 "1.775, 1.819, 1.929, 2.084, 2.28, 2.53, 2.849, 3.249, 3.737, 4.319",\
                 "2.028, 2.072, 2.182, 2.338, 2.533, 2.783, 3.103, 3.503, 3.99, 4.572",\
                 "2.31, 2.354, 2.464, 2.62, 2.815, 3.065, 3.385, 3.785, 4.272, 4.855",\
                 "2.62, 2.664, 2.774, 2.929, 3.125, 3.375, 3.694, 4.094, 4.582, 5.163");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.009891, 0.0411, 0.1007, 0.1936, 0.3238, 0.4953, 0.7113, 0.9749, 1.289");
          values("1.094, 1.138, 1.266, 1.491, 1.839, 2.328, 2.973, 3.785, 4.776, 5.959",\
                 "1.111, 1.155, 1.282, 1.507, 1.855, 2.345, 2.989, 3.801, 4.791, 5.973",\
                 "1.177, 1.221, 1.349, 1.574, 1.922, 2.411, 3.055, 3.868, 4.859, 6.039",\
                 "1.308, 1.352, 1.479, 1.704, 2.053, 2.542, 3.187, 3.998, 4.989, 6.173",\
                 "1.482, 1.526, 1.654, 1.879, 2.227, 2.716, 3.36, 4.173, 5.163, 6.344",\
                 "1.685, 1.728, 1.856, 2.081, 2.429, 2.919, 3.563, 4.375, 5.366, 6.549",\
                 "1.919, 1.963, 2.09, 2.316, 2.664, 3.154, 3.798, 4.61, 5.602, 6.783",\
                 "2.183, 2.228, 2.355, 2.58, 2.929, 3.418, 4.062, 4.874, 5.866, 7.05",\
                 "2.477, 2.521, 2.648, 2.873, 3.222, 3.711, 4.355, 5.166, 6.157, 7.338",\
                 "2.796, 2.84, 2.967, 3.192, 3.54, 4.03, 4.674, 5.487, 6.476, 7.657");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.009891, 0.0411, 0.1007, 0.1936, 0.3238, 0.4953, 0.7113, 0.9749, 1.289");
          values("0.1414, 0.181, 0.2898, 0.4576, 0.7078, 1.083, 1.598, 2.265, 3.085, 4.065",\
                 "0.141, 0.181, 0.2898, 0.4578, 0.709, 1.084, 1.599, 2.265, 3.083, 4.064",\
                 "0.1408, 0.1806, 0.2898, 0.4576, 0.7092, 1.084, 1.599, 2.266, 3.085, 4.065",\
                 "0.1414, 0.181, 0.2896, 0.4578, 0.7076, 1.084, 1.598, 2.265, 3.085, 4.062",\
                 "0.141, 0.1812, 0.2902, 0.4584, 0.7088, 1.084, 1.599, 2.266, 3.085, 4.06",\
                 "0.1408, 0.1812, 0.2902, 0.4576, 0.7094, 1.083, 1.599, 2.266, 3.083, 4.062",\
                 "0.1416, 0.1814, 0.29, 0.458, 0.7084, 1.083, 1.599, 2.266, 3.085, 4.063",\
                 "0.1416, 0.1816, 0.2904, 0.458, 0.708, 1.084, 1.599, 2.262, 3.08, 4.06",\
                 "0.1416, 0.1828, 0.2908, 0.4586, 0.7086, 1.082, 1.598, 2.265, 3.08, 4.055",\
                 "0.1422, 0.1822, 0.2908, 0.4588, 0.7086, 1.083, 1.6, 2.264, 3.082, 4.056");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.009891, 0.0411, 0.1007, 0.1936, 0.3238, 0.4953, 0.7113, 0.9749, 1.289");
          values("0.1204, 0.1764, 0.3616, 0.743, 1.356, 2.22, 3.352, 4.785, 6.532, 8.624",\
                 "0.121, 0.1764, 0.362, 0.743, 1.356, 2.22, 3.359, 4.787, 6.536, 8.62",\
                 "0.121, 0.176, 0.3616, 0.7428, 1.356, 2.22, 3.354, 4.783, 6.536, 8.62",\
                 "0.1206, 0.1758, 0.3618, 0.7438, 1.356, 2.216, 3.359, 4.785, 6.533, 8.621",\
                 "0.1208, 0.1762, 0.3614, 0.743, 1.356, 2.22, 3.359, 4.787, 6.536, 8.616",\
                 "0.12, 0.176, 0.3618, 0.7436, 1.356, 2.22, 3.359, 4.784, 6.537, 8.621",\
                 "0.1198, 0.1752, 0.3616, 0.7436, 1.354, 2.219, 3.352, 4.786, 6.535, 8.623",\
                 "0.1202, 0.1758, 0.3618, 0.7434, 1.355, 2.219, 3.355, 4.784, 6.535, 8.62",\
                 "0.1196, 0.1748, 0.3618, 0.7428, 1.356, 2.22, 3.351, 4.786, 6.53, 8.62",\
                 "0.1198, 0.1752, 0.3614, 0.7428, 1.354, 2.218, 3.356, 4.783, 6.532, 8.622");
        }
      }
    }
  }

