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

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

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

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

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

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

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

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

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

    pin(CLK) {
      capacitance : 0.003222 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5.2 ;
      min_period : 0.926 ;
      min_pulse_width_high : 0.389 ;
      min_pulse_width_low : 0.467 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1428, 0.1425, 0.1451, 0.1565, 0.1781, 0.2115, 0.2572, 0.3158, \
                  0.3879, 0.474");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1049, 0.1045, 0.1064, 0.1157, 0.1338, 0.1625, 0.2025, 0.254, \
                  0.3175, 0.3938");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1449, 0.1446, 0.1473, 0.1586, 0.1803, 0.2136, 0.2592, 0.3177, \
                  0.3897, 0.4757");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.1046, 0.1043, 0.1062, 0.1157, 0.1338, 0.1625, 0.2026, 0.2541, \
                  0.3177, 0.394");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002426 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 5.2 ;
      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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.08125, 0.08057, 0.0809, 0.08561, 0.09578, 0.1112, 0.1327, 0.1605, \
                  0.1948, 0.2359");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.05438, 0.05451, 0.05573, 0.05988, 0.06783, 0.08041, 0.0977, \
                  0.1203, 0.1481, 0.1816");
        }
      }

      internal_power() {
        when : "CLK" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.005379, 0.005374, 0.005381, 0.00537, 0.00538, 0.005368, 0.005385, \
                  0.005379, 0.005381, 0.005377");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("-0.003828, -0.003843, -0.003845, -0.003859, -0.003874, -0.003894, \
                  -0.003901, -0.003917, -0.003923, -0.003931");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.057, 0.065, 0.091, 0.122, 0.156, 0.175, 0.179, 0.176, 0.158, 0.123",\
                 "0.05, 0.057, 0.088, 0.12, 0.149, 0.17, 0.18, 0.176, 0.158, 0.122",\
                 "0.022, 0.035, 0.059, 0.095, 0.125, 0.144, 0.15, 0.146, 0.131, 0.092",\
                 "-0.05, -0.043, -0.014, 0.02, 0.058, 0.079, 0.084, 0.079, 0.062, 0.023",\
                 "-0.156, -0.149, -0.12, -0.079, -0.053, -0.032, -0.02, -0.021, -0.044, -0.081",\
                 "-0.288, -0.277, -0.252, -0.211, -0.181, -0.163, -0.159, -0.164, -0.18, -0.221",\
                 "-0.448, -0.441, -0.414, -0.375, -0.347, -0.32, -0.326, -0.328, -0.351, -0.384",\
                 "-0.642, -0.64, -0.613, -0.571, -0.542, -0.52, -0.522, -0.528, -0.545, -0.587",\
                 "-0.87, -0.865, -0.839, -0.803, -0.77, -0.751, -0.754, -0.756, -0.782, -0.823",\
                 "-1.139, -1.131, -1.105, -1.065, -1.035, -1.02, -1.017, -1.026, -1.05, -1.094");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.029, 0.033, 0.056, 0.082, 0.095, 0.108, 0.104, 0.094, 0.069, 0.033",\
                 "0.025, 0.029, 0.05, 0.078, 0.091, 0.101, 0.104, 0.094, 0.068, 0.038",\
                 "0.013, 0.016, 0.041, 0.071, 0.085, 0.095, 0.098, 0.091, 0.069, 0.033",\
                 "0.01, 0.012, 0.034, 0.062, 0.085, 0.098, 0.097, 0.087, 0.062, 0.023",\
                 "0.021, 0.024, 0.048, 0.073, 0.095, 0.097, 0.103, 0.09, 0.062, 0.022",\
                 "0.058, 0.061, 0.087, 0.109, 0.12, 0.122, 0.127, 0.107, 0.079, 0.033",\
                 "0.128, 0.132, 0.15, 0.174, 0.185, 0.185, 0.176, 0.155, 0.122, 0.08",\
                 "0.232, 0.237, 0.251, 0.272, 0.279, 0.269, 0.262, 0.24, 0.201, 0.156",\
                 "0.367, 0.372, 0.383, 0.404, 0.407, 0.393, 0.381, 0.355, 0.315, 0.257",\
                 "0.545, 0.551, 0.562, 0.576, 0.571, 0.562, 0.542, 0.509, 0.459, 0.406");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.195, 0.191, 0.162, 0.122, 0.087, 0.058, 0.047, 0.047, 0.07, 0.108",\
                 "0.2, 0.191, 0.167, 0.123, 0.092, 0.061, 0.05, 0.05, 0.073, 0.111",\
                 "0.231, 0.22, 0.194, 0.156, 0.118, 0.095, 0.08, 0.08, 0.101, 0.139",\
                 "0.314, 0.301, 0.274, 0.233, 0.198, 0.174, 0.162, 0.163, 0.177, 0.218",\
                 "0.439, 0.431, 0.405, 0.363, 0.33, 0.304, 0.293, 0.289, 0.307, 0.344",\
                 "0.619, 0.608, 0.583, 0.539, 0.503, 0.476, 0.462, 0.462, 0.478, 0.515",\
                 "0.835, 0.824, 0.794, 0.754, 0.721, 0.691, 0.678, 0.679, 0.694, 0.725",\
                 "1.087, 1.083, 1.049, 1.013, 0.975, 0.949, 0.933, 0.931, 0.953, 0.988",\
                 "1.385, 1.375, 1.343, 1.307, 1.268, 1.243, 1.228, 1.23, 1.24, 1.274",\
                 "1.717, 1.707, 1.681, 1.644, 1.607, 1.576, 1.56, 1.563, 1.574, 1.606");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          values("0.189, 0.172, 0.153, 0.109, 0.077, 0.058, 0.047, 0.062, 0.09, 0.134",\
                 "0.2, 0.184, 0.167, 0.117, 0.086, 0.061, 0.05, 0.065, 0.093, 0.137",\
                 "0.214, 0.21, 0.182, 0.14, 0.107, 0.079, 0.069, 0.08, 0.101, 0.145",\
                 "0.235, 0.224, 0.201, 0.16, 0.129, 0.099, 0.086, 0.097, 0.117, 0.163",\
                 "0.237, 0.232, 0.207, 0.162, 0.13, 0.103, 0.091, 0.104, 0.126, 0.168",\
                 "0.228, 0.216, 0.186, 0.144, 0.108, 0.088, 0.075, 0.081, 0.109, 0.157",\
                 "0.174, 0.164, 0.138, 0.097, 0.067, 0.043, 0.03, 0.045, 0.076, 0.122",\
                 "0.102, 0.086, 0.06, 0.02, -0.012, -0.034, -0.044, -0.035, -0.001, 0.05",\
                 "-0.02, -0.032, -0.054, -0.09, -0.126, -0.147, -0.155, -0.139, -0.104, -0.048",\
                 "-0.166, -0.182, -0.205, -0.246, -0.279, -0.301, -0.306, -0.284, -0.244, -0.188");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.3553 ;
      max_transition : 5.2 ;
      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.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.003445, 0.01203, 0.02842, 0.05396, 0.08979, 0.1369, 0.1963, 0.2689, 0.3553");
          values("0.133, 0.1318, 0.1301, 0.1292, 0.1288, 0.1285, 0.1283, 0.1283, 0.1282, 0.1282",\
                 "0.1331, 0.1317, 0.1301, 0.1293, 0.1288, 0.1285, 0.1284, 0.1283, 0.1283, 0.1282",\
                 "0.1333, 0.132, 0.1303, 0.1294, 0.129, 0.1287, 0.1285, 0.1285, 0.1284, 0.1284",\
                 "0.134, 0.1326, 0.1309, 0.1301, 0.1296, 0.1294, 0.1292, 0.1291, 0.1291, 0.129",\
                 "0.1349, 0.1336, 0.1318, 0.131, 0.1306, 0.1304, 0.1302, 0.1301, 0.1301, 0.13",\
                 "0.1361, 0.1347, 0.133, 0.1322, 0.1318, 0.1314, 0.1313, 0.1312, 0.1311, 0.1311",\
                 "0.1374, 0.136, 0.1342, 0.1334, 0.1331, 0.1327, 0.1326, 0.1325, 0.1324, 0.1324",\
                 "0.1388, 0.1374, 0.1356, 0.1348, 0.1343, 0.1342, 0.1339, 0.1338, 0.1338, 0.1337",\
                 "0.1403, 0.1389, 0.1372, 0.1363, 0.1359, 0.1356, 0.1355, 0.1354, 0.1353, 0.1353",\
                 "0.1421, 0.1407, 0.139, 0.1381, 0.1378, 0.1375, 0.1372, 0.1371, 0.1371, 0.137");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.003445, 0.01203, 0.02842, 0.05396, 0.08979, 0.1369, 0.1963, 0.2689, 0.3553");
          values("0.1327, 0.1311, 0.1289, 0.1279, 0.1273, 0.1276, 0.1283, 0.1291, 0.1294, 0.131",\
                 "0.1326, 0.1312, 0.1289, 0.1275, 0.1272, 0.1276, 0.1282, 0.1289, 0.1293, 0.1302",\
                 "0.1327, 0.1313, 0.129, 0.1278, 0.1274, 0.1274, 0.1284, 0.129, 0.1296, 0.1309",\
                 "0.1334, 0.1318, 0.1296, 0.1283, 0.1282, 0.128, 0.129, 0.1296, 0.1302, 0.1318",\
                 "0.1343, 0.1329, 0.1306, 0.1294, 0.1291, 0.1291, 0.13, 0.1307, 0.1319, 0.132",\
                 "0.136, 0.1344, 0.1319, 0.1313, 0.1307, 0.1306, 0.1315, 0.1322, 0.133, 0.1343",\
                 "0.138, 0.1365, 0.1341, 0.1324, 0.133, 0.1333, 0.1334, 0.1342, 0.1351, 0.1362",\
                 "0.1405, 0.139, 0.1368, 0.1355, 0.1353, 0.1356, 0.1372, 0.1371, 0.1376, 0.1383",\
                 "0.1434, 0.142, 0.1395, 0.1384, 0.1379, 0.1376, 0.1389, 0.1413, 0.1413, 0.1418",\
                 "0.1467, 0.1451, 0.1431, 0.1413, 0.1412, 0.1413, 0.1417, 0.1432, 0.1457, 0.1468");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.003445, 0.01203, 0.02842, 0.05396, 0.08979, 0.1369, 0.1963, 0.2689, 0.3553");
          values("0.4946, 0.514, 0.5676, 0.6522, 0.7754, 0.9461, 1.171, 1.454, 1.799, 2.211",\
                 "0.5018, 0.5211, 0.5747, 0.6594, 0.7824, 0.9531, 1.178, 1.461, 1.806, 2.218",\
                 "0.5291, 0.5484, 0.6021, 0.6867, 0.8097, 0.9805, 1.205, 1.488, 1.834, 2.246",\
                 "0.5709, 0.5903, 0.6439, 0.7286, 0.8516, 1.022, 1.247, 1.53, 1.876, 2.287",\
                 "0.6074, 0.6268, 0.6805, 0.7652, 0.8883, 1.059, 1.284, 1.567, 1.912, 2.324",\
                 "0.6364, 0.6557, 0.7094, 0.794, 0.917, 1.088, 1.312, 1.595, 1.941, 2.353",\
                 "0.654, 0.6733, 0.7269, 0.8116, 0.9346, 1.105, 1.33, 1.613, 1.958, 2.37",\
                 "0.6581, 0.6772, 0.7309, 0.8155, 0.9386, 1.109, 1.334, 1.617, 1.962, 2.374",\
                 "0.6467, 0.666, 0.7197, 0.8044, 0.9273, 1.098, 1.323, 1.606, 1.951, 2.363",\
                 "0.6196, 0.6389, 0.6926, 0.7772, 0.9002, 1.071, 1.296, 1.578, 1.924, 2.336");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.003445, 0.01203, 0.02842, 0.05396, 0.08979, 0.1369, 0.1963, 0.2689, 0.3553");
          values("0.5483, 0.5712, 0.6439, 0.779, 0.9911, 1.289, 1.681, 2.176, 2.78, 3.499",\
                 "0.5553, 0.5783, 0.6509, 0.7859, 0.998, 1.296, 1.688, 2.183, 2.786, 3.507",\
                 "0.5826, 0.6056, 0.678, 0.8132, 1.025, 1.323, 1.716, 2.21, 2.814, 3.535",\
                 "0.6253, 0.6482, 0.7207, 0.8559, 1.068, 1.366, 1.758, 2.253, 2.856, 3.576",\
                 "0.6629, 0.6859, 0.7584, 0.8936, 1.106, 1.404, 1.796, 2.29, 2.894, 3.615",\
                 "0.6942, 0.7171, 0.7895, 0.9246, 1.137, 1.435, 1.827, 2.321, 2.925, 3.644",\
                 "0.7157, 0.7387, 0.8111, 0.9462, 1.158, 1.456, 1.848, 2.343, 2.946, 3.667",\
                 "0.7247, 0.7476, 0.8201, 0.9552, 1.167, 1.465, 1.857, 2.352, 2.955, 3.675",\
                 "0.7192, 0.7422, 0.8146, 0.9497, 1.162, 1.46, 1.852, 2.346, 2.95, 3.668",\
                 "0.6983, 0.7213, 0.7938, 0.9289, 1.141, 1.439, 1.831, 2.325, 2.929, 3.648");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.003445, 0.01203, 0.02842, 0.05396, 0.08979, 0.1369, 0.1963, 0.2689, 0.3553");
          values("0.0635, 0.08346, 0.1457, 0.2621, 0.4557, 0.7365, 1.109, 1.579, 2.155, 2.842",\
                 "0.06352, 0.08328, 0.1453, 0.2626, 0.4558, 0.7381, 1.11, 1.581, 2.153, 2.842",\
                 "0.06348, 0.08358, 0.1455, 0.2616, 0.4557, 0.7378, 1.109, 1.579, 2.155, 2.842",\
                 "0.06364, 0.08376, 0.146, 0.262, 0.456, 0.738, 1.11, 1.582, 2.156, 2.842",\
                 "0.0636, 0.0834, 0.1454, 0.2626, 0.456, 0.7372, 1.11, 1.581, 2.155, 2.841",\
                 "0.0634, 0.0836, 0.1456, 0.2624, 0.4552, 0.7362, 1.11, 1.58, 2.157, 2.837",\
                 "0.0636, 0.0836, 0.1454, 0.2618, 0.4554, 0.7358, 1.108, 1.577, 2.152, 2.838",\
                 "0.0636, 0.0836, 0.1454, 0.2622, 0.4558, 0.736, 1.108, 1.577, 2.15, 2.835",\
                 "0.0636, 0.0836, 0.1456, 0.2618, 0.4558, 0.736, 1.109, 1.578, 2.152, 2.833",\
                 "0.0638, 0.0832, 0.1458, 0.2618, 0.4566, 0.7364, 1.108, 1.578, 2.151, 2.834");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.05575, 0.1813, 0.4209, 0.7943, 1.318, 2.008, 2.876, 3.936, 5.2");
          index_2("0.001, 0.003445, 0.01203, 0.02842, 0.05396, 0.08979, 0.1369, 0.1963, 0.2689, 0.3553");
          values("0.0763, 0.1081, 0.2218, 0.4554, 0.8245, 1.344, 2.029, 2.885, 3.933, 5.188",\
                 "0.0765, 0.108, 0.2219, 0.4554, 0.8243, 1.344, 2.024, 2.884, 3.936, 5.187",\
                 "0.0765, 0.108, 0.2219, 0.4555, 0.8252, 1.345, 2.025, 2.884, 3.936, 5.186",\
                 "0.07632, 0.1081, 0.2218, 0.4558, 0.8246, 1.345, 2.028, 2.887, 3.935, 5.193",\
                 "0.0766, 0.108, 0.222, 0.4554, 0.8244, 1.345, 2.025, 2.884, 3.939, 5.188",\
                 "0.076, 0.108, 0.2218, 0.4554, 0.8256, 1.345, 2.024, 2.885, 3.935, 5.188",\
                 "0.0764, 0.108, 0.222, 0.4556, 0.8246, 1.342, 2.024, 2.885, 3.933, 5.195",\
                 "0.0762, 0.1078, 0.2218, 0.4556, 0.8254, 1.345, 2.024, 2.883, 3.935, 5.184",\
                 "0.0764, 0.108, 0.222, 0.4552, 0.8246, 1.343, 2.024, 2.883, 3.933, 5.191",\
                 "0.0768, 0.1086, 0.2222, 0.4556, 0.8256, 1.344, 2.026, 2.883, 3.933, 5.182");
        }
      }
    }
  }

