/*
 * 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_1) {
    area : 65.856000 ;

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

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

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

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

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

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

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

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

    pin(CLKN) {
      capacitance : 0.003448 ;
      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.29 ;
      min_pulse_width_high : 0.498 ;
      min_pulse_width_low : 0.525 ;
      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.1598, 0.1595, 0.1633, 0.1792, 0.21, 0.2569, 0.321, 0.4028, 0.5032, \
                  0.623");
        }

        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.1023, 0.102, 0.1051, 0.1186, 0.1446, 0.1851, 0.241, 0.3127, \
                  0.4014, 0.5077");
        }
      }

      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.1595, 0.1592, 0.163, 0.1789, 0.2097, 0.2566, 0.3206, 0.4025, \
                  0.5028, 0.6227");
        }

        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.1025, 0.1022, 0.1054, 0.1188, 0.1448, 0.1853, 0.2411, 0.313, \
                  0.4016, 0.5077");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002456 ;
      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 : "!CLKN" ;

        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.03109, 0.03102, 0.03582, 0.0484, 0.06988, 0.101, 0.1426, 0.1954, \
                  0.2602, 0.3376");
        }

        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.003294, 0.003351, 0.006626, 0.01653, 0.03425, 0.06058, 0.096, \
                  0.1411, 0.1966, 0.263");
        }
      }

      internal_power() {
        when : "CLKN" ;

        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.111, 0.111, 0.1144, 0.1261, 0.1487, 0.183, 0.2297, 0.2893, 0.3623, \
                  0.4496");
        }

        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.07156, 0.07165, 0.07462, 0.08418, 0.1019, 0.1292, 0.1669, 0.2156, \
                  0.276, 0.3486");
        }
      }

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

        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.052, 0.061, 0.111, 0.195, 0.298, 0.41, 0.549, 0.717, 0.906, 1.122",\
                 "0.039, 0.045, 0.098, 0.178, 0.286, 0.396, 0.54, 0.702, 0.89, 1.109",\
                 "-0.021, -0.01, 0.043, 0.117, 0.221, 0.336, 0.475, 0.641, 0.83, 1.042",\
                 "-0.121, -0.118, -0.066, 0.013, 0.106, 0.217, 0.352, 0.517, 0.701, 0.915",\
                 "-0.265, -0.253, -0.206, -0.134, -0.041, 0.064, 0.192, 0.351, 0.53, 0.735",\
                 "-0.435, -0.423, -0.376, -0.307, -0.225, -0.122, -0.005, 0.143, 0.32, 0.519",\
                 "-0.637, -0.623, -0.578, -0.518, -0.431, -0.346, -0.231, -0.095, 0.069, 0.262",\
                 "-0.871, -0.864, -0.819, -0.76, -0.691, -0.61, -0.504, -0.366, -0.218, -0.034",\
                 "-1.147, -1.141, -1.094, -1.041, -0.98, -0.91, -0.815, -0.685, -0.544, -0.366",\
                 "-1.455, -1.444, -1.404, -1.361, -1.311, -1.251, -1.162, -1.047, -0.908, -0.741");
        }

        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.166, 0.181, 0.231, 0.334, 0.463, 0.617, 0.791, 0.989, 1.215, 1.464",\
                 "0.159, 0.175, 0.224, 0.326, 0.45, 0.608, 0.779, 0.983, 1.21, 1.463",\
                 "0.14, 0.149, 0.201, 0.304, 0.436, 0.588, 0.759, 0.965, 1.188, 1.441",\
                 "0.134, 0.152, 0.199, 0.298, 0.431, 0.581, 0.752, 0.957, 1.177, 1.428",\
                 "0.157, 0.172, 0.224, 0.32, 0.447, 0.606, 0.779, 0.98, 1.202, 1.45",\
                 "0.216, 0.228, 0.278, 0.377, 0.508, 0.657, 0.831, 1.033, 1.254, 1.502",\
                 "0.326, 0.341, 0.384, 0.482, 0.602, 0.752, 0.923, 1.129, 1.346, 1.593",\
                 "0.482, 0.495, 0.54, 0.631, 0.747, 0.892, 1.058, 1.257, 1.473, 1.723",\
                 "0.701, 0.717, 0.754, 0.835, 0.944, 1.075, 1.233, 1.438, 1.653, 1.903",\
                 "0.977, 0.994, 1.026, 1.096, 1.186, 1.319, 1.47, 1.667, 1.875, 2.119");
        }
      }

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

        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.343, 0.333, 0.275, 0.191, 0.085, -0.036, -0.174, -0.338, -0.519, -0.725",\
                 "0.355, 0.343, 0.292, 0.204, 0.096, -0.025, -0.16, -0.324, -0.508, -0.71",\
                 "0.412, 0.4, 0.351, 0.261, 0.155, 0.032, -0.105, -0.264, -0.45, -0.652",\
                 "0.532, 0.526, 0.465, 0.38, 0.274, 0.147, 0.013, -0.152, -0.33, -0.529",\
                 "0.701, 0.69, 0.636, 0.551, 0.441, 0.317, 0.175, 0.022, -0.162, -0.364",\
                 "0.925, 0.918, 0.862, 0.773, 0.66, 0.535, 0.39, 0.236, 0.06, -0.145",\
                 "1.203, 1.198, 1.138, 1.047, 0.928, 0.796, 0.657, 0.501, 0.319, 0.126",\
                 "1.538, 1.522, 1.462, 1.369, 1.243, 1.113, 0.96, 0.802, 0.627, 0.434",\
                 "1.913, 1.906, 1.84, 1.745, 1.611, 1.472, 1.321, 1.158, 0.981, 0.787",\
                 "2.347, 2.342, 2.267, 2.164, 2.022, 1.877, 1.723, 1.564, 1.39, 1.192");
        }

        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.183, 0.172, 0.12, 0.027, -0.094, -0.248, -0.409, -0.604, -0.816, -1.068",\
                 "0.195, 0.183, 0.127, 0.039, -0.088, -0.237, -0.406, -0.604, -0.814, -1.055",\
                 "0.221, 0.208, 0.158, 0.064, -0.06, -0.208, -0.381, -0.577, -0.786, -1.033",\
                 "0.261, 0.247, 0.19, 0.095, -0.032, -0.179, -0.353, -0.546, -0.761, -1.013",\
                 "0.278, 0.266, 0.214, 0.115, -0.018, -0.172, -0.342, -0.543, -0.759, -1.007",\
                 "0.273, 0.257, 0.208, 0.108, -0.02, -0.179, -0.358, -0.559, -0.774, -1.027",\
                 "0.24, 0.226, 0.168, 0.074, -0.056, -0.221, -0.399, -0.597, -0.82, -1.076",\
                 "0.169, 0.153, 0.102, -0.005, -0.131, -0.294, -0.467, -0.673, -0.901, -1.157",\
                 "0.064, 0.049, -0.009, -0.109, -0.24, -0.396, -0.579, -0.784, -1.014, -1.265",\
                 "-0.085, -0.097, -0.154, -0.264, -0.393, -0.548, -0.73, -0.936, -1.159, -1.421");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.3346 ;
      max_transition : 7.4 ;
      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.07094, 0.2497, 0.5912, 1.123, 1.87, 2.852, 4.089, 5.6, 7.4");
          index_2("0.001, 0.003303, 0.01139, 0.02682, 0.05087, 0.08462, 0.129, 0.185, 0.2533, 0.3346");
          values("0.1993, 0.1972, 0.1941, 0.1923, 0.1912, 0.1906, 0.1902, 0.1899, 0.1897, 0.1896",\
                 "0.1993, 0.1972, 0.1942, 0.1922, 0.1912, 0.1906, 0.1902, 0.1899, 0.1897, 0.1896",\
                 "0.1993, 0.1974, 0.1942, 0.1924, 0.1912, 0.1906, 0.1902, 0.19, 0.1898, 0.1896",\
                 "0.2009, 0.1989, 0.1958, 0.1939, 0.1928, 0.1922, 0.1918, 0.1916, 0.1914, 0.1912",\
                 "0.2048, 0.2028, 0.1996, 0.1977, 0.1967, 0.1961, 0.1957, 0.1954, 0.1952, 0.1951",\
                 "0.2107, 0.2086, 0.2056, 0.2036, 0.2026, 0.2019, 0.2015, 0.2012, 0.2011, 0.2009",\
                 "0.2184, 0.2163, 0.2132, 0.2111, 0.2098, 0.2092, 0.2088, 0.2085, 0.2083, 0.2082",\
                 "0.2274, 0.2253, 0.222, 0.2199, 0.2187, 0.218, 0.2176, 0.2173, 0.2171, 0.2169",\
                 "0.238, 0.2358, 0.2323, 0.23, 0.2288, 0.228, 0.2276, 0.2273, 0.2271, 0.2269",\
                 "0.2496, 0.2473, 0.2437, 0.2414, 0.24, 0.2393, 0.2388, 0.2384, 0.2382, 0.238");
        }

        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.003303, 0.01139, 0.02682, 0.05087, 0.08462, 0.129, 0.185, 0.2533, 0.3346");
          values("0.2659, 0.2639, 0.2608, 0.259, 0.2581, 0.2583, 0.2585, 0.259, 0.2599, 0.2618",\
                 "0.2659, 0.264, 0.2609, 0.2591, 0.2582, 0.2584, 0.2586, 0.2591, 0.2599, 0.2617",\
                 "0.2664, 0.2645, 0.2613, 0.2594, 0.2586, 0.2588, 0.259, 0.2595, 0.2604, 0.2625",\
                 "0.268, 0.2662, 0.2629, 0.2613, 0.2604, 0.2606, 0.2609, 0.2613, 0.2618, 0.2649",\
                 "0.2714, 0.2697, 0.2666, 0.2647, 0.2638, 0.264, 0.2643, 0.2647, 0.2657, 0.2686",\
                 "0.2756, 0.2739, 0.2712, 0.269, 0.2681, 0.2683, 0.2686, 0.2688, 0.2694, 0.2735",\
                 "0.2816, 0.2795, 0.2763, 0.2746, 0.2741, 0.2742, 0.2745, 0.2746, 0.2754, 0.2802",\
                 "0.288, 0.2861, 0.2827, 0.2811, 0.2804, 0.2809, 0.2811, 0.2814, 0.2821, 0.2887",\
                 "0.2948, 0.2926, 0.2894, 0.288, 0.2867, 0.2868, 0.2881, 0.289, 0.2898, 0.2997",\
                 "0.3016, 0.2998, 0.2966, 0.2945, 0.2935, 0.293, 0.2937, 0.2955, 0.2979, 0.3139");
        }
      }

      timing() {
        related_pin : "CLKN" ;
        timing_type : falling_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.003303, 0.01139, 0.02682, 0.05087, 0.08462, 0.129, 0.185, 0.2533, 0.3346");
          values("0.642, 0.6684, 0.742, 0.857, 1.018, 1.237, 1.526, 1.89, 2.334, 2.864",\
                 "0.6547, 0.681, 0.7547, 0.8695, 1.03, 1.25, 1.539, 1.903, 2.347, 2.877",\
                 "0.7074, 0.7337, 0.8074, 0.9223, 1.083, 1.303, 1.591, 1.955, 2.399, 2.93",\
                 "0.8106, 0.837, 0.9106, 1.026, 1.186, 1.406, 1.695, 2.059, 2.503, 3.033",\
                 "0.9482, 0.9746, 1.048, 1.163, 1.324, 1.544, 1.833, 2.197, 2.641, 3.17",\
                 "1.112, 1.138, 1.212, 1.327, 1.488, 1.708, 1.996, 2.36, 2.804, 3.334",\
                 "1.299, 1.326, 1.399, 1.514, 1.675, 1.895, 2.184, 2.547, 2.991, 3.521",\
                 "1.509, 1.535, 1.609, 1.724, 1.885, 2.105, 2.393, 2.757, 3.201, 3.73",\
                 "1.742, 1.768, 1.842, 1.958, 2.118, 2.338, 2.627, 2.99, 3.434, 3.964",\
                 "1.999, 2.025, 2.099, 2.215, 2.375, 2.595, 2.884, 3.247, 3.691, 4.221");
        }

        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.003303, 0.01139, 0.02682, 0.05087, 0.08462, 0.129, 0.185, 0.2533, 0.3346");
          values("0.8078, 0.8393, 0.9387, 1.122, 1.407, 1.808, 2.337, 3.003, 3.818, 4.79",\
                 "0.8206, 0.8519, 0.9514, 1.134, 1.42, 1.821, 2.349, 3.016, 3.831, 4.802",\
                 "0.8742, 0.9056, 1.005, 1.188, 1.473, 1.875, 2.403, 3.069, 3.884, 4.856",\
                 "0.9801, 1.012, 1.111, 1.294, 1.579, 1.981, 2.51, 3.176, 3.989, 4.959",\
                 "1.125, 1.157, 1.256, 1.439, 1.724, 2.126, 2.654, 3.32, 4.135, 5.107",\
                 "1.299, 1.331, 1.431, 1.614, 1.899, 2.3, 2.828, 3.495, 4.31, 5.282",\
                 "1.499, 1.53, 1.63, 1.813, 2.098, 2.5, 3.028, 3.695, 4.51, 5.481",\
                 "1.721, 1.752, 1.852, 2.035, 2.32, 2.721, 3.249, 3.915, 4.73, 5.701",\
                 "1.965, 1.996, 2.095, 2.278, 2.563, 2.964, 3.493, 4.159, 4.973, 5.943",\
                 "2.232, 2.263, 2.363, 2.545, 2.83, 3.231, 3.76, 4.427, 5.24, 6.209");
        }

        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.003303, 0.01139, 0.02682, 0.05087, 0.08462, 0.129, 0.185, 0.2533, 0.3346");
          values("0.096, 0.1239, 0.2104, 0.3647, 0.6155, 0.9858, 1.481, 2.108, 2.874, 3.784",\
                 "0.09616, 0.1239, 0.2109, 0.3646, 0.6152, 0.9864, 1.48, 2.107, 2.872, 3.787",\
                 "0.09604, 0.1242, 0.2106, 0.3646, 0.6152, 0.9852, 1.479, 2.107, 2.872, 3.787",\
                 "0.0962, 0.1238, 0.211, 0.3648, 0.6154, 0.9862, 1.479, 2.108, 2.872, 3.787",\
                 "0.0964, 0.1238, 0.2108, 0.3648, 0.6158, 0.9844, 1.482, 2.107, 2.873, 3.779",\
                 "0.0966, 0.1242, 0.211, 0.365, 0.6154, 0.984, 1.481, 2.108, 2.873, 3.786",\
                 "0.0972, 0.1244, 0.212, 0.3654, 0.616, 0.9846, 1.478, 2.106, 2.872, 3.785",\
                 "0.0978, 0.1256, 0.2124, 0.3654, 0.616, 0.9854, 1.479, 2.104, 2.867, 3.78",\
                 "0.0984, 0.126, 0.2124, 0.3658, 0.616, 0.9864, 1.482, 2.105, 2.868, 3.778",\
                 "0.099, 0.1268, 0.2132, 0.366, 0.6156, 0.9864, 1.479, 2.106, 2.869, 3.781");
        }

        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.003303, 0.01139, 0.02682, 0.05087, 0.08462, 0.129, 0.185, 0.2533, 0.3346");
          values("0.1183, 0.1632, 0.3273, 0.6563, 1.178, 1.914, 2.889, 4.114, 5.598, 7.373",\
                 "0.1184, 0.1634, 0.3275, 0.6562, 1.178, 1.914, 2.889, 4.114, 5.598, 7.372",\
                 "0.1186, 0.1636, 0.3274, 0.655, 1.178, 1.914, 2.889, 4.114, 5.598, 7.371",\
                 "0.1188, 0.1634, 0.3274, 0.6548, 1.18, 1.917, 2.884, 4.106, 5.596, 7.378",\
                 "0.1176, 0.1628, 0.3272, 0.655, 1.179, 1.914, 2.889, 4.114, 5.598, 7.373",\
                 "0.1176, 0.163, 0.3276, 0.6548, 1.178, 1.914, 2.889, 4.111, 5.597, 7.377",\
                 "0.1178, 0.1632, 0.3274, 0.6552, 1.179, 1.914, 2.886, 4.111, 5.597, 7.376",\
                 "0.1182, 0.1626, 0.3274, 0.656, 1.18, 1.915, 2.884, 4.111, 5.597, 7.377",\
                 "0.1174, 0.1628, 0.3272, 0.6554, 1.178, 1.914, 2.884, 4.105, 5.599, 7.374",\
                 "0.1174, 0.1624, 0.3272, 0.655, 1.179, 1.917, 2.889, 4.108, 5.597, 7.375");
        }
      }
    }
  }

