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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003425 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5 ;
      min_period : 1.519 ;
      min_pulse_width_high : 0.754 ;
      min_pulse_width_low : 0.74 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.2311, 0.2306, 0.2313, 0.2378, 0.2532, 0.2775, 0.3118, 0.3567, \
                  0.4125, 0.4796");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.1778, 0.1774, 0.1775, 0.182, 0.1947, 0.2151, 0.2448, 0.2844, \
                  0.3343, 0.3945");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.2341, 0.2336, 0.2344, 0.2409, 0.2562, 0.2805, 0.3147, 0.3595, \
                  0.4152, 0.4821");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.1777, 0.1772, 0.1771, 0.1819, 0.1944, 0.2151, 0.2448, 0.2847, \
                  0.3342, 0.3946");
        }
      }

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

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

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

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

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

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

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

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

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

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

    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 : 5 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.122, 0.1213, 0.1205, 0.1227, 0.1295, 0.141, 0.1568, 0.1776, \
                  0.2037, 0.2351");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.08608, 0.08628, 0.08671, 0.08913, 0.09441, 0.1031, 0.1158, 0.1326, \
                  0.1538, 0.1796");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.007517, 0.007516, 0.007522, 0.007521, 0.007516, 0.007519, 0.007521, \
                  0.007522, 0.00752, 0.007526");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("-0.005022, -0.005032, -0.005025, -0.005047, -0.005077, -0.005092, \
                  -0.005129, -0.005123, -0.005148, -0.005153");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.126, 0.134, 0.159, 0.211, 0.264, 0.322, 0.365, 0.405, 0.428, 0.447",\
                 "0.12, 0.133, 0.161, 0.206, 0.261, 0.313, 0.359, 0.401, 0.43, 0.442",\
                 "0.1, 0.108, 0.133, 0.188, 0.24, 0.291, 0.339, 0.373, 0.407, 0.42",\
                 "0.036, 0.045, 0.066, 0.121, 0.177, 0.23, 0.277, 0.317, 0.34, 0.361",\
                 "-0.068, -0.064, -0.037, 0.018, 0.075, 0.125, 0.175, 0.211, 0.239, 0.254",\
                 "-0.206, -0.195, -0.172, -0.121, -0.067, -0.007, 0.033, 0.073, 0.1, 0.116",\
                 "-0.365, -0.353, -0.333, -0.282, -0.231, -0.171, -0.135, -0.095, -0.066, -0.05",\
                 "-0.555, -0.546, -0.523, -0.47, -0.424, -0.365, -0.329, -0.292, -0.27, -0.255",\
                 "-0.781, -0.767, -0.744, -0.695, -0.652, -0.593, -0.558, -0.521, -0.496, -0.484",\
                 "-1.035, -1.022, -1.001, -0.952, -0.905, -0.852, -0.819, -0.78, -0.762, -0.752");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.063, 0.071, 0.099, 0.139, 0.176, 0.213, 0.24, 0.262, 0.285, 0.286",\
                 "0.056, 0.063, 0.087, 0.131, 0.17, 0.209, 0.237, 0.264, 0.286, 0.286",\
                 "0.039, 0.052, 0.075, 0.117, 0.156, 0.195, 0.228, 0.253, 0.278, 0.28",\
                 "0.029, 0.038, 0.066, 0.111, 0.15, 0.185, 0.222, 0.245, 0.262, 0.274",\
                 "0.031, 0.038, 0.059, 0.112, 0.151, 0.185, 0.217, 0.246, 0.262, 0.268",\
                 "0.042, 0.051, 0.077, 0.124, 0.154, 0.19, 0.228, 0.249, 0.269, 0.269",\
                 "0.077, 0.084, 0.106, 0.151, 0.185, 0.219, 0.252, 0.265, 0.285, 0.287",\
                 "0.146, 0.156, 0.168, 0.215, 0.243, 0.275, 0.299, 0.32, 0.329, 0.329",\
                 "0.24, 0.252, 0.266, 0.312, 0.336, 0.36, 0.381, 0.398, 0.404, 0.396",\
                 "0.371, 0.381, 0.395, 0.443, 0.459, 0.48, 0.497, 0.509, 0.51, 0.499");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.303, 0.299, 0.272, 0.211, 0.149, 0.092, 0.035, -0.004, -0.047, -0.069",\
                 "0.306, 0.301, 0.275, 0.222, 0.15, 0.096, 0.037, -0.003, -0.036, -0.068",\
                 "0.332, 0.328, 0.3, 0.24, 0.177, 0.117, 0.062, 0.018, -0.021, -0.044",\
                 "0.405, 0.397, 0.371, 0.313, 0.247, 0.188, 0.133, 0.086, 0.051, 0.025",\
                 "0.53, 0.52, 0.494, 0.439, 0.37, 0.315, 0.262, 0.216, 0.178, 0.148",\
                 "0.701, 0.7, 0.668, 0.612, 0.546, 0.486, 0.43, 0.385, 0.348, 0.327",\
                 "0.916, 0.907, 0.878, 0.824, 0.765, 0.699, 0.648, 0.596, 0.564, 0.531",\
                 "1.17, 1.167, 1.14, 1.082, 1.02, 0.955, 0.899, 0.856, 0.821, 0.791",\
                 "1.468, 1.469, 1.437, 1.38, 1.317, 1.253, 1.196, 1.152, 1.111, 1.083",\
                 "1.809, 1.801, 1.772, 1.716, 1.653, 1.594, 1.536, 1.486, 1.446, 1.419");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          values("0.298, 0.292, 0.264, 0.198, 0.139, 0.085, 0.035, -0.004, -0.018, -0.038",\
                 "0.306, 0.301, 0.266, 0.208, 0.144, 0.088, 0.042, 0.004, -0.017, -0.031",\
                 "0.332, 0.328, 0.289, 0.232, 0.166, 0.117, 0.062, 0.025, -0.001, -0.013",\
                 "0.36, 0.356, 0.331, 0.268, 0.207, 0.151, 0.102, 0.054, 0.03, 0.011",\
                 "0.392, 0.388, 0.359, 0.298, 0.235, 0.181, 0.123, 0.083, 0.054, 0.035",\
                 "0.41, 0.402, 0.372, 0.312, 0.249, 0.19, 0.137, 0.093, 0.068, 0.052",\
                 "0.401, 0.396, 0.356, 0.301, 0.238, 0.187, 0.126, 0.09, 0.059, 0.041",\
                 "0.369, 0.358, 0.328, 0.269, 0.202, 0.154, 0.097, 0.055, 0.031, 0.01",\
                 "0.304, 0.295, 0.269, 0.205, 0.138, 0.094, 0.032, -0.007, -0.028, -0.047",\
                 "0.211, 0.205, 0.172, 0.115, 0.049, -0.006, -0.058, -0.095, -0.124, -0.139");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 1.015 ;
      max_transition : 5 ;
      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.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.007998, 0.03256, 0.07947, 0.1525, 0.2551, 0.39, 0.56, 0.7675, 1.015");
          values("0.5387, 0.526, 0.5109, 0.5038, 0.5009, 0.4987, 0.4982, 0.4975, 0.4973, 0.4972",\
                 "0.5387, 0.5261, 0.5106, 0.5034, 0.5, 0.4987, 0.4978, 0.4974, 0.4972, 0.4971",\
                 "0.5386, 0.5259, 0.5105, 0.5034, 0.5, 0.4988, 0.498, 0.4974, 0.4971, 0.4969",\
                 "0.5389, 0.5264, 0.5113, 0.5039, 0.5008, 0.4994, 0.4984, 0.498, 0.4976, 0.4976",\
                 "0.5394, 0.5271, 0.5116, 0.5044, 0.5014, 0.4998, 0.4992, 0.4986, 0.4982, 0.498",\
                 "0.5405, 0.5283, 0.5125, 0.5056, 0.5027, 0.5011, 0.5005, 0.5, 0.4995, 0.4991",\
                 "0.5414, 0.5287, 0.5136, 0.5069, 0.5038, 0.5019, 0.501, 0.5004, 0.5002, 0.5001",\
                 "0.5427, 0.5299, 0.5149, 0.5073, 0.5047, 0.5033, 0.5023, 0.5017, 0.5015, 0.5014",\
                 "0.544, 0.5314, 0.5163, 0.5087, 0.5055, 0.5041, 0.5031, 0.5028, 0.5025, 0.5023",\
                 "0.5456, 0.5327, 0.5176, 0.5101, 0.5071, 0.5056, 0.5045, 0.5044, 0.504, 0.5038");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.007998, 0.03256, 0.07947, 0.1525, 0.2551, 0.39, 0.56, 0.7675, 1.015");
          values("0.5835, 0.5729, 0.5556, 0.5439, 0.5377, 0.5359, 0.5401, 0.5426, 0.5458, 0.5506",\
                 "0.5833, 0.5723, 0.5553, 0.5434, 0.5378, 0.5369, 0.5397, 0.5445, 0.5486, 0.5512",\
                 "0.5834, 0.5732, 0.5555, 0.5436, 0.5373, 0.537, 0.5412, 0.5428, 0.5456, 0.5482",\
                 "0.5832, 0.5731, 0.5555, 0.5432, 0.5369, 0.5363, 0.54, 0.5425, 0.5448, 0.5506",\
                 "0.5835, 0.5733, 0.556, 0.5438, 0.5381, 0.5377, 0.5414, 0.5435, 0.5458, 0.5484",\
                 "0.5844, 0.5733, 0.5562, 0.544, 0.5385, 0.5373, 0.5419, 0.5436, 0.5499, 0.5534",\
                 "0.5853, 0.5734, 0.5573, 0.5463, 0.5398, 0.5377, 0.5423, 0.5462, 0.5512, 0.552",\
                 "0.5861, 0.5748, 0.5588, 0.5452, 0.5415, 0.5419, 0.5429, 0.5468, 0.5487, 0.5526",\
                 "0.5878, 0.5775, 0.5611, 0.5474, 0.5419, 0.541, 0.5479, 0.55, 0.5518, 0.5566",\
                 "0.591, 0.5805, 0.5636, 0.5495, 0.5432, 0.5422, 0.5459, 0.557, 0.5571, 0.5588");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.007998, 0.03256, 0.07947, 0.1525, 0.2551, 0.39, 0.56, 0.7675, 1.015");
          values("0.919, 0.9448, 1.012, 1.114, 1.255, 1.446, 1.698, 2.015, 2.402, 2.863",\
                 "0.926, 0.9515, 1.019, 1.12, 1.261, 1.453, 1.705, 2.022, 2.409, 2.87",\
                 "0.9529, 0.9787, 1.046, 1.148, 1.288, 1.48, 1.732, 2.049, 2.436, 2.897",\
                 "1.007, 1.033, 1.101, 1.202, 1.343, 1.535, 1.786, 2.103, 2.49, 2.951",\
                 "1.073, 1.099, 1.167, 1.268, 1.409, 1.601, 1.852, 2.169, 2.556, 3.017",\
                 "1.135, 1.16, 1.228, 1.329, 1.47, 1.662, 1.914, 2.231, 2.618, 3.079",\
                 "1.192, 1.217, 1.285, 1.386, 1.527, 1.719, 1.971, 2.288, 2.675, 3.136",\
                 "1.242, 1.268, 1.336, 1.437, 1.578, 1.77, 2.021, 2.338, 2.725, 3.186",\
                 "1.284, 1.31, 1.378, 1.479, 1.62, 1.812, 2.064, 2.381, 2.767, 3.229",\
                 "1.317, 1.343, 1.41, 1.512, 1.652, 1.844, 2.096, 2.413, 2.8, 3.261");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.007998, 0.03256, 0.07947, 0.1525, 0.2551, 0.39, 0.56, 0.7675, 1.015");
          values("0.9701, 0.9974, 1.073, 1.205, 1.41, 1.7, 2.083, 2.564, 3.152, 3.853",\
                 "0.9771, 1.004, 1.08, 1.211, 1.417, 1.707, 2.089, 2.571, 3.159, 3.86",\
                 "1.004, 1.031, 1.107, 1.238, 1.444, 1.734, 2.116, 2.598, 3.186, 3.887",\
                 "1.058, 1.085, 1.161, 1.292, 1.497, 1.788, 2.17, 2.651, 3.24, 3.941",\
                 "1.124, 1.151, 1.227, 1.358, 1.564, 1.854, 2.236, 2.718, 3.306, 4.007",\
                 "1.186, 1.213, 1.289, 1.42, 1.626, 1.915, 2.298, 2.779, 3.367, 4.069",\
                 "1.243, 1.27, 1.347, 1.478, 1.683, 1.973, 2.356, 2.837, 3.425, 4.127",\
                 "1.296, 1.323, 1.399, 1.53, 1.736, 2.026, 2.408, 2.889, 3.478, 4.179",\
                 "1.341, 1.368, 1.444, 1.575, 1.781, 2.071, 2.453, 2.934, 3.523, 4.224",\
                 "1.377, 1.405, 1.48, 1.612, 1.817, 2.107, 2.489, 2.971, 3.559, 4.26");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.007998, 0.03256, 0.07947, 0.1525, 0.2551, 0.39, 0.56, 0.7675, 1.015");
          values("0.07864, 0.1033, 0.176, 0.3012, 0.508, 0.8132, 1.222, 1.741, 2.373, 3.127",\
                 "0.0784, 0.1035, 0.1758, 0.3018, 0.5082, 0.8132, 1.223, 1.741, 2.373, 3.128",\
                 "0.0784, 0.1034, 0.1758, 0.3018, 0.5082, 0.8132, 1.223, 1.741, 2.374, 3.126",\
                 "0.0786, 0.1034, 0.1762, 0.3016, 0.508, 0.8144, 1.223, 1.741, 2.372, 3.127",\
                 "0.0786, 0.1034, 0.1758, 0.3016, 0.5078, 0.8142, 1.222, 1.741, 2.375, 3.128",\
                 "0.0784, 0.1034, 0.176, 0.3018, 0.508, 0.8142, 1.223, 1.74, 2.372, 3.127",\
                 "0.0784, 0.1032, 0.1758, 0.3014, 0.5078, 0.8132, 1.223, 1.742, 2.375, 3.131",\
                 "0.0784, 0.1034, 0.1758, 0.3014, 0.508, 0.8142, 1.222, 1.741, 2.373, 3.127",\
                 "0.0786, 0.1034, 0.1758, 0.3012, 0.508, 0.8138, 1.222, 1.741, 2.372, 3.127",\
                 "0.0786, 0.1034, 0.1758, 0.3012, 0.5084, 0.8136, 1.223, 1.741, 2.372, 3.125");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05437, 0.175, 0.4054, 0.7644, 1.268, 1.931, 2.766, 3.785, 5");
          index_2("0.001, 0.007998, 0.03256, 0.07947, 0.1525, 0.2551, 0.39, 0.56, 0.7675, 1.015");
          values("0.08498, 0.116, 0.2186, 0.4358, 0.7912, 1.292, 1.952, 2.781, 3.797, 5.007",\
                 "0.08458, 0.1152, 0.2184, 0.4354, 0.7898, 1.291, 1.95, 2.782, 3.798, 5.007",\
                 "0.0846, 0.1156, 0.2184, 0.4354, 0.7912, 1.291, 1.951, 2.779, 3.793, 5.001",\
                 "0.0852, 0.1154, 0.2184, 0.4358, 0.7902, 1.291, 1.95, 2.78, 3.795, 5.008",\
                 "0.0844, 0.1154, 0.2182, 0.4358, 0.79, 1.292, 1.951, 2.781, 3.794, 5.002",\
                 "0.085, 0.1156, 0.2184, 0.4356, 0.79, 1.291, 1.951, 2.782, 3.798, 5.009",\
                 "0.0848, 0.115, 0.2184, 0.4362, 0.7914, 1.293, 1.951, 2.783, 3.798, 5.011",\
                 "0.0848, 0.1152, 0.2184, 0.4354, 0.7906, 1.291, 1.951, 2.782, 3.795, 5.003",\
                 "0.0844, 0.1154, 0.2184, 0.4358, 0.791, 1.292, 1.948, 2.778, 3.797, 5.007",\
                 "0.0844, 0.1156, 0.2186, 0.4362, 0.791, 1.291, 1.95, 2.781, 3.792, 5.003");
        }
      }
    }
  }

