Skip to main content

Automated Sphinx documentation generator for SystemVerilog and Python UVM testbenches

Project description

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

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

sphinx_doc-1.0.9.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

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

sphinx_doc-1.0.9-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_doc-1.0.9.tar.gz.

File metadata

  • Download URL: sphinx_doc-1.0.9.tar.gz
  • Upload date:
  • Size: 33.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for sphinx_doc-1.0.9.tar.gz
Algorithm Hash digest
SHA256 ce04b1556ec1b7fee47e41f1bf7372b0ae35a4a514125795958c0bf89b97014b
MD5 a0751449edbed87e017879d7f06f7253
BLAKE2b-256 1b3e59c54a0086570934ad298b4c460be96e2d6fad87b8c5d706c156d48e75b5

See more details on using hashes here.

File details

Details for the file sphinx_doc-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: sphinx_doc-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 36.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for sphinx_doc-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 2d7758a9438afd92e4b5f544cd6e4fccdb4d62b8e5161bbba471a95718753dfc
MD5 9388ac509affb0fa65b6dea960b62df6
BLAKE2b-256 07c23a982b32cfffc2c5c43da829f95ecd42fa6443b8fd461f720f6bf375717c

See more details on using hashes here.

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