Skip to main content

Knowledge graph extractor for SystemVerilog, Verilog, and VHDL

Project description

hdl-kgraph

CI

A knowledge graph for your HDL design. hdl-kgraph parses SystemVerilog, Verilog, and VHDL sources and builds a queryable graph of modules, entities, instances, ports, parameters, signals, classes, packages, and the relationships between them — design hierarchy, port connectivity, package imports, class inheritance, clock domains, and more.

Status: alpha (v0.1). SystemVerilog/Verilog structural extraction, the pass-2 linker, SQLite persistence, and the build/status/query/tree CLI are in. The preprocessor and filelists land in M2, VHDL in M3. See ROADMAP.md.

Why

HDL codebases are graphs — hierarchy, connectivity, clock domains — but the tools that understand them are locked inside simulators and synthesis flows. hdl-kgraph extracts that structure into a local-first SQLite database you can query from the CLI, scripts, or (later) AI assistants via MCP. The architecture follows code-review-graph, adapted for hardware.

Quickstart

pip install hdl-kgraph

hdl-kgraph build ./rtl            # parse sources -> ./rtl/.hdl-kgraph/graph.db
hdl-kgraph status                 # files, parse errors, node/edge counts
hdl-kgraph tree soc_top           # print the design hierarchy from a top module
hdl-kgraph query instances-of fifo
hdl-kgraph query unresolved       # what couldn't be resolved (vendor IP, macros)

build accepts --exclude GLOB (repeatable) and --max-file-size KB to keep generated netlists and vendored IP out of the graph. Files with syntax errors still yield partial results; status reports the parse-error count. Unresolved instance targets render as [?] in tree and ambiguous matches as [~0.6] — see the confidence convention in ROADMAP.md.

Coming next:

hdl-kgraph build -f sim/tb.f      # drive the build from a filelist (M2)
hdl-kgraph impact rtl/uart_tx.sv  # what does my change affect? (M4)
hdl-kgraph visualize              # interactive HTML graph (M5)
hdl-kgraph serve --mcp            # MCP server for AI assistants (M6)

What gets extracted

  • Design units: modules, interfaces/modports, packages, programs, checkers, UDPs; VHDL entities, architectures, packages, configurations
  • Structure: instances with port connections and parameter overrides, generate blocks, include/define relationships, filelists
  • Verification: SV classes (UVM hierarchies via inheritance chains), constraints, covergroups, assertions/properties/sequences, clocking blocks
  • Dataflow (M5): signal drivers/readers, clock and reset trees, CDC-suspect crossings

Every cross-file edge carries a confidence score (resolved → heuristic), so the graph is honest about what was proven syntactically vs inferred by name matching. The full schema is documented in ROADMAP.md.

Roadmap at a glance

Milestone Theme
M1 (v0.1) SystemVerilog/Verilog structural graph + CLI
M2 (v0.2) Preprocessor, .f filelists, includes
M3 (v0.3) VHDL + mixed-language linking
M4 (v0.4) Incremental updates, watch mode, impact analysis
M5 (v0.5) Clock/reset/CDC analyses, lint checks, visualization
M6 (v0.6) MCP server for AI assistants
M7 (v0.7) Semantic enrichment (pyslang, GHDL)
M8 (v1.0) C/C++/Python boundary (DPI-C, cocotb), stable API
M9 (v1.x) Chisel/FIRRTL, Amaranth, SpinalHDL
M10 (v1.x) Tcl/SDC/UPF constraints, Perl scripting, SLN portable stimulus

Details and acceptance criteria: ROADMAP.md.

Development

git clone https://github.com/chuanseng-ng/hdl-kgraph
cd hdl-kgraph
pip install -e .[dev]
ruff check . && ruff format --check . && mypy && pytest

See CONTRIBUTING.md. The single most useful contribution right now: the smallest HDL file that breaks extraction.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hdl_kgraph-0.1.0.tar.gz (50.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hdl_kgraph-0.1.0-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file hdl_kgraph-0.1.0.tar.gz.

File metadata

  • Download URL: hdl_kgraph-0.1.0.tar.gz
  • Upload date:
  • Size: 50.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hdl_kgraph-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6b4ea6acbd96cc66b162bd8a4ef740265cfbc4e9b7f557c81579fc4c8667acaa
MD5 e95bedb454ed4552fb65633689ead8af
BLAKE2b-256 39a2f7d0154f29976d9729250a928d6605b4925501ea8321f35ce3b45517ff0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for hdl_kgraph-0.1.0.tar.gz:

Publisher: release.yml on chuanseng-ng/hdl-kgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hdl_kgraph-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: hdl_kgraph-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hdl_kgraph-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6878ad2d34ea1a08546d020963df780dedf80b0fd811cf42b18ea686643628cc
MD5 8b413672e6ea66e7bc2cf64779a1074c
BLAKE2b-256 fda7cab44c6dbb303c4d39635b4486fc5fb2fbaef09c97943936fda46f87105a

See more details on using hashes here.

Provenance

The following attestation bundles were made for hdl_kgraph-0.1.0-py3-none-any.whl:

Publisher: release.yml on chuanseng-ng/hdl-kgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page