sweep_handshakes
Sweep all valid/ready and AHB interfaces in one call to detect handshake stalls, deadlocks, and protocol anomalies, returning a comparative fact table to pinpoint the misbehaving interface causing timeouts or hangs.
Instructions
Whole-design handshake anomaly sweep: discover EVERY valid/ready interface and every AHB interface, then inspect each over the window in one call, returning a comparative fact table (per-interface stalls, deadlock signature ended_in_stall, x-while-valid, payload-hold, write-data-hold, premature valid deassertion, backpressure) ordered by a transparent mechanical key. Use on opaque global symptoms (timeout/hang) when you don't know which of many interfaces misbehaves — it collapses N suggest+inspect round-trips into one. Always interpret flagged_count together with coverage_status: zero_coverage means no protocol interfaces were checked and is NOT a pass; truncated/degraded means partial coverage. Workflow follow-ups relay only parameter-changing retries: an unscoped zero-coverage result is not blindly replayed, but remains inconclusive. FSDB native transition-buffer truncation is propagated per row and forces degraded coverage; zero findings then cover only returned prefixes. Returns FACTS, not a root-cause verdict; re-rank as the symptom warrants. Reads existing waveforms only.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| edge | No | Clock edge to sample on. Default posedge. | posedge |
| scope | No | Optional hierarchy prefix to limit the sweep (e.g. 'tb_top.u_dut'). If the scope contains no discovered interfaces the result reports coverage_status=zero_coverage; retry unscoped or with a parent/interface scope. | |
| wave_path | Yes | Waveform (FSDB or VCD). | |
| end_time_ps | No | Window end. -1 = end of trace. Accepts ps int, '@cursor', or unit literal. | |
| start_time_ps | No | Window start (ps int, '@cursor', or unit literal like '12.3ns'). Default 0. | |
| max_interfaces | No | Max interfaces to sweep (default 64). If discovery exceeds this the result is flagged truncated=true — raise it for full coverage. | |
| max_wait_cycles | No | Stall length (cycles) above which a stall becomes a long_stall finding. Default 16. |