A Sphinx autodoc extension for SystemVerilog, powered by
the pyslang parser.
It documents SystemVerilog source the way sphinx.ext.autodoc documents Python: declarations
and their doc comments are pulled directly from source, supporting multiple comment dialects
(a Python-docstring-like native style, NaturalDocs, and Doxygen).
📖 Documentation: https://dvkit.org/fvutils/sphinx-systemverilog/
Status: early development. See
docs/design/for the design and implementation plan.
Installation
pip install sphinx-systemverilog
Quick start
# docs/conf.py
extensions = ["sphinx_systemverilog"]
sv_source_dirs = ["../rtl"]
sv_doc_style = "native"
.. autosvclass:: my_pkg::my_transaction
:members:
Documenting a design, not just its files
For RTL, the extension goes beyond what any single file says and documents the elaborated design — which is where the interesting information lives:
.. sv:instance-tree:: soc
soc
├── u_narrow : cluster #(W=8, WIDE=1'b0)
│ └── g_narrow.u_leaf : leaf #(W=8)
└── u_wide : cluster #(W=32, WIDE=1'b1)
└── g_wide.u_lane : lane #(W=32, LANES=4)
├── g_lp[*].u_g : leaf #(W=32) (×4)
└── u_l[3:0] : leaf #(W=32) (×4)
Generate blocks, instance arrays and resolved parameter values are all included, and every type name is a cross-reference. Alongside it:
sv:used-by— every site that instantiates a module, with its parameters and a link to the source line. No file-at-a-time tool can answer this.sv:parameter-matrix— the parameter values a module is actually elaborated at, as opposed to its declared defaults.
These are also autosvmodule options (:show-instances:, :show-used-by:,
:show-parameters-used:). They are off by default: each one walks the elaborated
hierarchy, so a project that does not ask pays nothing for it.
See Design structure.
Development
source packages/python/bin/activate
pip install -e .
pytest -m "unit or sphinx"
sphinx-build -W docs docs/_build/html
Building against a real design
examples/cva6/ generates documentation from
CVA6, OpenHW Group's RISC-V
application-class core — a real design with generate loops, deep hierarchy and
struct-valued configuration parameters. It is not part of the published docs
(it needs a ~107 MB checkout) and is where the tool gets validated against
something fixtures cannot simulate.
cd examples/cva6
make fetch && make open
License
Apache-2.0.
Metadata
Release files for sphinx-systemverilog 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sphinx_systemverilog-0.6.1.tar.gz | 164.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sphinx_systemverilog-0.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 345.8 kB
Release files / sphinx_systemverilog-0.6.1.tar.gz
| Download URL | sphinx_systemverilog-0.6.1.tar.gz |
|---|---|
| Size | 164.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ed3be9a9a44ccae088246f5bd315c798cca5add1b719ca8efa4db792f4c549c
|
|
BLAKE2b-256 checksum How to use checksums |
9ec9b979cab5c8a9cb9671a2a865bdd26aa0e1189451344fe06dc7b874715096
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / sphinx_systemverilog-0.6.1-py3-none-any.whl
| Download URL | sphinx_systemverilog-0.6.1-py3-none-any.whl |
|---|---|
| Size | 181.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
df1f96c629dd823ab0dcf8a761dfddc8ef9a8fa89aeb4f21f8a56f60a81a28b6
|
|
BLAKE2b-256 checksum How to use checksums |
523f8424d775c6aabab90c5f761ef3afae620a6454a5b752805a26ba145910ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|