Home

Awesome

1st CLaaS on PYNQ

1st CLaaS on PYNQ, brings the use model of 1st CLaaS, a framework for accelerating workloads with FPGAs on Cloud, by streaming data through web-protocols to PYNQ FPGAs, but with the capabilities of RPAHX (Rapid Prototyping of Hardware Accelerators on Xilinx FPGAs), an automation framework to quickly prototype a hardware accelerator and integrate on a Zynq/Microblaze based design on Xilinx FPGAs. The framework also has automated scripts to setup and securely expose your local FPGA to the internet, through Cloudflare Zero Trust on your own domain!

RPHAX - Rapid Prototyping of Hardware Accelerators on Xilinx FPGAs

RPHAX provides a quick automation flow to develop and prototype hardware accelerators on Xilinx FPGAs. The user can develop the Hardware Accelerator in TL-Verilog/Verilog/System Verilog and use this flow to automatically package into an IP(AXI4, AXI4Lite, AXI Stream), create a Zynq based block design, top level wrappers and generate the bitstream.

Requirements

Getting Started

git clone https://github.com/shariethernet/RPHAX.git

python rphax.py -h

Generate Mode

python rphax.py generate [-b] Filename

Flags

Support to be added to automatically upload Hardware Handoff and Bitstream to PYNQ Board

Working

Rename the bitstream and hardware handoff to the same name and upload to the jupyter notebook. Write Python overlay based on the template to accelerate specific functions.

To know more stay tuned for the training on PYNQ based FPGA Design.

Refer examples and PYNQ-Overlay Documentation, to learn about developing overlays

Connect Mode

python rphax.py connect

Manual setup

Makerchip Mode

Syntax

rphax.py makerchip [--makerchip_args MAKERCHIP_ARGS] design

A wrapper that opens your local design in Makerchip-app. You can append makerchip arguments to the command. See Makerchip-app for more details

Flags

Overlays

Refer examples for the custom python overlay. Several TL-Verilog examples have been provided in both the wrapped form ready to use in this framework, as well as in the unwrapped form to enable you get your hands-on with TL-Verilog. But this framrwork does not mandate the use of TL-V, Verilog/System verilog examples have been provided.

Examples

Video Walkthrough

Click on the below to view the video

Video

Customizing Clock Bus parameters [OPTIONAL]

All the Clock Bus prameters are pre-configured and these sub-section(s) are optional

Using Vivado TCL

Changing the Clock Frequency
set_property VALUE _your_clk_freq_in_Hz_ [ipx::get_bus_parameters -of_objects [ipx::get_bus_interfaces -of_objects [ipx::current_core]  axi_clk] FREQ_HZ]
Associating more ports with the same clock
set_property VALUE m_axis:s_axis [ipx::get_bus_parameters -of_objects [ipx::get_bus_interfaces -of_objects [ipx::current_core]  axi_clk] ASSOCIATED_BUSIF]

Using GUI

Repackaging

Further work

Note

Sponsors

This project was supported by Google Summer of Code 2022 under Free and Open Source Silicon Foundation (FOSSi) (as a GSoC umbrella organization), with mentorship from Redwood EDA and Still Water Supercomputing

<p> <span> <img src="https://upload.wikimedia.org/wikipedia/commons/0/08/GSoC_logo.svg" alt="gsoc-logo" height="80"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <img src="https://www.fossi-foundation.org/assets/fossi_logo_large.png" alt="fossi-logo" height="80"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <img src="https://user-images.githubusercontent.com/11302288/130831451-1c3b1541-06f2-4c0e-bbaf-8e0026db00c1.png" alt="redwoodeda-logo" height="80"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>

References

Acknowledgements

Contributors

Contributing

Contributions are what make the open source community such an amazing vehicle to learn, inspire, and create. Any contributions you make are greatly appreciated. Kudos for filing bugs. Deepest thanks for fixing them and for contributing new features.

If you are interested in getting involved in this project, connect with me or Steve.

Licensing

Distributed under MIT License. See LICENSE