Streaming RTL / protocols

Ready/Valid Handshake RTL Guide

Ready/valid is one of the most reusable hardware interface patterns. The transfer rule is tiny—data moves only when VALID and READY are both high—but robust RTL also needs clear ownership, stable stalled data and deliberate buffering so timing pressure does not create combinational loops or lost transfers.

Implementation-first: use this guide to review the design rules, then solve the linked HDLForge problems without looking at a solution first.

Core design rules

Implementation path

Verification checklist

Useful RTL / verification pattern

wire fire = valid && ready;
// If valid && !ready, hold valid and payload stable.

Practice with executable problems

Protocols · MediumBackpressure-Safe Ready/Valid Source

Implement a source register that obeys ready/valid protocol semantics.

RTL Design · HardReady/Valid Skid Buffer

Build a one-entry skid buffer that preserves data when downstream backpressure arrives.

RTL Design · MediumElastic Pipeline Register

Implement a single-stage pipeline register with an aligned valid bit.

SVA · MediumValid Must Eventually Handshake

Write an assertion for a ready/valid interface.

Turn it into a project

ProjectFPGA Packet Parser and Statistics EngineProjectHardware DSP Pipeline