Skip to main content
Glama
gokeshenzhen

io.github.gokeshenzhen/traceweave

by gokeshenzhen

find_signal_loads

Identify every place a signal is consumed in RTL—child instance inputs, assignment RHSs, and always-block sensitivity lists—with cross-hierarchy and generate-block resolution for reliable load tracing.

Instructions

List places that consume (load) a signal: child instance input ports, RHS of assigns/procedural assignments, and always-block sensitivity lists. When a Verdi KDB is detected, an NPI backend transparently engages and resolves the cross-hierarchy / interface-positional / generate-block cases that the static source-regex backend cannot reach. If NPI is unavailable or cannot return a trustworthy result, TraceWeave next attempts the bounded, on-demand Source Graph; Legacy Static remains the normal final fallback (shallow_only). When allow_bounded_bootstrap=true and no full hierarchy exists, only proved positive Source Graph facts are returned; an inconclusive/blocker does not trigger a whole-source Static rescan. backend_status preserves the complete attempt chain and Source Graph coverage/build receipt. claim_semantics separates confidence in returned positive load facts from whole-artifact coverage; exhaustive_search is required before treating the list as all loads, and negative_claim_allowed is required before claiming there are none. A complete Source Graph not_connected is distinct from an inconclusive no-match, which falls through to Static only on the normal full-hierarchy route. Every backend publishes enumeration.{returned_count, output_limit, output_truncated, search_exhaustive, incomplete_reasons, continuation_supported}. High-fanout output is capped at 256; capped positive loads remain usable but are not a complete list, and no backend currently promises a continuation token. Each load query normalizes trailing numeric selects for Legacy Static matching, while Source Graph validates the selected bits against the declaration. Each load carries source_info_origin ('compile_log', 'npi', or 'source_graph') so consumers can tell which provenance produced its file:line.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
top_hintNo
max_depthNoReserved for future transitive walks. Static backend always behaves as 1; NPI backend's fan-out walk is depth-bounded internally regardless of this argument.
simulatorNovcs / xcelium / auto. Optional — if omitted, server auto-injects the value discovered by get_sim_paths.
compile_logYes
kind_filterNoRestrict result to a subset of load kinds.
signal_pathYes
include_exprNoInclude the surrounding expression for each load.
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?

With no annotations provided, the description carries the full behavioral disclosure burden, and it delivers exceptionally: it documents the full backend attempt chain, the 256-entry high-fanout cap with the warning that capped results are usable but not complete, absence of continuation tokens, normalization of trailing numeric selects per backend, and the source_info_origin provenance field. This is far more transparent than typical MCP descriptions.

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 purpose is front-loaded in the first sentence, which is good, but the rest is a dense single paragraph of backend-negotiation, result-semantics, and enumeration-contract detail. Every sentence carries information, yet the wall-of-text structure hurts navigability; details like the enumeration metadata contract and the 256 cap would sit more naturally with an output schema or in structured sections. It is verbose enough that a 3 is appropriate.

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

Completeness4/5

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

For a complex 9-parameter, 3-backend tool with no output schema, this is remarkably complete: purpose, load kinds, backend routing, fallback behavior, truncation semantics, provenance, and result-interpretation rules are all covered. The main gap is that it never specifies the concrete response shape of a load entry beyond carrying file:line and source_info_origin — the enumeration contract is described, but the load object's fields are not, which matters because no output schema exists.

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 67% (mid-range), so the schema already documents most parameters. The description adds genuine value beyond it: it maps the kind_filter enum values to concrete load kinds, explains that NPI's fan-out walk is internally depth-bounded regardless of max_depth, and clarifies allow_bounded_bootstrap's consequence that no-match is inconclusive and never triggers a rescan. Parameters like top_hint and simulator receive no extra elaboration, but the added semantics push this above the schema-only baseline.

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 is a model of purpose clarity: 'List places that consume (load) a signal' with three concrete load kinds enumerated (child instance input ports, RHS of assigns/procedural assignments, always-block sensitivity lists). This specific verb+resource+scope immediately differentiates it from sibling tools like trace_signal_path or explain_signal_driver, which concern tracing/drivers rather than consumers.

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

Usage Guidelines4/5

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

The description provides strong conditional context for when the tool's modes engage: NPI when a Verdi KDB is detected, Source Graph when NPI is unavailable, Legacy Static as fallback, and the allow_bounded_bootstrap special behavior. It also gives clear interpretative guidance (exhaustive_search required before treating the list as all loads, negative_claim_allowed required before claiming there are none). However, it never explicitly names sibling alternatives or states when to prefer this tool over them, so it stops short of a 5.

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