State machines
RTL++ finds the state machines in your design and draws each one, with the state at the waveform cursor, how often each state was visited, and the arcs no test took.
The State machine lens draws every state machine in the design. A register is one when every value it loads is a constant or its own value, it loads at least two different constants, and comparisons decide which, not arithmetic. One-process and two-process machines, enums and localparams all qualify. Reset is recognised and kept off the arcs.
With a run
- The state at the waveform cursor is marked, and moves with the cursor.
- Each state shows how many times the run visited it.
- Arcs no test took are drawn dashed in a quieter ink. The header counts states, arcs and how many were never taken.
Each arc is labelled with its condition as source text. Click a state to open the code that handles it, and use Add to waveform to select the state register's lane in the dock. With several machines, tabs above the drawing switch between them.
The diagram pans with the arrow keys and zooms with + and -; 0 fits it.