Skip to main content
Glama
gokeshenzhen

io.github.gokeshenzhen/traceweave

by gokeshenzhen

explain_signal_driver

Trace waveform signals upstream to the most likely RTL driver, crossing instance boundaries and handling mixed port bindings through recursive fan-in or source-graph projection.

Instructions

Trace a waveform signal path back to the most likely RTL driver. Supports direct assigns, simple always blocks, and module output ports. Set recursive=true to walk multiple hops upstream across instance boundaries. When a Verdi KDB is detected, an NPI backend transparently engages and walks the elaborated netlist with fan_in_reg_list, crossing instance port boundaries the static source-regex backend cannot reach. Recursive NPI fan-in is admitted inside the native traversal (4,096 states, 32 returned facts); Source Graph and NPI both publish traversal counts, limits, truncation, exhaustive-search, and fixed incomplete reasons. A partial positive prefix is usable evidence but not a complete or exclusive driver-set claim. If NPI is unavailable or cannot return a trustworthy result, TraceWeave next attempts a bounded, on-demand Source Graph projection; Legacy Static remains the normal final fallback. The explicit allow_bounded_bootstrap path is the resource-bounded exception: without a full hierarchy it returns only proved positive Source Graph facts, and an inconclusive/blocker result does not start a whole-source Static scan. Source Graph preserves per-bit port-binding provenance, so mixed bindings such as concatenations, constants, truncation, and width extension are reported as segments instead of forcing an all-or-nothing exact-width match. When a dynamic segment reaches a projection boundary, bounded sibling-scope expansion re-runs the original query from a fresh artifact; constant segments are terminal and never trigger expansion. Signal-not-declared and bit-selection-out-of-range are distinct Source Graph blockers. Legacy Static normalizes trailing numeric selects to the bare RTL symbol, but stops honestly at composite port expressions that need per-bit provenance. Parameter specializations and named generate scopes remain instance-specific; dotted packed struct/union members are mapped from their field-local indices onto exact root-aggregate bits. backend_status records the selected/attempted/actual backends, fixed fallback reason, Source Graph coverage and cache/build receipt. The legacy confidence field remains coverage-combined and conservative. For Source Graph results, claim_semantics separates positive_fact_confidence and target_bit_coverage from global_coverage_status; require exclusive_driver_proved before calling a returned driver unique, and negative_claim_allowed before claiming no driver. Warm Source Graph traversal is work-bounded; query_truncated and the query_*_limit coverage gap mean returned positive facts are usable but the driver set is not exhaustive. Each driver_chain hop carries source_info_origin ('compile_log', 'npi', or 'source_graph') so consumers can tell which provenance produced its file:line. driver_status='testbench_driven' (with cross_check.conflict=true) means NPI found NO RTL driver: the only 'driver' it reported is also a LOAD of the same net (an interface-slice alias or a register that reads the net), so the real driver is testbench/behavioral — a UVM driver writing through a virtual interface + clocking block, invisible to RTL fan-in. Treat that as 'start in the TB driver/BFM', NOT as a mis-wire or a DUT-register driver; for an AHB master's HTRANS/HADDR this is the expected, correct answer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
top_hintNo
max_depthNoMaximum recursive depth when recursive=true
recursiveNoWhether to trace the upstream driver chain recursively
simulatorNovcs / xcelium / auto. Optional — if omitted, server auto-injects the value discovered by get_sim_paths.
wave_pathYes
compile_logYes
signal_pathYes
allow_bounded_bootstrapNoIf true and full hierarchy is unavailable, prove a hard-bounded single-endpoint Source Graph context. Only positive facts may be returned; no-match remains inconclusive and never triggers a whole-source Static rescan.
supplementary_compile_logsNoOptional complementary compile/elaboration logs used by bounded bootstrap when no hierarchy handle exists.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden—and it meets it. It discloses backend selection and fallback order (NPI, Source Graph, Legacy Static), traversal limits (4,096 states, 32 returned facts), truncation semantics, bounded bootstrap behavior, provenance fields, and the special testbench_driven interpretation. There is no annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence front-loads the purpose effectively, and each clause is technically meaningful. However, the entire description is one dense, unbroken paragraph with no bullet points or sections, making it harder for an agent to parse quickly. It is informative but not concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and significant conditional behavior, the description is exceptionally complete. It specifies result semantics (claim_semantics fields, backend_status), fallback order, truncation limits, per-hop provenance, and the testbench_driven special case, giving an agent enough to call the tool and interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 56%, so the description must add some value. It does for key parameters: 'recursive=true' is explained as walking multiple hops upstream across instance boundaries, and allow_bounded_bootstrap is described as a resource-bounded exception that only returns proved positive facts. Other parameters like top_hint are not elaborated, but the schema already covers several.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence, 'Trace a waveform signal path back to the most likely RTL driver,' gives a specific verb, resource, and goal. It additionally scopes supported constructs (direct assigns, simple always blocks, module output ports), which helps distinguish it from siblings like trace_signal_path and find_signal_loads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for what the tool does and extensive guidance on interpreting its results, such as treating driver_status='testbench_driven' as 'start in the TB driver/BFM'. However, it never mentions sibling tools or conditions that would route an agent to an alternative, so usage vs. alternatives is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gokeshenzhen/TraceWeave'

If you have feedback or need assistance with the MCP directory API, please join our Discord server