corel#
Core library for the cooperative development of firmware & software, and the communication between them, featuring AXI4-lite communication buses. Developed for the operation of the SST and Ultrasat cameras.
Supported Python versions: 3.9+
Supported platforms: Linux, OSX
Documentation: http://ultrasat-camera.pages.desy.de/corel
License: MIT
Features#
Definition of the Python protocols which need to be implemented for the instruction of Memory-Mapped Input/Output (MMIO) operations to be performed by the receiving hardware.
Example implementation of the protocols to be used in combination with the
register_bus_bridge
firmware component, responsible for decoding the MMIO request frames, performing the requested operation, and sending the response.Frame relays, facilitating asynchronous (
asyncio
) communication of the MMIO frames between software and hardware over various protocols (e.g. UART, UDP…).Building blocks defined in Python to implement reusable & configurable firmware register modules.
Automatic generation of VHDL code corresponding the Python description of a firmware register module.
Combination of the module building blocks, to design a full in-Python description of the register memory map contained in the hardware.
Exposure of convenient asynchronous read/write access to the hardware registers from Python via the memory map object.
Comprehensive testing strategy which ensures the functionality of the firmware (vunit), software (pytest), and the interface between them (cocotb cosimulation + pytest).
Acknowledgements#
This package expands (and heavily depends) upon the tsfpga and hdl_registers concept of a Python build and simulation flow for the development of firmware.
Dependencies#
To install this package, you require:
Installation#
This package is installable via pip directly from this repository (via https or ssh), e.g.:
pip install 'git+https://gitlab.desy.de/ultrasat-camera/corel#egg=corel'
For developers, follow the usual git clone
procedure and see the
Makefile for development commands.