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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003182 ;
      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.721 ;
      min_pulse_width_high : 0.776 ;
      min_pulse_width_low : 0.86 ;
      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.1204, 0.12, 0.1208, 0.1266, 0.1385, 0.1573, 0.1837, 0.2179, \
                 0.2606, 0.3119");
        }

        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.09115, 0.09089, 0.09134, 0.09599, 0.1057, 0.1218, 0.1449, 0.175, \
                 0.2126, 0.2578");
        }
      }

      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.1223, 0.1219, 0.1227, 0.1285, 0.1404, 0.1591, 0.1855, 0.2198, \
                 0.2623, 0.3135");
        }

        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.09112, 0.0908, 0.09125, 0.09594, 0.1057, 0.1219, 0.1449, 0.1751, \
                 0.2126, 0.258");
        }
      }

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

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

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

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

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

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

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

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

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

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

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

        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.06689, 0.06631, 0.06599, 0.06819, 0.07382, 0.08251, 0.09447, \
                 0.1101, 0.1297, 0.1532");
        }

        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.04624, 0.04638, 0.04687, 0.04892, 0.0531, 0.0599, 0.06958, 0.08233, \
                 0.09827, 0.1176");
        }
      }

      internal_power() {
        when : "CLK" ;

        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.004373, 0.004372, 0.004373, 0.004367, 0.00437, 0.004377, 0.004371, \
                 0.00437, 0.004363, 0.004354");
        }

        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.00271, -0.002706, -0.002717, -0.002738, -0.002762, -0.002779, \
                 -0.002788, -0.002797, -0.002808, -0.002819");
        }
      }

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

        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.08, 0.097, 0.141, 0.207, 0.263, 0.301, 0.319, 0.313, 0.282, 0.226",\
                 "0.074, 0.087, 0.136, 0.207, 0.255, 0.294, 0.313, 0.302, 0.273, 0.219",\
                 "0.026, 0.042, 0.087, 0.161, 0.208, 0.252, 0.266, 0.261, 0.23, 0.177",\
                 "-0.089, -0.073, -0.033, 0.046, 0.095, 0.14, 0.156, 0.149, 0.119, 0.065",\
                 "-0.27, -0.255, -0.208, -0.132, -0.08, -0.04, -0.018, -0.024, -0.05, -0.108",\
                 "-0.486, -0.471, -0.43, -0.351, -0.302, -0.259, -0.241, -0.247, -0.274, -0.33",\
                 "-0.757, -0.741, -0.701, -0.625, -0.576, -0.527, -0.509, -0.52, -0.553, -0.609",\
                 "-1.075, -1.061, -1.019, -0.95, -0.901, -0.848, -0.827, -0.847, -0.875, -0.932",\
                 "-1.452, -1.438, -1.397, -1.335, -1.275, -1.23, -1.209, -1.225, -1.253, -1.316",\
                 "-1.892, -1.881, -1.844, -1.765, -1.72, -1.674, -1.645, -1.66, -1.692, -1.755");
        }

        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.04, 0.049, 0.093, 0.144, 0.174, 0.186, 0.184, 0.16, 0.122, 0.054",\
                 "0.026, 0.039, 0.082, 0.131, 0.162, 0.182, 0.175, 0.153, 0.113, 0.052",\
                 "0.004, 0.018, 0.063, 0.109, 0.148, 0.162, 0.166, 0.143, 0.106, 0.048",\
                 "0.002, 0.013, 0.054, 0.108, 0.137, 0.154, 0.156, 0.135, 0.093, 0.037",\
                 "0.013, 0.031, 0.07, 0.117, 0.148, 0.171, 0.165, 0.146, 0.102, 0.034",\
                 "0.067, 0.083, 0.125, 0.168, 0.198, 0.211, 0.197, 0.174, 0.129, 0.065",\
                 "0.17, 0.184, 0.232, 0.264, 0.287, 0.295, 0.283, 0.251, 0.204, 0.133",\
                 "0.336, 0.348, 0.385, 0.419, 0.44, 0.441, 0.413, 0.378, 0.327, 0.248",\
                 "0.554, 0.569, 0.605, 0.632, 0.636, 0.635, 0.605, 0.564, 0.505, 0.422",\
                 "0.831, 0.845, 0.88, 0.899, 0.908, 0.893, 0.859, 0.813, 0.749, 0.655");
        }
      }

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

        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.395, 0.388, 0.331, 0.256, 0.184, 0.142, 0.111, 0.112, 0.14, 0.196",\
                 "0.404, 0.389, 0.338, 0.254, 0.193, 0.148, 0.116, 0.121, 0.152, 0.2",\
                 "0.452, 0.438, 0.386, 0.309, 0.244, 0.196, 0.169, 0.168, 0.2, 0.248",\
                 "0.581, 0.575, 0.52, 0.437, 0.37, 0.329, 0.304, 0.299, 0.326, 0.378",\
                 "0.807, 0.788, 0.739, 0.654, 0.592, 0.548, 0.516, 0.514, 0.542, 0.592",\
                 "1.084, 1.072, 1.024, 0.937, 0.872, 0.831, 0.8, 0.803, 0.824, 0.873",\
                 "1.44, 1.427, 1.371, 1.294, 1.223, 1.18, 1.147, 1.145, 1.173, 1.223",\
                 "1.86, 1.843, 1.79, 1.712, 1.642, 1.606, 1.568, 1.568, 1.59, 1.635",\
                 "2.343, 2.329, 2.282, 2.199, 2.136, 2.084, 2.053, 2.049, 2.077, 2.118",\
                 "2.897, 2.887, 2.836, 2.749, 2.686, 2.638, 2.608, 2.602, 2.629, 2.671");
        }

        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.395, 0.381, 0.321, 0.238, 0.176, 0.142, 0.128, 0.129, 0.172, 0.238",\
                 "0.404, 0.397, 0.332, 0.254, 0.185, 0.148, 0.133, 0.139, 0.184, 0.247",\
                 "0.442, 0.432, 0.378, 0.292, 0.227, 0.189, 0.169, 0.174, 0.217, 0.274",\
                 "0.49, 0.488, 0.422, 0.345, 0.27, 0.234, 0.214, 0.212, 0.248, 0.306",\
                 "0.509, 0.502, 0.435, 0.359, 0.29, 0.259, 0.23, 0.232, 0.267, 0.324",\
                 "0.486, 0.477, 0.417, 0.337, 0.276, 0.232, 0.207, 0.213, 0.248, 0.311",\
                 "0.428, 0.424, 0.357, 0.286, 0.211, 0.177, 0.153, 0.159, 0.192, 0.26",\
                 "0.319, 0.308, 0.243, 0.169, 0.101, 0.065, 0.046, 0.046, 0.091, 0.159",\
                 "0.154, 0.137, 0.081, 0.006, -0.059, -0.106, -0.121, -0.112, -0.07, 0.001",\
                 "-0.076, -0.085, -0.145, -0.215, -0.287, -0.323, -0.338, -0.334, -0.289, -0.215");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.72 ;
      max_transition : 8.6 ;
      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.07922, 0.2871, 0.6841, 1.303, 2.17, 3.312, 4.751, 6.507, 8.6");
          index_2("0.001, 0.005962, 0.02338, 0.05664, 0.1085, 0.1812, 0.2769, 0.3974, 0.5446, 0.72");
          values("0.1523, 0.148, 0.1436, 0.1417, 0.1407, 0.1405, 0.14, 0.1399, 0.1398, 0.1397",\
                 "0.1522, 0.1479, 0.1435, 0.1415, 0.1407, 0.1404, 0.14, 0.1398, 0.1397, 0.1397",\
                 "0.1522, 0.1479, 0.1435, 0.1417, 0.1408, 0.1403, 0.14, 0.1399, 0.1398, 0.1397",\
                 "0.1526, 0.1483, 0.1439, 0.142, 0.1411, 0.1407, 0.1404, 0.1402, 0.1401, 0.1401",\
                 "0.1533, 0.149, 0.1446, 0.1426, 0.1418, 0.1414, 0.1412, 0.141, 0.1409, 0.1408",\
                 "0.1538, 0.1495, 0.145, 0.1432, 0.1423, 0.1419, 0.1415, 0.1414, 0.1413, 0.1412",\
                 "0.1545, 0.1502, 0.1458, 0.144, 0.143, 0.1426, 0.1422, 0.1421, 0.142, 0.1419",\
                 "0.1554, 0.1511, 0.1467, 0.1447, 0.1439, 0.1435, 0.1431, 0.143, 0.1429, 0.1428",\
                 "0.1562, 0.1519, 0.1474, 0.1456, 0.1446, 0.1442, 0.1439, 0.1437, 0.1437, 0.1436",\
                 "0.1573, 0.153, 0.1485, 0.1467, 0.1457, 0.1454, 0.145, 0.1448, 0.1447, 0.1446");
        }

        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.005962, 0.02338, 0.05664, 0.1085, 0.1812, 0.2769, 0.3974, 0.5446, 0.72");
          values("0.1472, 0.1436, 0.1389, 0.1367, 0.1359, 0.1368, 0.1379, 0.1393, 0.1407, 0.1482",\
                 "0.1473, 0.1436, 0.1387, 0.1367, 0.1359, 0.1369, 0.1377, 0.139, 0.1407, 0.1486",\
                 "0.1473, 0.1435, 0.1388, 0.1363, 0.136, 0.137, 0.1378, 0.1386, 0.1407, 0.1501",\
                 "0.1475, 0.1438, 0.139, 0.1367, 0.1366, 0.1369, 0.1383, 0.1395, 0.1412, 0.15",\
                 "0.148, 0.1442, 0.1394, 0.1371, 0.1366, 0.1375, 0.1382, 0.1392, 0.1424, 0.1517",\
                 "0.1486, 0.1451, 0.1401, 0.138, 0.1374, 0.1383, 0.1392, 0.1399, 0.1424, 0.1563",\
                 "0.1496, 0.1461, 0.141, 0.1383, 0.1391, 0.1397, 0.1406, 0.1423, 0.1436, 0.1613",\
                 "0.1509, 0.1472, 0.1425, 0.1395, 0.139, 0.141, 0.1431, 0.1437, 0.1444, 0.1683",\
                 "0.1524, 0.1488, 0.1439, 0.1413, 0.1406, 0.1411, 0.1432, 0.1458, 0.15, 0.1808",\
                 "0.1542, 0.1507, 0.1459, 0.1428, 0.1426, 0.1428, 0.143, 0.1459, 0.1549, 0.2023");
        }
      }

      timing() {
        related_pin : "CLK" ;
        timing_type : rising_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.005962, 0.02338, 0.05664, 0.1085, 0.1812, 0.2769, 0.3974, 0.5446, 0.72");
          values("0.9113, 0.9526, 1.056, 1.204, 1.406, 1.677, 2.031, 2.477, 3.021, 3.67",\
                 "0.9248, 0.966, 1.069, 1.218, 1.419, 1.69, 2.044, 2.49, 3.035, 3.684",\
                 "0.975, 1.016, 1.12, 1.268, 1.469, 1.74, 2.095, 2.54, 3.085, 3.733",\
                 "1.054, 1.095, 1.198, 1.347, 1.548, 1.819, 2.173, 2.619, 3.163, 3.812",\
                 "1.12, 1.162, 1.265, 1.413, 1.615, 1.886, 2.24, 2.686, 3.23, 3.879",\
                 "1.172, 1.213, 1.316, 1.465, 1.666, 1.937, 2.291, 2.737, 3.281, 3.931",\
                 "1.205, 1.246, 1.349, 1.498, 1.699, 1.97, 2.324, 2.77, 3.314, 3.962",\
                 "1.216, 1.257, 1.361, 1.509, 1.71, 1.981, 2.336, 2.781, 3.325, 3.974",\
                 "1.201, 1.242, 1.345, 1.494, 1.695, 1.966, 2.321, 2.766, 3.31, 3.959",\
                 "1.159, 1.201, 1.304, 1.453, 1.654, 1.925, 2.279, 2.725, 3.269, 3.918");
        }

        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.005962, 0.02338, 0.05664, 0.1085, 0.1812, 0.2769, 0.3974, 0.5446, 0.72");
          values("1.043, 1.09, 1.221, 1.445, 1.792, 2.28, 2.923, 3.732, 4.722, 5.902",\
                 "1.056, 1.103, 1.234, 1.458, 1.805, 2.294, 2.936, 3.746, 4.736, 5.916",\
                 "1.106, 1.153, 1.284, 1.508, 1.855, 2.343, 2.986, 3.796, 4.784, 5.962",\
                 "1.185, 1.232, 1.362, 1.586, 1.934, 2.422, 3.065, 3.874, 4.864, 6.044",\
                 "1.253, 1.3, 1.431, 1.655, 2.002, 2.491, 3.133, 3.943, 4.932, 6.111",\
                 "1.308, 1.355, 1.485, 1.709, 2.057, 2.545, 3.188, 3.998, 4.986, 6.164",\
                 "1.346, 1.393, 1.524, 1.748, 2.095, 2.583, 3.226, 4.036, 5.025, 6.205",\
                 "1.365, 1.411, 1.542, 1.766, 2.113, 2.602, 3.244, 4.054, 5.042, 6.223",\
                 "1.359, 1.406, 1.536, 1.76, 2.108, 2.596, 3.238, 4.048, 5.037, 6.214",\
                 "1.328, 1.375, 1.506, 1.73, 2.077, 2.565, 3.208, 4.017, 5.007, 6.185");
        }

        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.005962, 0.02338, 0.05664, 0.1085, 0.1812, 0.2769, 0.3974, 0.5446, 0.72");
          values("0.1077, 0.1465, 0.2546, 0.437, 0.7348, 1.172, 1.762, 2.511, 3.424, 4.52",\
                 "0.1078, 0.1466, 0.255, 0.437, 0.7332, 1.172, 1.762, 2.509, 3.424, 4.52",\
                 "0.1076, 0.1466, 0.2552, 0.4376, 0.7338, 1.172, 1.762, 2.51, 3.428, 4.519",\
                 "0.1076, 0.1466, 0.255, 0.4372, 0.7326, 1.17, 1.762, 2.511, 3.428, 4.52",\
                 "0.1078, 0.1466, 0.255, 0.4374, 0.7328, 1.172, 1.762, 2.51, 3.428, 4.514",\
                 "0.1076, 0.1466, 0.255, 0.4376, 0.734, 1.172, 1.762, 2.509, 3.429, 4.516",\
                 "0.1076, 0.1466, 0.2544, 0.4376, 0.7332, 1.171, 1.76, 2.507, 3.42, 4.516",\
                 "0.1076, 0.1468, 0.2544, 0.4368, 0.7326, 1.172, 1.76, 2.509, 3.419, 4.51",\
                 "0.1076, 0.1466, 0.2546, 0.437, 0.7326, 1.172, 1.76, 2.508, 3.422, 4.507",\
                 "0.1076, 0.1468, 0.2546, 0.4378, 0.7338, 1.172, 1.76, 2.509, 3.421, 4.509");
        }

        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.005962, 0.02338, 0.05664, 0.1085, 0.1812, 0.2769, 0.3974, 0.5446, 0.72");
          values("0.1168, 0.173, 0.357, 0.732, 1.344, 2.204, 3.34, 4.763, 6.509, 8.59",\
                 "0.1172, 0.173, 0.3568, 0.732, 1.344, 2.204, 3.335, 4.771, 6.51, 8.59",\
                 "0.1172, 0.1732, 0.3566, 0.732, 1.342, 2.205, 3.341, 4.766, 6.51, 8.586",\
                 "0.1176, 0.173, 0.357, 0.7316, 1.343, 2.205, 3.34, 4.763, 6.508, 8.59",\
                 "0.117, 0.1728, 0.3568, 0.7316, 1.345, 2.206, 3.341, 4.764, 6.506, 8.592",\
                 "0.1166, 0.173, 0.3566, 0.7316, 1.343, 2.206, 3.341, 4.766, 6.51, 8.585",\
                 "0.1166, 0.173, 0.3572, 0.7334, 1.342, 2.203, 3.338, 4.764, 6.508, 8.593",\
                 "0.1164, 0.1736, 0.357, 0.7318, 1.343, 2.204, 3.336, 4.767, 6.51, 8.59",\
                 "0.1164, 0.1738, 0.357, 0.7328, 1.343, 2.204, 3.342, 4.762, 6.506, 8.584",\
                 "0.117, 0.1732, 0.3572, 0.732, 1.343, 2.204, 3.339, 4.763, 6.504, 8.582");
        }
      }
    }
  }

