io.github.gokeshenzhen/traceweave
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PATH | No | Executable search path for EDA tools and helper binaries. | |
| EGO_TOP | No | EGO top-level installation directory. | |
| VCS_HOME | No | Path to VCS installation. | |
| XLM_ROOT | No | Path to Xcelium installation. | |
| EGO_BINDIR | No | EGO binary directory. | |
| EGO_LIBDIR | No | EGO library directory. | |
| LSF_BINDIR | No | LSF binary directory. | |
| LSF_ENVDIR | No | LSF environment directory, needed when LSF NPI execution is used. | |
| LSF_LIBDIR | No | LSF library directory. | |
| NOVAS_HOME | No | Path to Verdi installation (NOVAS_HOME). | |
| VERDI_HOME | No | Path to Verdi installation, used for FSDB support, NPI backend, and KDB builds. | |
| EGO_CONFDIR | No | EGO configuration directory. | |
| EGO_ESRVDIR | No | EGO event server directory. | |
| CDS_INST_DIR | No | Path to Xcelium/Cadence installation. | |
| EGO_SERVERDIR | No | EGO server directory. | |
| LSF_SERVERDIR | No | LSF server directory. | |
| LD_LIBRARY_PATH | No | Library search path needed for the dlopen chain, e.g. Verdi runtime libraries. | |
| LM_LICENSE_FILE | No | License file or license server for EDA tools. | |
| CDS_LICENSE_FILE | No | Cadence license file or license server. | |
| EGO_LOCAL_CONFDIR | No | EGO local configuration directory. | |
| TRACEWEAVE_AUTO_KDB | No | Set to 0 to opt out of the automatic build_kdb suggestion. Default enabled. | |
| SNPSLMD_LICENSE_FILE | No | Synopsys license server or license file. | |
| TRACEWEAVE_CACHE_DIR | No | Root directory for TraceWeave caches, including KDB and telemetry. Default is ~/.cache/traceweave. | |
| TRACEWEAVE_TELEMETRY | No | Set to 1 to enable local usage telemetry. Default disabled. | |
| TRACEWEAVE_NPI_LSF_BSUB | No | Path to the bsub executable. | |
| TRACEWEAVE_SOURCE_GRAPH | No | Enables the Source Graph frontend. Default is enabled (1). | |
| TRACEWEAVE_NPI_EXECUTION | No | Set to 'lsf' to enable LSF-hosted Verdi/NPI execution. Default is local execution. | |
| TRACEWEAVE_NPI_LSF_BKILL | No | Path to the bkill executable. | |
| TRACEWEAVE_NPI_LSF_QUEUE | No | LSF queue to use for NPI jobs. Example: 'digital'. | |
| TRACEWEAVE_NPI_LSF_PYTHON | No | Path to Python 3.11 used on LSF compute nodes. | |
| TRACEWEAVE_NPI_LSF_TIMEOUT | No | Timeout in seconds for short LSF connectivity jobs. | |
| TRACEWEAVE_BOOTSTRAP_TIMEOUT | No | Timeout in seconds for bounded bootstrap Source Graph preparation. | |
| TRACEWEAVE_HIERARCHY_TIMEOUT | No | Timeout in seconds for full hierarchy construction guardrail. | |
| TRACEWEAVE_CONNECTIVITY_ROUTE | No | Connectivity backend route: 'auto' or 'source_graph'. Default is auto. | |
| TRACEWEAVE_NPI_LSF_KDB_TIMEOUT | No | Timeout in seconds for LSF KDB build jobs. Default is 1260. | |
| TRACEWEAVE_NPI_LSF_STAGING_DIR | No | Shared staging directory for LSF NPI jobs. Defaults under the TraceWeave cache root. | |
| TRACEWEAVE_SOURCE_GRAPH_PYTHON | No | Path to a Python interpreter with the pinned pyslang frontend, when using a separate environment. | |
| TRACEWEAVE_COMPILE_SOURCE_INDEX | No | Set to 1 to enable the transient shared compile-source index, or 0 to disable. Default enabled. | |
| TRACEWEAVE_SOURCE_GRAPH_TIMEOUT | No | Worker deadline in seconds for Source Graph builds. Default is 120. | |
| TRACEWEAVE_FSDB_GROUP_MAX_SIGNALS | No | Maximum number of signals for FSDB native group reads. Default is 16. | |
| TRACEWEAVE_NPI_ALLOW_DEGRADED_KDB | No | Set to 0 to disable the use of degraded KDBs with elaboration errors. Default enabled. | |
| TRACEWEAVE_NPI_LSF_EXTRA_ARGS_JSON | No | JSON array of additional LSF scheduler option/value pairs, e.g. '["-R", "select[...]"]'. | |
| TRACEWEAVE_SOURCE_GRAPH_DISK_CACHE | No | Set to 1 to enable the exact content-addressed Source Graph disk cache. Default disabled. | |
| TRACEWEAVE_BOOTSTRAP_MAX_SOURCE_BYTES | No | Maximum source bytes for bounded bootstrap. | |
| TRACEWEAVE_HIERARCHY_MAX_SOURCE_BYTES | No | Maximum total source bytes accepted for full hierarchy construction. | |
| TRACEWEAVE_BOOTSTRAP_MAX_INCLUDE_DEPTH | No | Maximum include depth for bounded bootstrap. | |
| TRACEWEAVE_BOOTSTRAP_MAX_SOURCE_INPUTS | No | Maximum number of source inputs for bounded bootstrap. | |
| TRACEWEAVE_HIERARCHY_NPI_SOURCE_OVERLAY | No | Controls optional NPI source file/line overlay for hierarchy: 'auto', 'force', or 'off'. Default is auto. | |
| TRACEWEAVE_BOOTSTRAP_MAX_HIERARCHY_DEPTH | No | Maximum hierarchy depth for bounded bootstrap. | |
| TRACEWEAVE_BOOTSTRAP_MAX_INVENTORY_BYTES | No | Maximum inventory bytes for bounded bootstrap. | |
| TRACEWEAVE_BOOTSTRAP_MAX_INVENTORY_FILES | No | Maximum number of inventory files for bounded bootstrap. | |
| TRACEWEAVE_SOURCE_GRAPH_FRONTEND_VERSION | No | Expected Source Graph frontend version, e.g. 11.0.0. | |
| TRACEWEAVE_SOURCE_GRAPH_SEMANTIC_SESSION | No | Set to 1 to enable the guarded Source Graph semantic session accelerator. Default disabled. | |
| TRACEWEAVE_COMPILE_SOURCE_INDEX_MAX_BYTES | No | Maximum bytes for the shared compile-source index. | |
| TRACEWEAVE_COMPILE_SOURCE_INDEX_MAX_FILES | No | Maximum number of files for the shared compile-source index. | |
| TRACEWEAVE_SOURCE_GRAPH_DISK_CACHE_MAX_BYTES | No | Maximum total bytes for the Source Graph disk cache. | |
| TRACEWEAVE_SOURCE_GRAPH_RUNTIME_PLUSARGS_JSON | No | JSON list of runtime-only plusargs to exclude from Source Graph replay, e.g. '["+PROJECT+RUNTIME_MODE"]'. | |
| TRACEWEAVE_SOURCE_GRAPH_DISK_CACHE_MAX_ENTRIES | No | Maximum number of entries in the Source Graph disk cache. | |
| TRACEWEAVE_SOURCE_GRAPH_FRONTIER_MAX_INSTANCES | No | Maximum number of instances admitted during bounded Source Graph frontier expansion. | |
| TRACEWEAVE_SOURCE_GRAPH_SEMANTIC_SESSION_IDLE_TTL | No | Idle time-to-live in seconds for the Source Graph semantic session. | |
| TRACEWEAVE_SOURCE_GRAPH_SEMANTIC_SESSION_MAX_INPUTS | No | Maximum number of source inputs allowed in the semantic session context. | |
| TRACEWEAVE_SOURCE_GRAPH_SEMANTIC_SESSION_MAX_INSTANCES | No | Maximum number of instances allowed in the semantic session context. | |
| TRACEWEAVE_SOURCE_GRAPH_SEMANTIC_SESSION_MAX_RSS_BYTES | No | Maximum RSS bytes allowed for the semantic session process. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_sim_pathsA | Discover 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). |
| parse_sim_logA | Parse a VCS or Xcelium simulation log and return grouped runtime failures by signature. The simulator argument is required and is not auto-detected here. candidate_previous_logs uses bounded evidence sampling and excludes compile/elaboration logs. The first error group automatically includes about 100 lines of surrounding log context in first_group_context; use get_error_context for other groups. |
| diff_sim_failure_resultsA | Compare normalized failure events from two simulation logs. Returns resolved, persistent, and newly introduced failures, plus changes in failure type, X/Z presence, first-failure timing, and a convergence summary. If a simulator overwrites the same log path between runs, pass new_log_path only after parse_sim_log has captured the baseline snapshot, or pass snapshot IDs returned by parse_sim_log. |
| get_error_contextA | Extract raw log text around a given error line. Typically used with first_line returned by parse_sim_log. |
| search_signalsA | Search for signals in a waveform file (FSDB/VCD) 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 |
| get_signal_at_timeB | Query a signal value in a waveform file at a specific time in ps. FSDB support depends on fsdb_runtime.enabled. |
| get_signal_transitionsA | Return transitions for a signal over the strict closed time range [start_time_ps, end_time_ps] (capped at 1000 by default; truncated=true + hint mark a clipped result, transition_count is always the total found). FSDB support depends on fsdb_runtime.enabled. The last value-change strictly before the window is returned separately as predecessor and is never mixed into transitions. |
| get_signals_around_timeA | Return values and transitions for multiple signals 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 Typical window_ps:
The server enforces a cap of MAX_WAVE_WINDOW_CYCLES (default 256) clock cycles per call, computed at runtime from an auto-detected clock_period_ps. It also rejects center_time_ps past the recorded simulation end. For multi-cycle sampling, get_signals_by_cycle still requires an explicit clock_path. FSDB support depends on fsdb_runtime.enabled. If a value_at_center is a SUB-CYCLE TRANSIENT — a combinational glitch at the clock edge that settles back within the same cycle (e.g. an interconnect mux re-settling to idle for ~1ns at each edge) — the result sets return_mode="values_only" keeps the atomic multi-signal sample but strips the transition lists from every signal: each entry carries value_at_center + window_transition_count (+ any transient annotation, computed before stripping). Use it when you only need the values at one instant — e.g. comparing the same time point across several traces — instead of paying for transition history or falling back to one get_signal_at_time call per signal. |
| get_signals_by_cycleA | Return cycle-by-cycle sampled values for multiple signals aligned to a clock edge. Useful for state machines, pipelines, and round-by-round algorithm checks. |
| get_waveform_summaryA | Return basic waveform metadata such as format, duration, and top modules. FSDB support depends on fsdb_runtime.enabled. |
| build_tb_hierarchyA | Stream 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 handle. Use a completed handle with get_tb_subtree / lookup_tb_files / find_tb_instance / get_tb_file_detail / get_tb_class_hierarchy / dump_tb_section to access the full data on demand. |
| scan_structural_risksA | Run a Scope 1 regex-based structural risk scan on RTL/TB source files from the compile file list. 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. |
| analyze_failuresA | Core failure-analysis tool. Focuses on the first occurrence of a single failure group and returns the log summary, raw error context, and waveform snapshot. FSDB support depends on fsdb_runtime.enabled. |
| analyze_failure_eventB | Start from a single normalized failure_event and combine waveform, hierarchy, and source information to return recommended instances, signals, and source files. |
| recommend_failure_debug_next_stepsA | Choose the highest-priority failure to investigate from the current log, waveform, and optional hierarchy, then recommend signals, instances, and suspected failure class. Also suggests a diff_sim_failure_results call to use on the next run. |
| get_diagnostic_snapshotA | Cold-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 a previous case — confirm it or re-run get_sim_paths. |
| explain_signal_driverA | 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. |
| find_signal_loadsA | 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. |
| trace_signal_pathA | Find 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, NOT temporal driver direction — use explain_signal_driver for driver semantics. |
| build_kdbA | Auto-build a Verdi KDB from a parsed compile log using vericom + elabcom. 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//); cache hits reuse the previous KDB without re-invoking Verdi. When TRACEWEAVE_NPI_EXECUTION=lsf, every cache-miss/rebuild runs on the configured LSF queue and never falls back to a local licensed build. A runnable build.sh is written next to the KDB for inspection or reproduction. Requires VERDI_HOME with bin/vericom and bin/elabcom. |
| trace_x_sourceA | 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. backend_status reports selected versus actual backend; trace_restarted reports a whole-trace retry. Source Graph chain nodes preserve claim_semantics, so an exact positive edge can be used without implying global coverage or exclusive drive. NPI testbench-driven/cross-check evidence is preserved on the node. |
| get_tb_subtreeA | Return a slice of the component_tree starting at |
| lookup_tb_filesA | Query 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). |
| find_tb_instanceB | Locate instance(s) in the component_tree by exact path OR by module name. |
| get_tb_file_detailB | Return 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_class_hierarchyC | Return UVM/class inheritance tree built from compiled-source scan results. Use |
| dump_tb_sectionA | Escape hatch: return a named raw section of the full hierarchy result. Prefer targeted handle tools — this is intentionally heavy. |
| cursor_setA | Register a named time anchor (in ps) for the current session. Other tools that take a time may reference '@' 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_-]*. |
| cursor_listA | List all cursors registered in the current session, ordered by time. |
| cursor_deleteA | Delete a named cursor. Returns whether the cursor existed. |
| diff_first_divergenceA | Find the first time two signals hold unequal values. 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. Reads existing waveforms only — does NOT rerun simulation. |
| periodA | Estimate a signal'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. |
| suggest_handshakesA | Scan 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. Reads existing waveforms only. |
| suggest_protocol_bundlesA | Scan 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. Direction tags are mechanical discovery facts only; unknown/conflicting markers degrade to direction_tag='unknown' rather than guessing a side. Reads existing waveforms only. |
| sweep_handshakesA | 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. |
| verify_windowA | Evaluate a temporal predicate 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 thousands of cycles you cannot read yourself. Templates, not a DSL: a term is {signal, op, value} (op: eq/ne/gt/ge/lt/le/is_x/is_known); a predicate is a list of terms (implicit AND — run two calls for OR). 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 where B must STILL hold the NEXT cycle, e.g. HTRANS/valid held through a wait state), and sequence (the per-accepted-beat increment of a signal — address-stride checks like AHB haddr +stride; supports modulo for WRAP bursts and restart_when for burst boundaries). x/z cycles are reported as unknown (never silently passed); an implication whose response window runs past end-of-trace is reported inconclusive (never silently failed). On a finding it sets violating_signal + a next_action to explain_signal_driver (bus facts do not self-attribute master/slave). Use to prove/disprove an RTL inference in one call. Reads existing waveforms only. |
| reconstruct_transactionsA | 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, unmatched=hang signature). One generic core, not a tool per protocol. AXI READ: req=AR (req_valid=arvalid, req_ready=arready, req_id=arid), cmp=R (cmp_valid=rvalid, cmp_ready=rready, cmp_id=rid, cmp_last=rlast); AXI WRITE: req=AW (awvalid/awready/awid), cmp=B (bvalid/bready/bid, no cmp_last). Pass req_fields/cmp_fields (e.g. araddr,arlen / rresp) to capture payload per txn; pass req_len (arlen/awlen) to also check each txn's beat_count against AxLEN+1 (beat_count_mismatch). Out-of-order completion across ids is supported (per-id FIFO); reorder_count is an informational FACT (legal in AXI), latency is a distribution not an 'outlier' verdict. Reads waveforms only. |
| inspect_handshakeA | 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 while the transfer is still stalled), and premature valid deassertion (a stalled beat whose valid/htrans drops before ready/HREADY arrives — the AHB master-not-waiting-for-HREADY bug, which needs no payload to detect). For AHB (valid_htrans) it ALSO runs x_while_valid (a control field is x/z while valid is asserted) and, when hwrite+write_data are given, a write data-phase HWDATA-hold check (HWDATA must stay stable through a write data-phase wait state). Protocol-agnostic: AXI *valid/*ready, an AHB pair (ready=hready, valid=a 1-bit 'htrans!=IDLE' signal, payload=[haddr,hwrite,hsize] address-phase control which must hold while hready is low; HWDATA goes in write_data, not payload), a generic valid-ready stream, or a credit interface. Returns coverage facts for the checks it actually ran (stall, backpressure, payload-hold, valid-hold, x-while-valid, write-data-hold) without assigning protocol side. Auto-registers a cursor at the first problem (x-while-valid > payload-hold > write-data hold > premature deassertion > long stall > longest stall). On AHB it also returns a protocol_semantics receipt naming which metrics are faithful vs suppressed. For the one-sided violations (x-while-valid, payload-hold, write-data hold, premature deassertion) it also returns a structured |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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