Tools

Reflection

A second pass where the model reviews its own RTL before you ever see it.

Reflection adds an additional engineering review pass after the initial solution is produced. Rather than immediately returning the first generated RTL, a 2nd model examines the generated design, looks for potential problems, and can revise the implementation before presenting the final result.

What it looks for

The review can look for issues such as:

  • Incorrect interpretation of requirements
  • Handshake bugs
  • Width and signedness mistakes
  • Reset behavior
  • FSM corner cases
  • Combinational loops
  • Latch inference
  • Clock-domain issues
  • Incorrect parameterization
  • Protocol violations
  • Unnecessary registers or logic

Example

The first implementation of an AXI module might accidentally update internal state when TVALID=1 but TREADY=0. During Reflection, the model can recognize that AXI state should only advance on a successful handshake if (s_axis_tvalid && s_axis_tready) and revise the implementation before returning it.

Reflection and Auto-Verify are different jobs

ToolHow it decides something is wrong
ReflectionReads the module and reasons about it, the way a colleague reviewing a pull request would.
Auto-VerifyRuns the module against a testbench and reports what actually happened.

Reflection catches things a testbench was never told to look for; Auto-Verify catches things the code does rather than things it looks like it does. They are complementary, and on anything important both are worth the wait.

It has its own model

Reflection uses the Verifier role in the model picker, separate from the one that writes the RTL. A reasoning-heavy model is a good fit here even when you are generating with something faster; see Choosing models.

When to turn it on

  • Turn it on for complex RTL, unfamiliar architectures, highly parameterized modules, or designs where subtle corner cases are likely. It may take longer because the model performs additional reasoning and revision passes.
  • Leave it off while iterating quickly, or for small blocks where the review pass costs more time than reading the module yourself would.

Note

When Reflection is on, the REVIEW step appears in the run progress. On a run with it switched off that step is simply skipped, which is not a failure.