Skip to main content

Hardware transactions library for Amaranth

Project description

Transactron

Transactron is a library for Amaranth HDL which makes designing complex digital designs easier. It provides an abstraction for ready/valid handshake signals, automatically generates arbitration circuits, and presents an intuitive, object-oriented-like interface to the circuit designer. The main advantages of using Transactron are:

  • Abstracted handshake signalling makes it easier to design complex, latency-insensitive, pipelined circuits.
  • Object-oriented-like interface allows to encapsulate complex behavior of a module and present a simple interface for its users. The syntax used is friendly for people coming from software development background.
  • Thanks to auto-generated arbitrators and a rich library of reusable components, refactoring circuits is powerful and requires less effort. For example, when constructing pipelines, switching between lock-step, FIFO-coupled or combinational connection is as simple as switching a connector module.

A Transactron module defines a number of methods, which represent actions which can be performed by the circuit. If an action cannot be performed at a given time (e.g. a pop from an empty FIFO queue), the method is marked as not ready. A method can be called by other methods or by transactions, which represent single cycle state changes in a circuit. A given transaction can only be run when every method it calls is ready. When two different transactions call the same method, they are in conflict, which indicates a structural hazard. Transactron ensures that two conflicting transactions never run in the same clock cycle.

Transactron is inspired by Bluespec and its concept of guarded atomic actions. However, while Bluespec requires to follow its paradigm strictly down to simple register assignments, Transactron's abstractions are intended to be used at module boundaries, while the actual logic is written in plain Amaranth. Transactron is just a library and, as such, allows smooth interoperation with plain Amaranth HDL code.

A short video introduction to the Transactron library and its concepts is available here (ORConf 2025).

State of the project

The library is in alpha stage of development, but is already well tested because it serves a foundation for the Coreblocks out-of-order RISC-V CPU.

Documentation

The documentation is automatically generated using Sphinx. It includes a tutorial, which demonstrates how to start developing hardware using Transactron.

Contributing

Set up the development environment following the project documetation.

External contributors are welcome to submit pull requests for simple contributions directly. For larger changes, please discuss your plans with us through the issues page or the discussions page first. This way, you can ensure that the contribution fits the project and will be merged sooner.

License

Copyright © 2022-2024, University of Wrocław.

This project is three-clause BSD licensed.

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

transactron-0.6.0.tar.gz (167.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

transactron-0.6.0-py3-none-any.whl (127.3 kB view details)

Uploaded Python 3

File details

Details for the file transactron-0.6.0.tar.gz.

File metadata

  • Download URL: transactron-0.6.0.tar.gz
  • Upload date:
  • Size: 167.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transactron-0.6.0.tar.gz
Algorithm Hash digest
SHA256 c13f8f0d7c7aa756fdf369036f0d767e12f643499a9372229f05cd25df1ef739
MD5 23747fba46d4107009eaf31e5bb6e5bc
BLAKE2b-256 ca759dc24f75a84076ba116685c9419f56821a1ffe6b5752e388e5262e9388db

See more details on using hashes here.

Provenance

The following attestation bundles were made for transactron-0.6.0.tar.gz:

Publisher: publish-to-pypi.yml on kuznia-rdzeni/transactron

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file transactron-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: transactron-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 127.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transactron-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f948e677bc366f24572c0cc6aafca93cdcb795b5e6d1403ad2c958c3801e9ef3
MD5 741d63a9ed208c0c053856814a97a9f0
BLAKE2b-256 f9f6d6b2b5716ba0f3f95b6047b2a17fa13fbc5195353116c9ee36774d11084f

See more details on using hashes here.

Provenance

The following attestation bundles were made for transactron-0.6.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on kuznia-rdzeni/transactron

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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