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 PATHor-e PATH: Path to environment directory (auto-detects .sv/.svh or .py files). Can be used multiple times.--test PATHor-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--versionor-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:
- GitHub Issues: https://github.com/SanCodex/sv-sphinx-doc/issues
- Documentation: https://sphinx-doc.readthedocs.io
Changelog
Version 1.0.1 (2025-01-01)
- Initial release
- SystemVerilog parsing support
- Python autodoc integration
- Collapsible source code
- Professional theme
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sphinx_doc-1.0.8.tar.gz.
File metadata
- Download URL: sphinx_doc-1.0.8.tar.gz
- Upload date:
- Size: 32.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8eb6135368296b8bd53a598ba598ba60760904204423c1d38313054fdfa47b4b
|
|
| MD5 |
9ffa36571289ee6ab0c7258873d3016e
|
|
| BLAKE2b-256 |
ddd6604342bb5807e6e94f74df473dc00c7fdf23b6f19484d306d95d472dda57
|
File details
Details for the file sphinx_doc-1.0.8-py3-none-any.whl.
File metadata
- Download URL: sphinx_doc-1.0.8-py3-none-any.whl
- Upload date:
- Size: 35.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a539598ddca75371c988ab4a3119741958d7877b577448bc7879a8b8f4c0fee
|
|
| MD5 |
5ff53dde9ad98fbbceef46bb27a5eb0b
|
|
| BLAKE2b-256 |
37d7eff7810dc7ad971f0d969f16fa240f130942eac80859e061425cc7ca8642
|