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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003237 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7.4 ;
      min_period : 1.361 ;
      min_pulse_width_high : 0.642 ;
      min_pulse_width_low : 0.684 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.148, 0.1478, 0.1517, 0.1673, 0.1972, 0.2427, 0.3045, 0.3835, \
                  0.4806, 0.5964");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1093, 0.1091, 0.1121, 0.125, 0.1503, 0.1897, 0.244, 0.3139, \
                  0.4, 0.5033");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1505, 0.1502, 0.1543, 0.1698, 0.1997, 0.2451, 0.3069, 0.3858, \
                  0.4828, 0.5986");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.1086, 0.1085, 0.1114, 0.1244, 0.1498, 0.1893, 0.2437, 0.3136, \
                  0.3997, 0.5029");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002432 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 7.4 ;
      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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.0888, 0.08821, 0.08885, 0.09495, 0.1083, 0.1291, 0.1579, 0.1948, \
                  0.2401, 0.2941");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.05782, 0.0581, 0.05983, 0.06546, 0.076, 0.09232, 0.1149, 0.144, \
                  0.1801, 0.2234");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.005312, 0.005314, 0.005309, 0.005315, 0.005312, 0.005321, 0.00532, \
                  0.005313, 0.005309, 0.005299");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("-0.00383, -0.003836, -0.003835, -0.003831, -0.003841, -0.003859, \
                  -0.003871, -0.00388, -0.003895, -0.003908");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.092, 0.101, 0.136, 0.187, 0.226, 0.238, 0.24, 0.22, 0.182, 0.113",\
                 "0.092, 0.099, 0.131, 0.178, 0.218, 0.236, 0.234, 0.215, 0.174, 0.112",\
                 "0.049, 0.056, 0.093, 0.138, 0.175, 0.197, 0.199, 0.177, 0.134, 0.068",\
                 "-0.047, -0.04, -0.009, 0.04, 0.078, 0.096, 0.1, 0.076, 0.035, -0.032",\
                 "-0.193, -0.184, -0.153, -0.106, -0.065, -0.05, -0.046, -0.073, -0.117, -0.187",\
                 "-0.375, -0.366, -0.331, -0.288, -0.248, -0.235, -0.244, -0.265, -0.314, -0.392",\
                 "-0.593, -0.586, -0.555, -0.509, -0.471, -0.469, -0.476, -0.509, -0.559, -0.631",\
                 "-0.861, -0.858, -0.825, -0.789, -0.749, -0.742, -0.757, -0.791, -0.842, -0.929",\
                 "-1.181, -1.176, -1.145, -1.109, -1.07, -1.073, -1.08, -1.123, -1.182, -1.276",\
                 "-1.545, -1.544, -1.515, -1.487, -1.45, -1.452, -1.47, -1.515, -1.568, -1.659");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.052, 0.061, 0.091, 0.129, 0.153, 0.162, 0.159, 0.143, 0.113, 0.068",\
                 "0.045, 0.053, 0.087, 0.126, 0.149, 0.164, 0.159, 0.142, 0.118, 0.075",\
                 "0.034, 0.045, 0.079, 0.117, 0.145, 0.152, 0.152, 0.14, 0.113, 0.068",\
                 "0.043, 0.047, 0.079, 0.122, 0.143, 0.147, 0.143, 0.128, 0.096, 0.045",\
                 "0.071, 0.083, 0.108, 0.144, 0.159, 0.163, 0.152, 0.132, 0.088, 0.034",\
                 "0.151, 0.156, 0.188, 0.217, 0.225, 0.225, 0.2, 0.172, 0.121, 0.061",\
                 "0.282, 0.288, 0.313, 0.343, 0.344, 0.331, 0.301, 0.268, 0.207, 0.139",\
                 "0.467, 0.474, 0.497, 0.521, 0.51, 0.491, 0.459, 0.416, 0.347, 0.269",\
                 "0.715, 0.723, 0.74, 0.759, 0.739, 0.713, 0.666, 0.616, 0.544, 0.458",\
                 "1.022, 1.031, 1.045, 1.058, 1.027, 0.989, 0.933, 0.874, 0.795, 0.707");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.315, 0.313, 0.27, 0.216, 0.177, 0.151, 0.15, 0.17, 0.219, 0.301",\
                 "0.321, 0.313, 0.275, 0.221, 0.178, 0.156, 0.154, 0.174, 0.223, 0.305",\
                 "0.362, 0.356, 0.315, 0.266, 0.224, 0.2, 0.195, 0.217, 0.267, 0.34",\
                 "0.482, 0.474, 0.439, 0.38, 0.339, 0.319, 0.317, 0.335, 0.381, 0.458",\
                 "0.681, 0.676, 0.636, 0.588, 0.541, 0.516, 0.513, 0.535, 0.584, 0.651",\
                 "0.95, 0.944, 0.907, 0.849, 0.812, 0.788, 0.776, 0.797, 0.84, 0.917",\
                 "1.291, 1.28, 1.241, 1.186, 1.146, 1.117, 1.112, 1.126, 1.172, 1.242",\
                 "1.681, 1.677, 1.634, 1.577, 1.532, 1.515, 1.501, 1.524, 1.566, 1.632",\
                 "2.14, 2.134, 2.091, 2.032, 1.988, 1.961, 1.949, 1.969, 2.016, 2.085",\
                 "2.671, 2.659, 2.619, 2.551, 2.505, 2.48, 2.469, 2.487, 2.525, 2.596");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          values("0.315, 0.306, 0.265, 0.208, 0.164, 0.146, 0.15, 0.17, 0.226, 0.31",\
                 "0.328, 0.313, 0.27, 0.213, 0.172, 0.151, 0.154, 0.179, 0.23, 0.314",\
                 "0.352, 0.345, 0.301, 0.24, 0.201, 0.183, 0.179, 0.206, 0.253, 0.331",\
                 "0.376, 0.369, 0.325, 0.271, 0.228, 0.204, 0.204, 0.231, 0.283, 0.361",\
                 "0.384, 0.375, 0.329, 0.273, 0.224, 0.21, 0.205, 0.234, 0.289, 0.373",\
                 "0.344, 0.339, 0.292, 0.236, 0.194, 0.178, 0.174, 0.207, 0.269, 0.353",\
                 "0.262, 0.264, 0.215, 0.161, 0.113, 0.095, 0.105, 0.138, 0.202, 0.293",\
                 "0.138, 0.127, 0.086, 0.03, -0.015, -0.024, -0.019, 0.02, 0.091, 0.186",\
                 "-0.046, -0.049, -0.095, -0.154, -0.19, -0.205, -0.196, -0.148, -0.074, 0.033",\
                 "-0.283, -0.287, -0.33, -0.39, -0.429, -0.442, -0.422, -0.371, -0.296, -0.185");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.7247 ;
      max_transition : 7.4 ;
      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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.005995, 0.02353, 0.05702, 0.1092, 0.1824, 0.2787, 0.4, 0.5482, 0.7247");
          values("0.2163, 0.2082, 0.1952, 0.1877, 0.1836, 0.1811, 0.1796, 0.1786, 0.178, 0.1774",\
                 "0.2163, 0.2082, 0.1951, 0.1875, 0.1836, 0.1811, 0.1795, 0.1786, 0.1779, 0.1774",\
                 "0.2165, 0.2083, 0.1953, 0.1878, 0.1838, 0.1813, 0.1798, 0.1788, 0.1781, 0.1776",\
                 "0.2172, 0.2091, 0.1961, 0.1885, 0.1844, 0.182, 0.1805, 0.1795, 0.1788, 0.1783",\
                 "0.2184, 0.2103, 0.1974, 0.1898, 0.1857, 0.1832, 0.1817, 0.1807, 0.1801, 0.1796",\
                 "0.22, 0.2118, 0.1987, 0.1912, 0.1871, 0.1846, 0.1832, 0.1821, 0.1815, 0.1811",\
                 "0.2218, 0.2137, 0.2006, 0.1931, 0.189, 0.1866, 0.185, 0.184, 0.1833, 0.1829",\
                 "0.2239, 0.2159, 0.2026, 0.1952, 0.1911, 0.1886, 0.1871, 0.1861, 0.1853, 0.1849",\
                 "0.2262, 0.2181, 0.205, 0.1975, 0.1933, 0.1909, 0.1894, 0.1884, 0.1877, 0.1872",\
                 "0.2287, 0.2205, 0.2074, 0.1998, 0.1956, 0.1932, 0.1916, 0.1907, 0.19, 0.1895");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.005995, 0.02353, 0.05702, 0.1092, 0.1824, 0.2787, 0.4, 0.5482, 0.7247");
          values("0.2174, 0.2089, 0.197, 0.189, 0.1847, 0.1834, 0.1835, 0.1838, 0.185, 0.19",\
                 "0.2173, 0.2088, 0.1966, 0.1888, 0.1844, 0.1832, 0.1829, 0.1835, 0.1847, 0.1894",\
                 "0.2173, 0.2089, 0.1967, 0.189, 0.1846, 0.1833, 0.1832, 0.1838, 0.1847, 0.1898",\
                 "0.2183, 0.2099, 0.1976, 0.1899, 0.1857, 0.1846, 0.1842, 0.1845, 0.1853, 0.1915",\
                 "0.22, 0.2114, 0.1995, 0.1913, 0.187, 0.1861, 0.1858, 0.186, 0.1877, 0.1936",\
                 "0.2225, 0.214, 0.202, 0.1944, 0.1902, 0.1888, 0.1885, 0.1887, 0.1893, 0.1974",\
                 "0.226, 0.2178, 0.2052, 0.1971, 0.1933, 0.1931, 0.192, 0.1919, 0.1932, 0.2014",\
                 "0.2306, 0.2223, 0.2098, 0.2011, 0.1967, 0.1958, 0.1977, 0.1983, 0.1989, 0.209",\
                 "0.2364, 0.2279, 0.2154, 0.2069, 0.2023, 0.1999, 0.2009, 0.2057, 0.2069, 0.2217",\
                 "0.2431, 0.2344, 0.2221, 0.2134, 0.209, 0.2054, 0.2058, 0.2084, 0.2144, 0.2377");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.005995, 0.02353, 0.05702, 0.1092, 0.1824, 0.2787, 0.4, 0.5482, 0.7247");
          values("0.7365, 0.7711, 0.8591, 0.9892, 1.167, 1.407, 1.72, 2.114, 2.597, 3.171",\
                 "0.7459, 0.7805, 0.8685, 0.9985, 1.177, 1.416, 1.73, 2.124, 2.606, 3.181",\
                 "0.7828, 0.8174, 0.9054, 1.035, 1.214, 1.453, 1.767, 2.161, 2.643, 3.217",\
                 "0.8383, 0.8728, 0.9607, 1.091, 1.269, 1.509, 1.822, 2.217, 2.699, 3.273",\
                 "0.8853, 0.9201, 1.008, 1.138, 1.316, 1.556, 1.869, 2.264, 2.745, 3.321",\
                 "0.9178, 0.9524, 1.04, 1.171, 1.349, 1.588, 1.902, 2.296, 2.778, 3.353",\
                 "0.9317, 0.9664, 1.054, 1.184, 1.363, 1.602, 1.915, 2.31, 2.792, 3.367",\
                 "0.9242, 0.9588, 1.047, 1.177, 1.355, 1.595, 1.908, 2.302, 2.784, 3.358",\
                 "0.8936, 0.9282, 1.016, 1.146, 1.325, 1.564, 1.878, 2.272, 2.754, 3.328",\
                 "0.8384, 0.8729, 0.9609, 1.091, 1.27, 1.509, 1.822, 2.217, 2.699, 3.273");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.005995, 0.02353, 0.05702, 0.1092, 0.1824, 0.2787, 0.4, 0.5482, 0.7247");
          values("0.8349, 0.8724, 0.9773, 1.16, 1.446, 1.848, 2.38, 3.051, 3.871, 4.849",\
                 "0.8442, 0.8817, 0.9861, 1.17, 1.455, 1.858, 2.389, 3.06, 3.88, 4.858",\
                 "0.8809, 0.9184, 1.023, 1.206, 1.492, 1.894, 2.426, 3.097, 3.916, 4.895",\
                 "0.9381, 0.9756, 1.08, 1.264, 1.549, 1.952, 2.483, 3.154, 3.973, 4.952",\
                 "0.9887, 1.026, 1.131, 1.314, 1.599, 2.002, 2.534, 3.204, 4.023, 5.001",\
                 "1.027, 1.065, 1.17, 1.353, 1.638, 2.041, 2.572, 3.242, 4.061, 5.041",\
                 "1.049, 1.087, 1.191, 1.375, 1.66, 2.063, 2.594, 3.265, 4.084, 5.063",\
                 "1.053, 1.09, 1.195, 1.378, 1.663, 2.066, 2.598, 3.268, 4.086, 5.063",\
                 "1.036, 1.074, 1.178, 1.361, 1.646, 2.049, 2.581, 3.251, 4.069, 5.045",\
                 "0.9972, 1.035, 1.14, 1.323, 1.608, 2.011, 2.542, 3.212, 4.03, 5.007");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.005995, 0.02353, 0.05702, 0.1092, 0.1824, 0.2787, 0.4, 0.5482, 0.7247");
          values("0.101, 0.1361, 0.2314, 0.3992, 0.667, 1.064, 1.596, 2.277, 3.104, 4.098",\
                 "0.101, 0.136, 0.2316, 0.3994, 0.6672, 1.062, 1.596, 2.278, 3.107, 4.1",\
                 "0.1009, 0.1358, 0.2314, 0.3996, 0.667, 1.064, 1.596, 2.276, 3.103, 4.099",\
                 "0.101, 0.136, 0.2318, 0.3992, 0.6672, 1.064, 1.596, 2.274, 3.108, 4.097",\
                 "0.1008, 0.1362, 0.2308, 0.399, 0.667, 1.062, 1.597, 2.278, 3.105, 4.099",\
                 "0.1008, 0.136, 0.231, 0.3988, 0.6666, 1.064, 1.598, 2.278, 3.106, 4.096",\
                 "0.101, 0.136, 0.2312, 0.3992, 0.6668, 1.062, 1.596, 2.273, 3.103, 4.096",\
                 "0.101, 0.1364, 0.231, 0.3996, 0.6676, 1.062, 1.596, 2.273, 3.102, 4.091",\
                 "0.101, 0.1362, 0.2312, 0.3988, 0.6674, 1.064, 1.599, 2.273, 3.105, 4.088",\
                 "0.1012, 0.1358, 0.2318, 0.3988, 0.667, 1.064, 1.595, 2.276, 3.103, 4.09");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.005995, 0.02353, 0.05702, 0.1092, 0.1824, 0.2787, 0.4, 0.5482, 0.7247");
          values("0.1109, 0.1552, 0.3131, 0.6346, 1.158, 1.903, 2.878, 4.115, 5.607, 7.4",\
                 "0.1105, 0.1552, 0.3139, 0.6358, 1.159, 1.904, 2.878, 4.114, 5.607, 7.4",\
                 "0.1106, 0.1552, 0.314, 0.6346, 1.159, 1.903, 2.878, 4.115, 5.607, 7.4",\
                 "0.111, 0.1552, 0.3134, 0.6346, 1.161, 1.903, 2.882, 4.106, 5.608, 7.4",\
                 "0.1104, 0.1546, 0.3142, 0.6346, 1.16, 1.904, 2.88, 4.109, 5.609, 7.399",\
                 "0.1102, 0.155, 0.313, 0.6344, 1.161, 1.904, 2.881, 4.111, 5.609, 7.4",\
                 "0.1106, 0.155, 0.3134, 0.6346, 1.159, 1.901, 2.881, 4.115, 5.608, 7.397",\
                 "0.1112, 0.1558, 0.3144, 0.6358, 1.159, 1.903, 2.876, 4.11, 5.616, 7.395",\
                 "0.1114, 0.1562, 0.3138, 0.6342, 1.16, 1.9, 2.877, 4.107, 5.609, 7.409",\
                 "0.1118, 0.1568, 0.3138, 0.635, 1.16, 1.904, 2.882, 4.109, 5.609, 7.399");
        }
      }
    }
  }

