In RTL, if the Testbench drives a signal at the exact same time the active clock edge occurs, a race condition happens. The DUT might sample the old value or the new value randomly.
Clocking Blocks solve this by explicitly defining:
- Input Skew: When to sample signals (e.g., #1step before clock).
- Output Skew: When to drive signals (e.g., #1ns after clock).