TraceWeave
Portable MCP runtime for RTL logs and VCD; repository setup adds FSDB and site EDA integration
Connector by gokeshenzhen · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/gokeshenzhen-traceweave
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: debugging
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 32 read · 5 write · 1 delete · 4 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 42
Read from the source code; the running server may list different tools.
Read 32 · Look things up without changing anything.
analyze_failurescursor_listdiff_first_divergencediff_sim_failure_resultsexplain_signal_driverfind_signal_loadsfind_tb_instanceget_diagnostic_snapshotget_error_contextget_formal_pathsget_signal_at_timeget_signal_transitions
Show 20 more tools
get_signals_around_timeget_signals_by_cycleget_sim_pathsget_tb_class_hierarchyget_tb_file_detailget_tb_subtreeget_waveform_summaryinspect_handshakeinspect_tlullookup_tb_filesparse_sim_logperiodrecommend_failure_debug_next_stepsscan_structural_riskssearch_signalssuggest_handshakessuggest_protocol_bundlessweep_handshakestrace_signal_pathverify_window
Write 5 · Create, change, send or run things.
build_kdbbuild_tb_hierarchycursor_setresolve_packed_fieldstrace_x_source
Delete 1 · Delete, drop, revoke or wipe things.
cursor_delete
Not yet classified 4 · We could not tell from the name and description.
analyze_failure_eventdump_tb_sectionreconstruct_transactionstrace_divergence
Files it touches
- Any path the agent passes to its tools
Tools (42)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
analyze_failure_eventStart from a single normalized failure_event and combine waveform, hierarchy, and source information to return recommended instances, signals, and source files.
analyze_failuresInspect one failure group with log context and a waveform snapshot at its reliable timestamp.
build_kdbAuto-build a Verdi KDB from a parsed compile log using vericom + elabcom. Preserves recorded compilation-unit order and parent include context, with bounded log-anchored path recovery for nested filelists when project variables are absent or stale. Does not execute project setup scripts; incomplete replay returns a precheck failure. Use this when the simulator is Xcelium (xrun) and the NPI backend reports no KDB, or to force-refresh a stale cached KDB. Output is cached under TRACEWEAVE_CACHE_DIR (default ~/.cache/traceweave/kdb/<hash>/); cache hits reuse the previous KDB without re-invoking Ve…
build_tb_hierarchyStream one compile/elaborate log plus optional complementary phase logs, scan source files, and cache the full testbench hierarchy server-side without retaining raw source bodies. For split VCS flows, prefer the source-compile log as compile_log and pass VHDL/source/elaboration companions in build order; later connectivity tools continue using that primary path. Returns a SLIM payload: project, stats, tree_skeleton (depth 2), interfaces, ambiguous_basenames, build_metrics, and hierarchy_handle. A configured timeout/source-byte guard returns build_status='blocked' plus a fixed blocker and no ha…
cursor_deleteDelete a named cursor. Returns whether the cursor existed.
cursor_listList all cursors registered in the current session, ordered by time.
cursor_setRegister a named time anchor (in ps) for the current session. Other tools that take a time may reference '@<name>' instead of copying ps integers across calls. Cursors are process-scoped and dropped on server restart. Names must match [A-Za-z_][A-Za-z0-9_-]*.
diff_first_divergenceCompare signals or independently bound SV expressions for the first observed known-value difference, with explicit coverage and earliest_difference_proven. X/Z, missing values, truncation and time precision gaps never prove equality. Works across two waveforms (passing run vs failing run) or within one waveform between two signals (expected vs actual). Auto-registers a cursor at the divergence time so downstream calls can reference it by name. Reports actual event-page capability and read volume in reading. When present, first_divergence_time_fs is exact; the integer-ps cursor rounds up and ma…
diff_sim_failure_resultsCompare failure events: resolved, persistent, new, timing, X/Z, and convergence. For overwritten logs, capture parse_sim_log snapshots before rerunning, then use snapshot IDs or new_log_path with its previous snapshot.
dump_tb_sectionEscape hatch: return a named raw section of the full hierarchy result. Prefer targeted handle tools — this is intentionally heavy.
explain_signal_driverTrace a waveform signal to its RTL driver and file:line (assignments, procedural blocks, module outputs); recursive=true crosses instances. Default traceweave.driver.compact.v1 is lossless: all retained evidence is in this response. In result.driver_chain/bit_provenance, statement_semantics_ref indexes evidence_tables.statement_semantics; statement_evidence_ref indexes {locations_ref,evidence_indices_ref} pairs in evidence_tables. Preserve row/index order; table entries and location occurrences are not writer counts. output_format='full' restores the original shape/indentation. include_depen…
find_signal_loadsList 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 pr…
find_tb_instanceLocate instance(s) in the component_tree by exact path OR by module name. `path` and `module` are mutually exclusive.
get_diagnostic_snapshotCold-start accelerator that aggregates cached tool results into a single summary view. It never triggers sub-steps and only reads cache. Returns availability status, compact summaries, and suggested calls for missing steps. The result cache is process-global and survives across cases, so at the start of a new session pass your target case (verif_root and/or case_dir): the snapshot validates the cache against it and reports a clean cold start if the cache belongs to a different case. If you pass no target, a cached sim_paths is returned with summary.carried_over=true to signal it may belong to …
get_error_contextExtract raw log text around a given error line. Typically used with first_line returned by parse_sim_log.
Show 27 more tools
get_formal_pathsDiscover local formal project directories, role-labelled logs, and exported VCD/FSDB files under a bounded root. JasperGold is the first discovery provider. This tool reports filesystem evidence only: it does not parse proof results or classify a waveform as a counterexample, witness, SST trace, or reachable trace.
get_signal_at_timeRead a signal or evaluate an SV expression at one time. Pass formulas as {expr,bindings,types} or explicitly use typing=wave_bits. FSDB support depends on fsdb_runtime.enabled.
get_signal_transitionsDescription is built at runtime.
get_signals_around_timeReturn values and transitions for signals or SV expressions in a NARROW window around a target timestamp (typically the failure time). Designed for local causal-chain inspection; NOT for bulk trace extraction. For round-by-round or multi-cycle sampling use get_signals_by_cycle. Unit reminder: all times are picoseconds. If the sim log reports `Time: X ns`, set center_time_ps = X*1000 (example: 75,100 ns -> 75,100,000 ps). Typical window_ps: - Glitch inspection: 1,000 - 5,000 ps - One clock cycle: = clock_period_ps (NOT exposed by get_waveform_summary…
get_signals_by_cycleDescription is built at runtime.
get_sim_pathsDiscover compile logs, simulation logs, and waveform files under a verif directory. If case_name is omitted, the tool returns available cases. For non-standard layouts you may pass explicit sim_log / wave_file / compile_log paths; any provided field is used as-is and the omitted ones are still auto-discovered (a sim_log path also anchors discovery of the matching waveform and compile/elab logs).
get_tb_class_hierarchyReturn UVM/class inheritance tree built from compiled-source scan results. Use `root_class` to start from a specific class; empty = all roots.
get_tb_file_detailReturn symbols (modules/classes/interfaces) defined in a single compiled file. If the path is not in the compile set, error includes basename-similar suggestions.
get_tb_subtreeReturn a slice of the component_tree starting at `root` (dotted instance path) with up to `depth` levels. Use after build_tb_hierarchy to drill into a branch without pulling the whole tree into context.
get_waveform_summaryReturn waveform format, duration, scale, top modules and a bounded signal sample. For FSDB, read metadata_query_mode, sample_signals_order and top_modules_complete; a sample never proves full-design coverage. FSDB support depends on fsdb_runtime.enabled.
inspect_handshakeInspect a handshake with signal paths or SV expressions for valid, ready and payload; clocks/control must have the required bit width. Samples strictly before each selected physical clock edge (sampling_phase=before); all changes at that timestamp are excluded. Classify a clocked valid/ready handshake cycle-by-cycle and report protocol facts that leave no value pattern in scoreboard logs: stalls (valid high, ready low), the longest/over-threshold stall windows, backpressure imbalance (ready high, valid low), and — when payload signals are given — payload-hold violations (a payload that changes…
inspect_tlulInspect TL-UL fields mapped to signal paths, fixed selections or SV expressions. Uses strict before-edge sampling for A/D fields and nested checks (sampling_phase=before). Inspect explicitly mapped TL-UL A/D fields with the existing handshake and transaction engines. Missing mappings return mapping_required; packed widths are never guessed. Reports accepted fields, stalls, source pairing and latency, reset/unknown history, carry-in and tail boundaries. Read checks and gaps; no integrity or full compliance claim.
lookup_tb_filesQuery the compiled file set by objective scan facts. At least one filter is required. Use this to disambiguate multi-version files (basename collisions are also reported via build_tb_hierarchy.ambiguous_basenames).
parse_sim_logGroup runtime failures from VCS, Xcelium, or Verilator logs. Requires simulator. Includes first-group context. candidate_previous_logs excludes compile/elaboration logs with bounded sampling. Verilator compiler/host diagnostics are excluded; unknown time stays null.
periodEstimate a 1-bit signal or SV expression's dominant period inside a window and flag the first beat that deviates from it. Use for rhythm/throughput questions an LLM cannot eyeball from a transition dump: stalled clocks, dropped burst beats, backpressure bubbles, irregular strobes. The dominant period is the median edge-to-edge interval; the first off-beat is auto-registered as a cursor. Reads existing waveforms only — does NOT rerun simulation.
recommend_failure_debug_next_stepsPrioritize a failure using log, waveform, and hierarchy; recommend signals, instances, and failure class. Also suggests a diff_sim_failure_results call to use on the next run.
reconstruct_transactionsReconstruct transactions using signal paths or SV expressions for channel fields. Samples acceptance and fields strictly before each selected physical clock edge (sampling_phase=before); all changes at that timestamp are excluded. Reconstruct id-correlated request/response transactions from two handshake channels: walk every clock edge, match accepted request beats to completion beats by id, and return per-transaction latency plus aggregate facts (outstanding curve incl. per-id peak, ordering, window-local unmatched endpoints). Inspect coverage_status and analysis: state/read budgets return a …
resolve_packed_fieldsResolve requested named packed members from the current content-anchored Source Graph artifact and an exact dump declaration. Requires current hierarchy and complete semantic type evidence; may run the bounded license-free worker. Returns mapping_required when identity, active instance specialization, type or range cannot be proved. Returned explicit selections are a compile snapshot: re-resolve after input changes. No waveform/source version inferred.
scan_structural_risksScan compiled RTL/TB sources for structural risks. fast runs lexical rules; auto (default) also reuses compatible semantic facts without a cold frontend build; deep explicitly requests a bounded, license-free semantic pass for ties, open inputs and constant comparisons. This is a heuristic detector: it reports suspicious patterns, not confirmed root causes. Always read coverage_status: only complete with total_risks=0 supports a clean-scan observation; zero_coverage scanned no supported sources, and degraded covers only part of the source set. Read lexical_coverage_status and semantic.status s…
search_signalsSearch for signals in a waveform file (FSDB/VCD/FST) and return full hierarchical paths. Use this when the client knows a leaf signal name but not the full path. keyword accepts a single string OR a list of strings: pass a list to batch several lookups in one call (one result entry per keyword, in input order) instead of issuing consecutive single-keyword searches. Each result also carries `direction` (input/output/inout/implicit/...) and `var_type` (wire/reg/integer/real/parameter/memory/...), so callers can filter by port direction or language type within a scope by combining a hierarchical …
suggest_handshakesScan a waveform and propose ready-to-use inspect_handshake bundles: it pairs *valid/*ready signals by scope and stem, finds the clock, and groups the channel payload buses (the signals that must hold steady during a stall). Use this BEFORE inspect_handshake so you don't have to hand-assemble {clock, valid, ready, payload} signal paths. Covers AXI *valid/*ready, generic valid/ready, and req/ack. It does NOT synthesise an AHB 'valid' (there is no literal valid signal — it is htrans != IDLE); use suggest_protocol_bundles for AHB/APB. Port _i/_o suffixes retain actual paths and directions; ambiguo…
suggest_protocol_bundlesScan a waveform for protocol-specific AHB/APB bundles. AHB candidates return ready-to-use inspect_handshake args with valid_htrans + ready + payload (address-phase control), plus hwrite/write_data (HWDATA, for the write data-phase hold check) ONLY on initiator-side interfaces (a responder's HWDATA is an interconnect-mux output that glitches at the clock edge, so the check is withheld there to stay zero-FP), because AHB has no literal valid signal. APB candidates return psel/penable/pready facts and loudly report that inspect_handshake still needs a derived valid signal for psel && penable. Dir…
sweep_handshakesSamples strictly before each selected physical clock edge (sampling_phase=before). Bounded handshake anomaly sweep: discover 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. Al…
trace_divergenceUse real signal paths as roots; supported RTL expressions are extracted internally. Verify a waveform difference and backtrace its active data/control dependencies on both sides within explicit time/work limits. Uses the normal trusted NPI, Source Graph, Static route. Each side requires its exact compile context and a current build_tb_hierarchy result. Explicit signal/scope mappings are required across different designs. Reports evidence, candidates and honest frontiers; does not claim a unique root cause or rerun simulation. Clock mode requires aligned clock_a/clock_b edges. History never ext…
trace_signal_pathFind a structural connectivity path between two signals. A trusted Verdi NPI result wins; otherwise TraceWeave tries a bounded, dual-endpoint Source Graph before Legacy Static. Source Graph follows only projected IR facts across bindings and supported combinational dependencies. claim_semantics reports confidence in a proved positive path independently from global coverage; a found path is not an exhaustive enumeration. A no-path result is exact only when negative_claim_allowed=true; an inconclusive result falls through to unsupported_reason='static_backend_no_path_api'. This is connectivity, …
trace_x_sourceStart from a real signal path; supported RTL expressions are extracted internally. When a signal shows X/Z at a target time, trace its propagation chain through upstream driver logic. Uses the selected connectivity route (trusted local/LSF NPI, bounded Source Graph, then Static). A Source Graph trace may expand to bounded direct-child frontiers when an unresolved parent net can be driven by a child output. Any backend or artifact change discards the partial chain and restarts from the original signal, so one returned chain never mixes provenance. Connectivity queries run outside waveform locks…
verify_windowCheck signal conditions or SV expression predicates over a clock window and return a precise verdict (holds) plus a concrete witness/counterexample (cycle + sampled values). You state the predicate; the tool checks it against the waveform over the requested cycles. A term is {signal, op, value} (op: eq/ne/gt/ge/lt/le/is_x/is_known) or a typed {expr,...} using SV truth conversion. A predicate is a list of terms (implicit AND). Modes: always(P), never(P), eventually(P), implication (A |-> B within N cycles, the protocol-response template; set overlap=false for |=> = a stability/hold property whe…
Signals
- Stars
- 121
- Forks
- 31
- Open issues
- 0
- Contributors
- 1
- Weekly downloads
- 63
- Last commit
- Oct 13, 2026 (16 days ago)
- Last release
- Aug 30, 2026 (2 months ago)
- Last package publish
- Aug 30, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.gokeshenzhen/traceweave- Version
- 2.0.2
- Auth
- No auth
- Packages
- pypi traceweave-mcp
- License
- MIT
- Repository
- github.com/gokeshenzhen/TraceWeave
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
TraceWeave MCP server. Agent Mart. https://agentmart.dev/connectors/gokeshenzhen-traceweave (last updated 2026-10-24)