/*
 * 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_4) {
    area : 83.417600 ;

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

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLKN&!D" ;
      value : "9.2763e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!CLKN&D" ;
      value : "9.603792e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLKN&!D" ;
      value : "7.65072e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "CLKN&D" ;
      value : "7.543206e-05" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "9.603792e-05" ;
    }

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

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

    pin(CLKN) {
      capacitance : 0.003183 ;
      clock : true ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 6.8 ;
      min_period : 1.781 ;
      min_pulse_width_high : 0.689 ;
      min_pulse_width_low : 0.893 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.04468, 0.0445, 0.0442, 0.04409, 0.0445, 0.04541, 0.04686, 0.04884, \
                  0.05142, 0.05471");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.02873, 0.02865, 0.02844, 0.02833, 0.02854, 0.02926, 0.03047, \
                  0.03222, 0.03461, 0.03757");
        }
      }

      internal_power() {
        when : "D" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.04465, 0.04448, 0.04415, 0.04405, 0.04447, 0.04537, 0.04681, \
                  0.04881, 0.0514, 0.05468");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.02878, 0.02869, 0.02849, 0.02839, 0.0286, 0.02929, 0.03048, \
                  0.03225, 0.03463, 0.03763");
        }
      }

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

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

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

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

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

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

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

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

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

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

    pin(D) {
      capacitance : 0.002292 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 6.8 ;
      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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.008873, 0.008616, 0.008485, 0.008724, 0.009366, 0.01038, 0.01184, \
                  0.0138, 0.01631, 0.01938");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.001132, 0.001027, 0.0009031, 0.001029, 0.001499, 0.002348, 0.003626, \
                  0.005335, 0.007507, 0.01016");
        }
      }

      internal_power() {
        when : "CLKN" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.029, 0.02884, 0.02868, 0.02874, 0.02924, 0.03016, 0.03149, 0.03331, \
                  0.03564, 0.03853");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.0195, 0.01943, 0.01934, 0.01943, 0.01974, 0.0204, 0.02143, 0.02292, \
                  0.02485, 0.0273");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.08, 0.094, 0.15, 0.246, 0.378, 0.513, 0.658, 0.833, 1.02, 1.249",\
                 "0.065, 0.075, 0.13, 0.234, 0.364, 0.494, 0.645, 0.811, 1.007, 1.23",\
                 "0.004, 0.017, 0.068, 0.174, 0.3, 0.432, 0.578, 0.756, 0.95, 1.173",\
                 "-0.122, -0.102, -0.057, 0.051, 0.185, 0.314, 0.462, 0.632, 0.827, 1.048",\
                 "-0.279, -0.261, -0.214, -0.107, 0.016, 0.145, 0.297, 0.465, 0.662, 0.884",\
                 "-0.456, -0.445, -0.396, -0.29, -0.166, -0.034, 0.109, 0.273, 0.47, 0.693",\
                 "-0.658, -0.645, -0.594, -0.495, -0.371, -0.249, -0.104, 0.067, 0.261, 0.479",\
                 "-0.88, -0.869, -0.817, -0.723, -0.602, -0.482, -0.34, -0.174, 0.019, 0.241",\
                 "-1.147, -1.129, -1.082, -0.981, -0.866, -0.755, -0.61, -0.449, -0.253, -0.031",\
                 "-1.432, -1.422, -1.371, -1.281, -1.16, -1.053, -0.917, -0.755, -0.564, -0.342");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.286, 0.305, 0.363, 0.48, 0.65, 0.851, 1.046, 1.278, 1.516, 1.789",\
                 "0.276, 0.292, 0.347, 0.472, 0.639, 0.83, 1.033, 1.262, 1.508, 1.773",\
                 "0.237, 0.249, 0.307, 0.427, 0.601, 0.791, 0.995, 1.225, 1.466, 1.737",\
                 "0.197, 0.21, 0.275, 0.387, 0.557, 0.753, 0.953, 1.178, 1.428, 1.699",\
                 "0.179, 0.193, 0.252, 0.368, 0.536, 0.732, 0.931, 1.158, 1.402, 1.672",\
                 "0.183, 0.199, 0.253, 0.373, 0.542, 0.73, 0.929, 1.154, 1.406, 1.666",\
                 "0.214, 0.227, 0.283, 0.406, 0.567, 0.755, 0.955, 1.181, 1.428, 1.688",\
                 "0.276, 0.281, 0.35, 0.46, 0.619, 0.811, 1.007, 1.231, 1.47, 1.737",\
                 "0.368, 0.38, 0.438, 0.548, 0.713, 0.892, 1.085, 1.303, 1.547, 1.815",\
                 "0.503, 0.517, 0.57, 0.681, 0.833, 1.005, 1.195, 1.414, 1.654, 1.917");
        }
      }

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

        fall_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.538, 0.514, 0.45, 0.337, 0.197, 0.033, -0.147, -0.35, -0.574, -0.826",\
                 "0.556, 0.531, 0.466, 0.358, 0.213, 0.055, -0.133, -0.332, -0.557, -0.812",\
                 "0.615, 0.59, 0.525, 0.421, 0.274, 0.108, -0.075, -0.278, -0.5, -0.755",\
                 "0.737, 0.711, 0.652, 0.54, 0.394, 0.231, 0.052, -0.156, -0.381, -0.63",\
                 "0.922, 0.895, 0.838, 0.721, 0.579, 0.414, 0.236, 0.027, -0.201, -0.448",\
                 "1.152, 1.138, 1.066, 0.955, 0.809, 0.643, 0.458, 0.252, 0.023, -0.235",\
                 "1.421, 1.393, 1.331, 1.218, 1.069, 0.897, 0.71, 0.501, 0.275, 0.014",\
                 "1.714, 1.684, 1.624, 1.504, 1.354, 1.181, 0.994, 0.784, 0.54, 0.279",\
                 "2.038, 2.015, 1.948, 1.833, 1.674, 1.498, 1.306, 1.088, 0.854, 0.588",\
                 "2.403, 2.375, 2.31, 2.19, 2.033, 1.856, 1.654, 1.446, 1.193, 0.934");
        }

        rise_constraint(cnst_ctin_rtin_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          values("0.218, 0.204, 0.15, 0.034, -0.149, -0.343, -0.556, -0.795, -1.058, -1.341",\
                 "0.232, 0.217, 0.16, 0.046, -0.133, -0.33, -0.542, -0.773, -1.045, -1.33",\
                 "0.276, 0.257, 0.204, 0.089, -0.085, -0.287, -0.499, -0.737, -0.996, -1.285",\
                 "0.34, 0.324, 0.271, 0.146, -0.03, -0.225, -0.438, -0.675, -0.939, -1.218",\
                 "0.403, 0.383, 0.328, 0.202, 0.027, -0.166, -0.38, -0.619, -0.881, -1.16",\
                 "0.447, 0.426, 0.365, 0.243, 0.067, -0.121, -0.335, -0.569, -0.829, -1.115",\
                 "0.467, 0.451, 0.388, 0.261, 0.085, -0.113, -0.323, -0.551, -0.807, -1.098",\
                 "0.463, 0.447, 0.387, 0.257, 0.08, -0.117, -0.33, -0.566, -0.82, -1.104",\
                 "0.434, 0.416, 0.355, 0.227, 0.05, -0.148, -0.36, -0.594, -0.853, -1.136",\
                 "0.377, 0.361, 0.293, 0.174, -0.008, -0.213, -0.429, -0.66, -0.918, -1.195");
        }
      }
    }

    pin(Q) {
      direction : output ;
      function : "IQ1" ;
      max_capacitance : 0.8483 ;
      max_transition : 6.8 ;
      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.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.006848, 0.02738, 0.06658, 0.1277, 0.2134, 0.3261, 0.4682, 0.6416, 0.8483");
          values("0.09188, 0.09133, 0.09095, 0.09128, 0.09167, 0.09197, 0.09222, 0.09237, 0.09247, 0.09255",\
                 "0.09197, 0.09137, 0.09104, 0.0913, 0.09174, 0.09202, 0.09227, 0.0924, 0.0925, 0.09259",\
                 "0.09192, 0.09139, 0.09103, 0.09133, 0.09165, 0.092, 0.09225, 0.09238, 0.09248, 0.09256",\
                 "0.09195, 0.09131, 0.09094, 0.09128, 0.09176, 0.09198, 0.09223, 0.09236, 0.09246, 0.09253",\
                 "0.09194, 0.09134, 0.09095, 0.09127, 0.09161, 0.09195, 0.0922, 0.09234, 0.09246, 0.09253",\
                 "0.09196, 0.09135, 0.09095, 0.09131, 0.09175, 0.09202, 0.09225, 0.09239, 0.0925, 0.09257",\
                 "0.09201, 0.09136, 0.091, 0.09126, 0.09167, 0.09205, 0.09228, 0.09243, 0.09253, 0.09261",\
                 "0.09207, 0.09144, 0.09106, 0.09137, 0.09179, 0.09215, 0.09234, 0.09249, 0.0926, 0.09267",\
                 "0.09232, 0.09168, 0.09121, 0.09154, 0.09194, 0.09226, 0.09251, 0.09267, 0.09278, 0.09284",\
                 "0.09238, 0.0918, 0.0913, 0.09158, 0.09204, 0.09236, 0.09261, 0.09278, 0.09287, 0.09296");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.006848, 0.02738, 0.06658, 0.1277, 0.2134, 0.3261, 0.4682, 0.6416, 0.8483");
          values("0.108, 0.1079, 0.1078, 0.1087, 0.1097, 0.1107, 0.1122, 0.1129, 0.1135, 0.1146",\
                 "0.108, 0.1079, 0.1078, 0.1087, 0.1098, 0.1107, 0.1125, 0.1128, 0.1134, 0.1146",\
                 "0.1081, 0.1079, 0.1079, 0.1088, 0.1098, 0.1109, 0.1125, 0.1128, 0.1136, 0.1147",\
                 "0.108, 0.1079, 0.1079, 0.1087, 0.1099, 0.1111, 0.1123, 0.1131, 0.1149, 0.1151",\
                 "0.1082, 0.1082, 0.1082, 0.109, 0.1099, 0.1115, 0.1128, 0.113, 0.1138, 0.1149",\
                 "0.1087, 0.1085, 0.1086, 0.1094, 0.1103, 0.1114, 0.1127, 0.1135, 0.1143, 0.1159",\
                 "0.1089, 0.1089, 0.109, 0.1097, 0.1107, 0.112, 0.1132, 0.1139, 0.1145, 0.1155",\
                 "0.1094, 0.1094, 0.1093, 0.1101, 0.1114, 0.112, 0.1133, 0.114, 0.1149, 0.1167",\
                 "0.1097, 0.1096, 0.1096, 0.1104, 0.1115, 0.113, 0.1141, 0.1146, 0.1153, 0.1177",\
                 "0.1101, 0.11, 0.1099, 0.111, 0.1115, 0.1127, 0.1147, 0.1157, 0.1158, 0.1191");
        }
      }

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

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.006848, 0.02738, 0.06658, 0.1277, 0.2134, 0.3261, 0.4682, 0.6416, 0.8483");
          values("1.14, 1.177, 1.27, 1.395, 1.544, 1.725, 1.947, 2.22, 2.551, 2.944",\
                 "1.157, 1.193, 1.286, 1.411, 1.561, 1.742, 1.964, 2.236, 2.567, 2.961",\
                 "1.218, 1.254, 1.347, 1.472, 1.622, 1.803, 2.025, 2.297, 2.628, 3.022",\
                 "1.339, 1.376, 1.469, 1.594, 1.744, 1.924, 2.146, 2.419, 2.75, 3.143",\
                 "1.52, 1.556, 1.649, 1.774, 1.924, 2.105, 2.327, 2.599, 2.93, 3.324",\
                 "1.73, 1.767, 1.86, 1.985, 2.135, 2.315, 2.537, 2.81, 3.141, 3.535",\
                 "1.956, 1.993, 2.086, 2.211, 2.361, 2.542, 2.763, 3.036, 3.367, 3.761",\
                 "2.2, 2.236, 2.329, 2.455, 2.605, 2.785, 3.007, 3.28, 3.611, 4.005",\
                 "2.464, 2.501, 2.594, 2.719, 2.869, 3.05, 3.272, 3.545, 3.875, 4.269",\
                 "2.754, 2.79, 2.884, 3.009, 3.158, 3.339, 3.561, 3.834, 4.165, 4.559");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.006848, 0.02738, 0.06658, 0.1277, 0.2134, 0.3261, 0.4682, 0.6416, 0.8483");
          values("1.294, 1.332, 1.441, 1.627, 1.909, 2.303, 2.82, 3.471, 4.265, 5.212",\
                 "1.311, 1.349, 1.458, 1.644, 1.926, 2.32, 2.837, 3.488, 4.282, 5.228",\
                 "1.372, 1.41, 1.519, 1.705, 1.987, 2.381, 2.898, 3.549, 4.343, 5.289",\
                 "1.493, 1.532, 1.64, 1.826, 2.109, 2.502, 3.02, 3.67, 4.464, 5.41",\
                 "1.676, 1.714, 1.823, 2.008, 2.291, 2.685, 3.202, 3.853, 4.647, 5.594",\
                 "1.89, 1.928, 2.037, 2.222, 2.505, 2.899, 3.416, 4.067, 4.86, 5.807",\
                 "2.12, 2.159, 2.267, 2.453, 2.735, 3.129, 3.646, 4.297, 5.091, 6.038",\
                 "2.369, 2.408, 2.516, 2.702, 2.984, 3.378, 3.895, 4.546, 5.34, 6.286",\
                 "2.639, 2.678, 2.786, 2.972, 3.254, 3.648, 4.165, 4.816, 5.61, 6.557",\
                 "2.933, 2.972, 3.08, 3.266, 3.549, 3.942, 4.459, 5.111, 5.904, 6.849");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.006848, 0.02738, 0.06658, 0.1277, 0.2134, 0.3261, 0.4682, 0.6416, 0.8483");
          values("0.1542, 0.1858, 0.2654, 0.3848, 0.553, 0.7948, 1.134, 1.577, 2.13, 2.795",\
                 "0.154, 0.186, 0.2652, 0.3846, 0.553, 0.796, 1.133, 1.578, 2.131, 2.796",\
                 "0.154, 0.1858, 0.2652, 0.3846, 0.5518, 0.7944, 1.133, 1.578, 2.131, 2.797",\
                 "0.1544, 0.1858, 0.2654, 0.3846, 0.5532, 0.796, 1.134, 1.576, 2.129, 2.795",\
                 "0.1544, 0.186, 0.2652, 0.385, 0.552, 0.795, 1.133, 1.578, 2.13, 2.795",\
                 "0.1544, 0.186, 0.2658, 0.3848, 0.5532, 0.795, 1.134, 1.578, 2.129, 2.793",\
                 "0.1542, 0.1858, 0.2654, 0.3848, 0.5528, 0.7958, 1.133, 1.577, 2.131, 2.794",\
                 "0.1544, 0.1864, 0.2652, 0.3848, 0.5528, 0.7948, 1.134, 1.577, 2.131, 2.795",\
                 "0.1548, 0.1862, 0.2656, 0.3848, 0.553, 0.7944, 1.133, 1.577, 2.13, 2.792",\
                 "0.155, 0.1868, 0.2664, 0.3852, 0.553, 0.7952, 1.133, 1.577, 2.128, 2.792");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.0668, 0.2311, 0.5448, 1.033, 1.719, 2.622, 3.758, 5.146, 6.8");
          index_2("0.001, 0.006848, 0.02738, 0.06658, 0.1277, 0.2134, 0.3261, 0.4682, 0.6416, 0.8483");
          values("0.141, 0.1812, 0.3214, 0.6174, 1.093, 1.769, 2.661, 3.782, 5.157, 6.787",\
                 "0.1408, 0.1806, 0.322, 0.6172, 1.093, 1.768, 2.659, 3.785, 5.153, 6.795",\
                 "0.1408, 0.1804, 0.3216, 0.6176, 1.094, 1.769, 2.66, 3.782, 5.151, 6.792",\
                 "0.1406, 0.1804, 0.3216, 0.6174, 1.094, 1.768, 2.661, 3.784, 5.149, 6.789",\
                 "0.1406, 0.1804, 0.3216, 0.6178, 1.093, 1.769, 2.658, 3.784, 5.157, 6.787",\
                 "0.1408, 0.181, 0.3212, 0.617, 1.093, 1.767, 2.661, 3.783, 5.153, 6.786",\
                 "0.1402, 0.1806, 0.3216, 0.617, 1.094, 1.77, 2.661, 3.782, 5.156, 6.785",\
                 "0.1392, 0.1798, 0.3214, 0.6172, 1.094, 1.768, 2.659, 3.784, 5.152, 6.792",\
                 "0.1396, 0.1796, 0.3208, 0.6174, 1.093, 1.767, 2.657, 3.781, 5.155, 6.788",\
                 "0.1396, 0.1794, 0.3214, 0.6176, 1.094, 1.769, 2.661, 3.779, 5.146, 6.787");
        }
      }
    }
  }

