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

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

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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003289 ;
      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.872 ;
      min_pulse_width_high : 1.263 ;
      min_pulse_width_low : 1.432 ;
      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.04367, 0.04353, 0.04343, 0.04408, 0.04609, 0.04946, 0.05438, \
                  0.06097, 0.06939, 0.0797");
        }

        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.03201, 0.03254, 0.03406, 0.03681, 0.04101, \
                  0.04676, 0.05408, 0.06306");
        }
      }

      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.04446, 0.04432, 0.04421, 0.04486, 0.04687, 0.05023, 0.05513, \
                  0.06173, 0.07015, 0.08048");
        }

        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.03204, 0.03196, 0.03188, 0.03242, 0.03396, 0.03671, 0.04093, \
                  0.0467, 0.05406, 0.06306");
        }
      }

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

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

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

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

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

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

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

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

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

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

    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.02507, 0.02494, 0.02468, 0.02482, 0.02572, 0.02747, 0.02993, \
                  0.03314, 0.03719, 0.04212");
        }

        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.01748, 0.0182, 0.01944, 0.02132, \
                  0.02386, 0.02713, 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.001668, 0.001665, 0.001668, 0.001666, \
                  0.001661, 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.001037, -0.001039, -0.001042, -0.001047, -0.001049, -0.001057, \
                  -0.001066, -0.001072, -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.085, 0.098, 0.149, 0.24, 0.309, 0.364, 0.39, 0.391, 0.366, 0.298",\
                 "0.08, 0.097, 0.144, 0.233, 0.302, 0.352, 0.375, 0.38, 0.35, 0.286",\
                 "0.043, 0.055, 0.105, 0.195, 0.259, 0.312, 0.34, 0.34, 0.307, 0.243",\
                 "-0.073, -0.065, -0.01, 0.079, 0.146, 0.204, 0.228, 0.23, 0.205, 0.142",\
                 "-0.255, -0.254, -0.196, -0.109, -0.042, 0.013, 0.046, 0.051, 0.018, -0.039",\
                 "-0.494, -0.491, -0.443, -0.356, -0.285, -0.229, -0.2, -0.194, -0.223, -0.275",\
                 "-0.781, -0.782, -0.733, -0.646, -0.578, -0.524, -0.493, -0.487, -0.509, -0.571",\
                 "-1.122, -1.12, -1.078, -0.989, -0.924, -0.868, -0.84, -0.84, -0.862, -0.915",\
                 "-1.509, -1.519, -1.478, -1.388, -1.328, -1.277, -1.25, -1.24, -1.255, -1.315",\
                 "-1.977, -1.971, -1.94, -1.848, -1.791, -1.738, -1.709, -1.701, -1.722, -1.778");
        }

        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.074, 0.091, 0.138, 0.203, 0.247, 0.269, 0.268, 0.238, 0.185, 0.115",\
                 "0.06, 0.081, 0.126, 0.193, 0.238, 0.26, 0.26, 0.232, 0.184, 0.113",\
                 "0.042, 0.055, 0.105, 0.171, 0.223, 0.239, 0.246, 0.218, 0.17, 0.099",\
                 "0.038, 0.054, 0.091, 0.165, 0.206, 0.227, 0.228, 0.202, 0.16, 0.084",\
                 "0.058, 0.072, 0.117, 0.18, 0.222, 0.239, 0.235, 0.212, 0.165, 0.085",\
                 "0.11, 0.122, 0.162, 0.225, 0.267, 0.278, 0.273, 0.241, 0.183, 0.107",\
                 "0.201, 0.217, 0.258, 0.313, 0.349, 0.36, 0.342, 0.304, 0.248, 0.167",\
                 "0.364, 0.379, 0.411, 0.467, 0.492, 0.49, 0.467, 0.426, 0.36, 0.273",\
                 "0.597, 0.605, 0.625, 0.68, 0.696, 0.689, 0.656, 0.604, 0.531, 0.436",\
                 "0.88, 0.895, 0.916, 0.963, 0.969, 0.949, 0.91, 0.849, 0.775, 0.661");
        }
      }

      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.745, 0.728, 0.665, 0.57, 0.471, 0.406, 0.367, 0.353, 0.375, 0.44",\
                 "0.751, 0.738, 0.67, 0.577, 0.477, 0.414, 0.376, 0.366, 0.389, 0.446",\
                 "0.787, 0.777, 0.716, 0.615, 0.52, 0.452, 0.417, 0.404, 0.429, 0.489",\
                 "0.91, 0.895, 0.837, 0.74, 0.642, 0.58, 0.535, 0.529, 0.553, 0.61",\
                 "1.143, 1.127, 1.064, 0.962, 0.867, 0.809, 0.763, 0.752, 0.774, 0.833",\
                 "1.455, 1.439, 1.378, 1.283, 1.189, 1.12, 1.083, 1.073, 1.09, 1.15",\
                 "1.851, 1.835, 1.77, 1.671, 1.576, 1.518, 1.476, 1.46, 1.481, 1.537",\
                 "2.305, 2.298, 2.228, 2.134, 2.04, 1.973, 1.934, 1.917, 1.937, 1.996",\
                 "2.85, 2.83, 2.769, 2.671, 2.571, 2.502, 2.46, 2.447, 2.47, 2.526",\
                 "3.462, 3.445, 3.376, 3.277, 3.177, 3.109, 3.066, 3.054, 3.072, 3.128");
        }

        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.625, 0.604, 0.55, 0.449, 0.358, 0.306, 0.297, 0.311, 0.35, 0.434",\
                 "0.641, 0.618, 0.556, 0.459, 0.366, 0.323, 0.306, 0.317, 0.365, 0.446",\
                 "0.684, 0.663, 0.604, 0.502, 0.421, 0.366, 0.343, 0.36, 0.395, 0.478",\
                 "0.752, 0.737, 0.676, 0.575, 0.484, 0.436, 0.411, 0.419, 0.454, 0.541",\
                 "0.806, 0.786, 0.733, 0.625, 0.541, 0.493, 0.462, 0.469, 0.51, 0.587",\
                 "0.821, 0.801, 0.746, 0.642, 0.556, 0.507, 0.478, 0.49, 0.521, 0.602",\
                 "0.799, 0.765, 0.714, 0.614, 0.524, 0.475, 0.45, 0.457, 0.497, 0.571",\
                 "0.72, 0.695, 0.642, 0.547, 0.457, 0.406, 0.375, 0.39, 0.422, 0.511",\
                 "0.604, 0.574, 0.521, 0.422, 0.331, 0.281, 0.254, 0.269, 0.306, 0.393",\
                 "0.411, 0.389, 0.332, 0.234, 0.146, 0.1, 0.071, 0.083, 0.129, 0.206");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.9336 ;
      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.007437, 0.03003, 0.07318, 0.1404, 0.2347, 0.3588, 0.5152, 0.7061, 0.9336");
          values("0.09699, 0.09553, 0.09395, 0.09347, 0.09337, 0.09337, 0.09336, 0.09334, 0.09335, 0.09335",\
                 "0.09695, 0.09551, 0.09396, 0.09344, 0.09332, 0.09339, 0.09335, 0.09334, 0.09335, 0.09334",\
                 "0.09698, 0.09552, 0.09396, 0.09347, 0.09334, 0.09335, 0.09334, 0.09334, 0.09336, 0.09336",\
                 "0.09705, 0.09559, 0.09401, 0.09355, 0.09344, 0.09341, 0.09341, 0.0934, 0.09341, 0.09341",\
                 "0.09713, 0.09572, 0.09414, 0.09363, 0.09353, 0.09353, 0.09353, 0.09353, 0.09354, 0.09354",\
                 "0.09726, 0.09584, 0.0943, 0.09381, 0.0937, 0.09368, 0.09367, 0.09367, 0.09365, 0.09365",\
                 "0.09743, 0.09599, 0.09439, 0.09393, 0.09387, 0.09382, 0.09382, 0.0938, 0.0938, 0.0938",\
                 "0.09759, 0.09617, 0.09457, 0.09408, 0.094, 0.09401, 0.09402, 0.09401, 0.09401, 0.09401",\
                 "0.09785, 0.09641, 0.09482, 0.09431, 0.09422, 0.09419, 0.09423, 0.09422, 0.09421, 0.09421",\
                 "0.09813, 0.09667, 0.09507, 0.09458, 0.09451, 0.09449, 0.09448, 0.09446, 0.09446, 0.09445");
        }

        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.007437, 0.03003, 0.07318, 0.1404, 0.2347, 0.3588, 0.5152, 0.7061, 0.9336");
          values("0.1011, 0.09995, 0.09795, 0.09717, 0.09733, 0.09792, 0.09882, 0.09983, 0.102, 0.1103",\
                 "0.1012, 0.09987, 0.09793, 0.09719, 0.09735, 0.09793, 0.09874, 0.09991, 0.1013, 0.11",\
                 "0.1011, 0.09985, 0.09792, 0.09714, 0.09728, 0.09791, 0.09878, 0.09958, 0.1014, 0.1112",\
                 "0.1011, 0.09984, 0.09788, 0.09712, 0.09742, 0.09775, 0.09864, 0.1, 0.1013, 0.1115",\
                 "0.101, 0.09976, 0.09786, 0.09717, 0.09723, 0.09781, 0.09872, 0.09969, 0.1015, 0.1131",\
                 "0.1011, 0.09984, 0.09793, 0.09715, 0.09733, 0.09787, 0.09864, 0.09991, 0.1019, 0.1156",\
                 "0.1012, 0.09986, 0.09796, 0.09725, 0.09759, 0.09803, 0.09882, 0.1001, 0.1021, 0.1189",\
                 "0.1014, 0.1001, 0.09818, 0.09728, 0.09752, 0.09872, 0.09941, 0.1002, 0.1032, 0.1262",\
                 "0.1016, 0.1003, 0.0984, 0.09758, 0.09762, 0.09805, 0.09983, 0.101, 0.1056, 0.1367",\
                 "0.102, 0.1008, 0.0988, 0.09822, 0.09804, 0.09827, 0.09926, 0.1013, 0.1087, 0.1539");
        }
      }

      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.007437, 0.03003, 0.07318, 0.1404, 0.2347, 0.3588, 0.5152, 0.7061, 0.9336");
          values("1.472, 1.511, 1.614, 1.761, 1.951, 2.196, 2.511, 2.906, 3.386, 3.96",\
                 "1.487, 1.526, 1.63, 1.776, 1.966, 2.211, 2.527, 2.921, 3.402, 3.974",\
                 "1.543, 1.582, 1.686, 1.832, 2.022, 2.267, 2.582, 2.977, 3.458, 4.031",\
                 "1.641, 1.68, 1.783, 1.93, 2.12, 2.365, 2.68, 3.075, 3.556, 4.128",\
                 "1.734, 1.774, 1.877, 2.023, 2.213, 2.459, 2.774, 3.168, 3.649, 4.223",\
                 "1.803, 1.843, 1.946, 2.092, 2.282, 2.528, 2.843, 3.237, 3.718, 4.292",\
                 "1.849, 1.889, 1.992, 2.139, 2.328, 2.574, 2.889, 3.284, 3.765, 4.338",\
                 "1.87, 1.91, 2.013, 2.159, 2.349, 2.595, 2.91, 3.304, 3.784, 4.358",\
                 "1.862, 1.902, 2.005, 2.151, 2.341, 2.587, 2.901, 3.296, 3.777, 4.35",\
                 "1.822, 1.861, 1.965, 2.111, 2.301, 2.547, 2.862, 3.256, 3.737, 4.31");
        }

        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.007437, 0.03003, 0.07318, 0.1404, 0.2347, 0.3588, 0.5152, 0.7061, 0.9336");
          values("1.622, 1.672, 1.81, 2.041, 2.395, 2.892, 3.546, 4.368, 5.372, 6.568",\
                 "1.637, 1.687, 1.826, 2.057, 2.411, 2.908, 3.562, 4.383, 5.388, 6.583",\
                 "1.693, 1.743, 1.881, 2.112, 2.466, 2.963, 3.617, 4.439, 5.443, 6.639",\
                 "1.789, 1.839, 1.977, 2.208, 2.563, 3.06, 3.712, 4.535, 5.539, 6.735",\
                 "1.882, 1.932, 2.07, 2.301, 2.655, 3.152, 3.806, 4.628, 5.631, 6.828",\
                 "1.952, 2.001, 2.14, 2.371, 2.725, 3.222, 3.876, 4.698, 5.702, 6.897",\
                 "1.999, 2.048, 2.186, 2.418, 2.772, 3.269, 3.922, 4.745, 5.748, 6.945",\
                 "2.023, 2.073, 2.211, 2.443, 2.797, 3.293, 3.946, 4.769, 5.773, 6.97",\
                 "2.021, 2.071, 2.209, 2.44, 2.794, 3.291, 3.944, 4.767, 5.77, 6.966",\
                 "1.989, 2.038, 2.177, 2.408, 2.762, 3.259, 3.912, 4.735, 5.739, 6.934");
        }

        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.007437, 0.03003, 0.07318, 0.1404, 0.2347, 0.3588, 0.5152, 0.7061, 0.9336");
          values("0.1488, 0.186, 0.2908, 0.4614, 0.7266, 1.116, 1.65, 2.332, 3.174, 4.177",\
                 "0.1484, 0.1854, 0.2916, 0.4606, 0.726, 1.116, 1.649, 2.334, 3.174, 4.174",\
                 "0.1486, 0.1858, 0.2916, 0.4618, 0.726, 1.116, 1.65, 2.331, 3.174, 4.178",\
                 "0.1488, 0.186, 0.2916, 0.4614, 0.7266, 1.116, 1.649, 2.332, 3.172, 4.174",\
                 "0.1488, 0.1856, 0.2918, 0.4614, 0.7266, 1.117, 1.65, 2.333, 3.174, 4.176",\
                 "0.1488, 0.1856, 0.291, 0.462, 0.726, 1.116, 1.65, 2.335, 3.174, 4.169",\
                 "0.1486, 0.1858, 0.2914, 0.4608, 0.7262, 1.115, 1.648, 2.334, 3.172, 4.177",\
                 "0.1486, 0.1854, 0.2908, 0.4614, 0.7264, 1.116, 1.648, 2.33, 3.167, 4.175",\
                 "0.1486, 0.1852, 0.2912, 0.4612, 0.7258, 1.116, 1.651, 2.331, 3.171, 4.167",\
                 "0.1484, 0.1856, 0.2914, 0.4614, 0.726, 1.116, 1.65, 2.33, 3.167, 4.169");
        }

        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.007437, 0.03003, 0.07318, 0.1404, 0.2347, 0.3588, 0.5152, 0.7061, 0.9336");
          values("0.1772, 0.2344, 0.416, 0.7958, 1.423, 2.311, 3.481, 4.958, 6.755, 8.909",\
                 "0.1778, 0.2342, 0.4164, 0.7962, 1.423, 2.31, 3.484, 4.957, 6.76, 8.912",\
                 "0.1774, 0.2346, 0.4162, 0.796, 1.423, 2.309, 3.479, 4.954, 6.755, 8.909",\
                 "0.1768, 0.2344, 0.416, 0.7976, 1.422, 2.311, 3.483, 4.955, 6.76, 8.91",\
                 "0.1772, 0.2342, 0.4162, 0.7962, 1.423, 2.311, 3.483, 4.955, 6.75, 8.898",\
                 "0.1766, 0.2334, 0.4162, 0.7958, 1.423, 2.31, 3.484, 4.958, 6.759, 8.912",\
                 "0.1772, 0.2338, 0.4158, 0.7962, 1.422, 2.31, 3.483, 4.952, 6.758, 8.903",\
                 "0.1772, 0.2344, 0.4158, 0.7962, 1.423, 2.31, 3.481, 4.95, 6.756, 8.903",\
                 "0.1768, 0.2338, 0.416, 0.7958, 1.423, 2.31, 3.485, 4.951, 6.758, 8.909",\
                 "0.1772, 0.2344, 0.4154, 0.7978, 1.423, 2.31, 3.478, 4.95, 6.751, 8.9");
        }
      }
    }
  }

