Metadata-Version: 2.4
Name: axion-hdl
Version: 1.3.0
Summary: Automated AXI4-Lite Register Interface Generator for VHDL modules
Home-page: https://github.com/bugratufan/axion-hdl
Author: Bugra Tufan
Author-email: Bugra Tufan <bugratufan97@gmail.com>
Maintainer-email: Bugra Tufan <bugratufan97@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/bugratufan/axion-hdl
Project-URL: Documentation, https://github.com/bugratufan/axion-hdl/tree/main/docs
Project-URL: Repository, https://github.com/bugratufan/axion-hdl
Project-URL: Bug Tracker, https://github.com/bugratufan/axion-hdl/issues
Keywords: vhdl,axi,axi4-lite,fpga,hdl,register,generator,hardware,eda,rtl,code-generation,automation
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
Classifier: Topic :: Software Development :: Code Generators
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Natural Language :: English
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyYAML>=6.0
Requires-Dist: toml>=0.10.2; python_version < "3.11"
Requires-Dist: tomli-w>=1.0.0
Provides-Extra: gui
Requires-Dist: flask>=2.0; extra == "gui"
Requires-Dist: watchdog>=2.0; extra == "gui"
Requires-Dist: tomli-w>=1.0.0; extra == "gui"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=2.0; extra == "dev"
Requires-Dist: pytest-playwright>=0.4.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.0; extra == "dev"
Requires-Dist: pytest-rerunfailures>=10.0; extra == "dev"
Requires-Dist: playwright>=1.40.0; extra == "dev"
Requires-Dist: black>=21.0; extra == "dev"
Requires-Dist: flake8>=3.9; extra == "dev"
Requires-Dist: build>=0.7; extra == "dev"
Requires-Dist: twine>=3.4; extra == "dev"
Requires-Dist: flask>=2.0; extra == "dev"
Requires-Dist: watchdog>=2.0; extra == "dev"
Requires-Dist: cocotb>=1.9.0; extra == "dev"
Requires-Dist: cocotb-bus>=0.2.1; extra == "dev"
Requires-Dist: cocotbext-axi>=0.1.24; extra == "dev"
Provides-Extra: vhdl-test
Requires-Dist: cocotb>=1.9.0; extra == "vhdl-test"
Requires-Dist: cocotb-bus>=0.2.1; extra == "vhdl-test"
Requires-Dist: cocotbext-axi>=0.1.24; extra == "vhdl-test"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
Requires-Dist: myst-parser>=2.0; extra == "docs"
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# Axion-HDL

**AXI4-Lite register interfaces from VHDL, SystemVerilog, YAML, TOML, XML, or JSON. One command.**

[![PyPI](https://img.shields.io/pypi/v/axion-hdl.svg)](https://pypi.org/project/axion-hdl/)
[![Tests](https://github.com/bugratufan/axion-hdl/actions/workflows/tests.yml/badge.svg)](https://github.com/bugratufan/axion-hdl/actions/workflows/tests.yml)
[![Docs](https://readthedocs.org/projects/axion-hdl/badge/?version=stable)](https://axion-hdl.readthedocs.io/en/stable/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

---

## Install

**For users:**
```bash
pip install axion-hdl
```

**For development:**
```bash
git clone https://github.com/bugratufan/axion-hdl.git
cd axion-hdl
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"  # Includes pytest, cocotb, etc.
```

## Use

```bash
# From VHDL with @axion annotations
axion-hdl -s my_module.vhd -o output/

# From SystemVerilog with @axion annotations
axion-hdl -s my_module.sv -o output/

# From YAML/TOML/XML/JSON
axion-hdl -s registers.yaml -o output/
axion-hdl -s registers.toml -o output/
```

**Output:** VHDL/SystemVerilog modules, C headers, documentation, YAML/TOML/XML/JSON exports.

## Define Registers

**VHDL** — embed in your code:
```vhdl
-- @axion_def BASE_ADDR=0x1000 CDC_EN
signal status  : std_logic_vector(31 downto 0); -- @axion RO
signal control : std_logic_vector(31 downto 0); -- @axion RW W_STROBE
```

**SystemVerilog** — same annotations, different syntax:
```systemverilog
// @axion_def BASE_ADDR=0x1000 CDC_EN
logic [31:0] status;  // @axion RO
logic [31:0] control; // @axion RW W_STROBE
```

**YAML** — standalone file:
```yaml
module: my_module
base_addr: "0x1000"
config:
  cdc_en: true
registers:
  - name: status
    access: RO
  - name: control
    access: RW
    w_strobe: true
```

**TOML** — clean, readable syntax:
```toml
module = "spi_master"
base_addr = "0x0000"

[config]
cdc_en = true
cdc_stage = 2

[[registers]]
name = "control"
addr = "0x00"
access = "RW"
w_strobe = true
description = "SPI control register"

[[registers]]
name = "status"
addr = "0x04"
access = "RO"
r_strobe = true
description = "SPI status register"
```

**Output** — one command:
```bash
axion-hdl -s spi_master.toml -o output --all
```

Generates: VHDL + SystemVerilog modules, C header, HTML docs, YAML/TOML/XML/JSON exports

## Features

- **Multi-format input** — VHDL/SystemVerilog annotations, YAML, TOML, XML, JSON
- **Multi-HDL output** — Generate both VHDL and SystemVerilog register interfaces
- **CDC support** — built-in clock domain crossing synchronizers
- **Subregisters** — pack multiple fields into one address
- **Wide signals** — auto-split 64-bit+ signals across addresses
- **Tested** — 307+ tests, GHDL simulation verified

## Documentation

📖 **[axion-hdl.readthedocs.io](https://axion-hdl.readthedocs.io/en/stable/)**

## Development & Testing

**Quick start:**
```bash
git clone https://github.com/bugratufan/axion-hdl.git
cd axion-hdl
make test  # Auto-installs dependencies and runs all tests
```

The `make test` command automatically:
- Creates a virtual environment if needed
- Installs all test dependencies
- Runs 307+ tests (Python + VHDL + cocotb)

> **Note:** For SystemVerilog linting tests, `verilator` must be installed on your system (`sudo apt install verilator`) for `make test` to pass.

**Manual setup (optional):**
```bash
make setup-dev  # Create venv + install dependencies
source venv/bin/activate
```

**CI/Automated environments:**
```bash
AXION_AUTO_INSTALL=1 make test  # Skip prompt, auto-install
```

**Contributing:**
```bash
git checkout develop
git checkout -b feature/your-feature
# Make changes
make test  # Dependencies auto-installed on first run
# Submit PR to develop branch
```

## License

MIT — [Bugra Tufan](mailto:bugratufan97@gmail.com)
