Skip to main content

Sphinx Doc

Automated Sphinx documentation generator for SystemVerilog and Python UVM testbenches.

Features

  • 📄 Automatic Documentation Generation: Parses SystemVerilog (.sv, .svh) files and generates beautiful Sphinx documentation
  • 🐍 Python Support: Also supports Python UVM (PyUVM) testbenches with autodoc
  • 📦 Complete Package: Includes parser, generator, and Sphinx configuration
  • 🎨 Professional Theme: Uses Read the Docs theme with customizable styling
  • 🔍 Detailed Extraction: Extracts classes, modules, functions, tasks, variables, and comments
  • 📚 Collapsible Source: Includes collapsible source code blocks for better readability
  • 🔗 Cross-References: Automatic linking and indexing
  • 🎯 Language Auto-Detection: Automatically detects SystemVerilog and Python files

Installation

pip install sphinx-doc

Sample Files for Testing

After installation, the package includes sample SystemVerilog and Python files in the tests/ directory for quick testing and experimentation.

Sample File Structure

The sample files include:

  • tests/env/: SystemVerilog environment components (agent, env, sequence library)
  • tests/tests/: SystemVerilog test cases (random and directed tests)
  • tests/pyenv/: Python environment components (agent, env, config)
  • tests/pytests/: Python test cases

Try It Out

sphinx-doc -e "/path/to/tests/env" -t "/path/to/tests/tests" --view

Quick Start

Check Version

sphinx-doc --version
# or
sphinx-doc -V

Generate Documentation (Auto-Detect Language)

# Generates RST and builds HTML automatically
sphinx-doc --env ./testbench/env --test ./testbench/tests

# Build and open in browser
sphinx-doc -e ./env -t ./tests --view

# Generate only RST files (skip HTML build)
sphinx-doc --env ./testbench/env --test ./testbench/tests --no-build

Multiple Directories (Mixed Languages)

# Mix SystemVerilog and Python - auto-detected
sphinx-doc -e ./env -e ./pyenv -t ./tests -t ./pytests

Full Options

sphinx-doc \
  --env ./path/to/environment \
  --test ./path/to/tests \
  --output ./documentation \
  --project-name "My UVM Testbench" \
  --author "Your Name" \
  --revision "1.0.0"

Command Line Options

Main Command: sphinx-doc

  • --env PATH or -e PATH: Path to environment directory (auto-detects .sv/.svh or .py files). Can be used multiple times.
  • --test PATH or -t PATH: Path to tests directory (auto-detects .sv/.svh or .py files). Can be used multiple times.
  • --output PATH: Output directory for documentation (default: ./docs)
  • --project-name NAME: Project name for documentation (default: auto-detected)
  • --author NAME: Author name (default: "Your Name")
  • --revision VER: Documentation revision/version (default: "1.0.0")
  • --theme THEME: Sphinx HTML theme (default: sphinx_rtd_theme)
  • --no-build: Skip HTML build (only generate RST files)
  • --view: Open documentation in browser after building
  • --version or -V: Show package version and exit

Documentation Features

SystemVerilog Support

  • Modules: Full module extraction with ports and descriptions
  • Classes: UVM classes with inheritance, variables, and methods
  • Interfaces: Interface definitions with port tables
  • Functions/Tasks: Complete signatures with collapsible source code
  • Comments: Extracts block comments (/* */), line comments (//), and inline comments (//<)
  • Auto-Detection: Automatically finds .sv and .svh files

Python Support

  • Auto-documentation: Uses Sphinx autodoc for Python modules
  • Docstring Styles: Supports Google and NumPy docstring formats
  • Class/Function Documentation: Automatic extraction from Python docstrings
  • Cross-linking: Links between Python and SystemVerilog components
  • Auto-Detection: Automatically finds .py files

Generated Documentation Structure

docs/
├── build/
│   └── html/
│       └── index.html  (Main documentation)
└── source/
    ├── conf.py
    ├── index.rst
    ├── environment.rst
    ├── testcases.rst
    ├── sv_env/
    │   ├── component1.rst
    │   └── component2.rst
    └── sv_tests/
        ├── test1.rst
        └── test2.rst

Example Project Structure

my_uvm_project/
├── env/
│   ├── my_env.sv
│   ├── my_agent.sv
│   └── my_driver.sv
├── tests/
│   ├── base_test.sv
│   └── my_test.sv
├── pyenv/                  (optional)
│   ├── my_env.py
│   └── my_agent.py
└── pytests/                (optional)
    └── test_my_env.py

Comment Style Guide

Block Comments (Before Construct)

/*
 * This is a UVM driver for AXI protocol.
 * Handles write and read transactions.
 */
class axi_driver extends uvm_driver;

Line Comments (Variable Description)

// Transaction queue for storing incoming requests
mailbox #(axi_transaction) req_queue;

Inline Comments (Same Line)

bit [7:0] data;  //< 8-bit data payload

Function/Task Comments (Inside Body)

function void my_function();
  /* Brief: Performs initialization of driver components */
  // Function implementation
endfunction

Customization

The generated conf.py can be customized for:

  • Theme selection
  • Color schemes
  • Sidebar navigation
  • Table of contents depth
  • Code highlighting styles

Building Documentation Manually

If you want to modify and rebuild:

cd docs
sphinx-build -b html source build/html

Requirements

  • Python 3.8+
  • Sphinx 5.0+
  • sphinx-rtd-theme 1.0+
  • sphinx-verilog-domain 0.2+

License

MIT License - See LICENSE file for details

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues and questions:

Changelog

Version 1.0.1 (2025-01-01)

  • Initial release
  • SystemVerilog parsing support
  • Python autodoc integration
  • Collapsible source code
  • Professional theme

Metadata

Release files for sphinx-doc 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sphinx-doc 1.1.1
File Size Uploaded
sphinx_doc-1.1.1.tar.gz 35.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sphinx-doc 1.1.1
File Interpreter ABI Platform
sphinx_doc-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 74.5 kB

Release files / sphinx_doc-1.1.1.tar.gz

Download URL sphinx_doc-1.1.1.tar.gz
Size 35.4 kB
Tags Source
SHA-256 checksum
How to use checksums
94e94234decaeefe0354ef460240e73bec05a5373fa7d5daac63b912d67675fb
BLAKE2b-256 checksum
How to use checksums
eaefa91d79755a9b3c2aba2b43048b3e8878e733df981aabaef612e77bd06d42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.0

Release files / sphinx_doc-1.1.1-py3-none-any.whl

Download URL sphinx_doc-1.1.1-py3-none-any.whl
Size 39.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3f1301f26425fb0009d8efd90d7fb4036d4ff351c8db1bd566528abed777a4a6
BLAKE2b-256 checksum
How to use checksums
edfccb2e23ed6a1238800c5450f3500d3b8a2d079bb280f84bc06f6b9d416e83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.0

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page