Skip to main content

Axion-HDL

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

PyPI Tests Docs License: MIT


Install

For users:

pip install axion-hdl

For development:

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

# 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:

-- @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:

// @axion_def BASE_ADDR=0x1000 CDC_EN
logic [31:0] status;  // @axion RO
logic [31:0] control; // @axion RW W_STROBE

YAML — standalone file:

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:

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:

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
  • XDC constraints — instance-independent Vivado false-path constraints per module (--xdc)
  • 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

Development & Testing

Quick start:

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):

make setup-dev  # Create venv + install dependencies
source venv/bin/activate

CI/Automated environments:

AXION_AUTO_INSTALL=1 make test  # Skip prompt, auto-install

Contributing:

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

Metadata

Release files for axion-hdl 1.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for axion-hdl 1.7.1
File Size Uploaded
axion_hdl-1.7.1.tar.gz 393.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for axion-hdl 1.7.1
File Interpreter ABI Platform
axion_hdl-1.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 623.3 kB

Release files / axion_hdl-1.7.1.tar.gz

Download URL axion_hdl-1.7.1.tar.gz
Size 393.1 kB
Tags Source
SHA-256 checksum
How to use checksums
73f9dede9e927196ee9e8177aa9392150fa14566ad3840952f084e514ade4c41
BLAKE2b-256 checksum
How to use checksums
229f3741d03786571cbd3f408d60e34d2d63cc7b89e2d3c8f9a01e546ebe2e08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / axion_hdl-1.7.1-py3-none-any.whl

Download URL axion_hdl-1.7.1-py3-none-any.whl
Size 230.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b0570109da9866d68d2c619cfe50345fd5a68f6a6e8314efadae4b64aa8bbdbb
BLAKE2b-256 checksum
How to use checksums
60b34f6b14a9465ab5ed8f4512434d35698fe4cd66f028f3ef5a718ac70aa902
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.7.1 This release

2 release files

1.7.0

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.11.0

2 release files

0.9.0

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.4.3

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page