/BlueAXI

Primary LanguageBluespecMIT LicenseMIT

Issues MIT License


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

  1. Clone the repo
git clone github.com/esa-tu-darmstadt/BlueAXI.git
  1. Import BlueAXI or a part of the packet in your Bluespec packet:
import BlueAXI :: *;
  1. Add the src directory to your bsc 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.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. 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