A setup violation happens when a path fails the setup constraint: tcq + tpd + tsu is longer than the clock period, so the setup slack is negative. The new data hasn't settled at the capturing flip-flop's D by tsu before the edge.
What goes wrong: the flip-flop may capture the old value, some bits may be old and some new, or it may go metastable if D is changing inside its window. Any of these breaks the circuit's logic.
The good news is that setup violations are always fixable:
- Slow the clock. A longer period gives the data more time. This always works.
- Speed up the critical path: faster gates, fewer logic levels, or a better structure (for example carry-lookahead instead of ripple-carry).
- Pipeline the logic, so each stage has less to do.
- Use positive clock skew on that path, carefully, since it hurts hold.
Compare a hold violation, which the clock speed can't fix at all.