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.6.tar.gz (31.6 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.6-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sphinx_doc-1.0.6.tar.gz
  • Upload date:
  • Size: 31.6 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.6.tar.gz
Algorithm Hash digest
SHA256 6d24fe53fa77c48e75ac64da6e09feeed58cc17f2c7d9b651a8fd789bf352194
MD5 30fe779cd20a037286b2619a51464e22
BLAKE2b-256 e2c2831e0f11d0e47fc0a616d487281f0ceab14493b246b40cd73a2ff4bc58c9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sphinx_doc-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 35.2 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 04c1c055982c243445087adf08b402bdb23f57b434a22103454efa3ccb802e57
MD5 8f8f6de3e15ab3411a4150a5871dff17
BLAKE2b-256 e5b1ff6dffd7e81999e78554737c87e26353e45d02be098e20483ffd59828cc7

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