NEXT (Structural Hazards in RTL)
We have a hazard when an operation cannot proceed because some
information is not available or a resource is already in use.
- Data hazard - when an operand's address is not yet known or the operand has not arrived in time for use,
- Control hazard - when it is not yet clear whether an operation should be performed (cannot speculate on writes)
- Structural hazard - insufficient physical resources to do everything at once.
Resources that might present structural hazards are:
- Memories with insufficient ports,
- Memories with access latency (synchronous RAMs),
- Fetching from DRAM,
- Pipelined operator implementations (e.g.
»Booth Multiplier or floating point unit),
- Anything non-fully pipelined (something that goes busy).