BlueAXI
Useful helpers for Bluespec developers.
Explore the docs »
Report Bug
·
Request Feature
Table of Contents
About The Project
This is a collection of AXI 3 and 4 implementations. It contains the basic implementations for
- AXI4 Stream
- AXI4 Full
- AXI4 Lite
- AXI3
in Master and Slave variants.
All implementations come with selectable FIFO buffers using mkPipelineFIFO
, mkBypassFIFO
, mkFIFO
or mkSizedFIFO
as well as the BRAM variants, depending on user selection.
In addition, the packet provides two AXI based primitives:
- Generic AXI4 Lite Slave: Easily build a register interface for your IP. Provide an address map and a list of operations that should occur on reads and/or writes.
- Generic AXI4 Full Master: Request data using AXI4 Full without dealing with protocol limitations and buffering. Request a number of bytes from an address and the Generic AXI4 Full Master makes sure that e.g. 4k Borders are not crossed.
Built With
Getting Started
To get a local copy up and running follow these simple steps.
Prerequisites
Have the Bluespec compiler installed.
Installation
- Clone the repo
git clone github.com/esa-tu-darmstadt/BlueAXI.git
- Import
BlueAXI
or a part of the packet in your Bluespec packet:
import BlueAXI :: *;
- Add the
src
directory to yourbsc
library path during compilation:
bsc ${OTHER_FLAGS} -p path/to/BlueAXI/src
Usage
Using AXI4 Lite is as simple as:
// Instantiate a AXI4 Lite Master with 14 address and 64 data bits using BypassFIFOs as buffers
AXI4_Lite_Master_Rd#(14, 64) m_rd <- mkAXI4_Lite_Master_Rd(0);
// Read from address 16 whenever possible
rule foo;
axi4_lite_read(m_rd, 16);
endrule
// Print the response
rule bar;
let r <- axi4_lite_read_response(m_rd);
printColorTimed(GREEN, $format("Address 16 is %d", r)); // From BlueLib
endrule
For more examples, please refer to the Documentation
Roadmap
See the open issues for a list of proposed features (and known issues).
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE
for more information.
Contact
Embedded Systems and Applications Group - https://www.esa.informatik.tu-darmstadt.de
Project Link: https://github.com/esa-tu-darmstadt/BlueAXI