Positive, Negative and Zero Slack
Slack indicates whether a design meets its speed target and is calculated as actual time minus desired time on a timing path. Negative slack means a timing violation - the target frequency is not met. Positive slack means the target is met with extra margin. Zero slack means the target is met exactly, with no margin.
KEY Negative slack = violation; positive = margin to spare; zero = exactly meeting timing.
Measuring Setup and Hold Slack
Setup slack = data required time - data arrival time. Hold slack = data arrival time - data required time.
Arrival time is the time data takes through the timing path; required time is the time the clock takes through the clock path. Slack is the difference between the actual and desired data-versus-clock time.
KEY Setup slack = required - arrival; hold slack = arrival - required.
How Skew Causes Setup and Hold Violations
Clock skew can cause both setup and hold violations. If the clock travels slower than required, the previous data is not held long enough to be clocked through correctly - a hold violation.
If the clock travels faster and the destination receives the edge before the source, the data arrives late and unstable relative to the clock - a setup violation.
KEY Slow clock propagation causes hold violations; fast clock propagation causes setup violations.
Reset and Its Types
A reset forces a circuit into a known state, because hardware cannot initialise itself. In simulation it sends the circuit to a starting state; in real hardware it brings the circuit up on power-on.
There are two types of reset: synchronous reset and asynchronous reset.
