Tools

Reflection

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

Reflection adds an engineering review pass when the first simulation fails. Instead of going straight to a generic fix, the run hands the failing module and the failing log to a second model that reads the design for the bug behind the failure and can revise it. A module that passes its testbench first time is never reviewed, so the pass costs nothing on a run that did not need it.

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 and the first simulation fails, the REVIEW step lights up in the run progress after SIM. On a run that passes first time, or with Reflection switched off, that step is simply skipped, which is not a failure.