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.

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.