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.1.0.tar.gz (33.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.1.0-py3-none-any.whl (37.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sphinx_doc-1.1.0.tar.gz
  • Upload date:
  • Size: 33.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.1.0.tar.gz
Algorithm Hash digest
SHA256 1528f17441975d4cf9578d8fe7be509c562aa581f1c7d1ab39ab1aa3a2cfc751
MD5 e3306ebcafb38dd56b9ab638fd2cc7f3
BLAKE2b-256 10ffae932c3b594939789d1bb42c9c6dc18248a9e888dd4a737c1ba40d9dc6fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sphinx_doc-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 37.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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e8012e398bfd6222bf0a6cd1b34a16eb4d72b462a3bfb669b2e3ef21f03b6a7
MD5 09f55ba3eddea0efb19d714ed0dc124b
BLAKE2b-256 75ae2afd9d10732d0ce45f0a108fe72a8d3ed318f6768dbc0f55ebd918b25d5e

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