The setup constraint gives a yes-or-no answer. Setup slack tells you by how much:
slack = T − (tcq + tpd + tsu)
- Positive slack: the data arrives early with time to spare. The path could take that much more logic delay, or the clock could speed up.
- Zero slack: exactly on the limit. It still passes.
- Negative slack: a setup violation. The data arrives too late and the capturing flip-flop may store the wrong value.
Timing tools report slack for every path, and designers work on the worst one first: the path with the most negative slack is the critical path between registers.
Turned around, slack gives the most logic that fits in a period: tpd(max) = T − tcq − tsu.
Always put every number in the same unit before subtracting. Mixing 1.9 ns with 200 ps is the most common slip.