Skip to main content

DesyRDL - Tool for address space and register generation

Project description

DesyRDL

This tool generates outputs for an address space that is defined by one or many SystemRDL™ 2.0 input files. The address space could be made up of all the software-accessible registers and memory regions in an FPGA design, or just the registers of a single IP block.

SystemRDL™ 2.0 is a standard released by Accellera Systems Initiative Inc that is meant to describe such an address space, see [systemrdl].

Outputs are based on templates. there is an option to use custom templates or the one provided by the tool. The templates provided with this package are the common files for the following outputs:

  • Synthesizable VHDL register logic
  • Mapfiles (compatible with ChimeraTK)
  • C header files
  • AsciiDoc documentation

DesyRDL was developed at DESY in the MSK firmware group as a replacement for its existing proprietary method of register and address map generation, the "Internal Interface", called "IBUS" in its latest version ii.

The use of SystemRDL™ 2.0 standard was considered for a long time, but due to the lack of open source compilers or parsers, it was dropped.

The decision to use the SystemRDL™ 2.0 standard came after the open source SystemRDL compiler has been published. This has been proposed by MicroTCA Tech Lab at DESY when they wrote HECTARE, the predecessor of DesyRDL.

Usage

This tool can be used standalone but was intended to be used as part of a firmware build environment like DESY MSK's FPGA Firmware Framework, short fwk.

See desyrdl -h for options. All RDL files must be passed in the correct order. Below is an example for the desyrdl_example modules which also comes with a testbench (not in Git yet):

desyrdl -o out -i test/rdl/module_b.rdl test/rdl/module_a.rdl test/rdl/top.rdl -f vhdl adoc tcl

This will compile the .rdl file and create one .vhd in ./out/ for each addrmap instance in the model and for each VHDL template in ./desyrdl/templates/vhdl/. The common files from ./desyrdl/libraries/vhdl/ will also be copied there.

The generated VHDL logic should be integrated into your module or IP as an entity next to the other logic. This is shown in the diagram below. Registers and external interfaces are available on combined ports of a custom record type (e.g. t_addrmap_mymodule_in and t_addrmap_mymodule_out). Through these records, each node in this addrmap can be accessed by its SystemRDL instance name. Check the generated VHDL package for details.

top integration diagram

Concept

Compiling the SystemRDL™ files is handled by SystemRDL Compiler. To create useful information (or "context") for the template processing, its Walker/Listener method of traversing the compiled tree is used.

DesyListener extends its systemrdl.RDLListener class. It extracts a fixed set of information from the compiled tree and passes it on to a template engine (Jinja2).

DesyRDL flow diagram

Templates

Templates are written for the Jinja2 template engine. Users can provide their own templates using -t switch.

Context

Context creation differs a bit depending on the type of output. Some outputs have to be generated for each addrmap component (e.g. VHDL) and others are generated for the whole address space at once (e.g. mapfiles and the C header).

The context is a Python dict that contains further dictionaries to describe register types and instances, memory types and instances, further external components and some more. It is currently a bit of a mess.

Supported interfaces buses

The DesyRDL allows to generate various top address map interfaces. They are defined in the addrmap component by the desyrdl_interface variable.

Tool bus support and desyrdl_interfaces values:

Value Description Bus Size Supported
AXI4L AXI4 Lite interface 32 bit YES
IBUS Internal Interface type bus, proprietary MSK DESY 32 bit YES
WISHBONE Open source hardware computer bus 32 bit planned

Known Issues and Limitations

The bus decoder implementation is relatively basic:

  • Only 32bit data busses
  • Likewise, only 32 bit registers are supported
  • The dual-port memory interface does not support AXI4 write strobes
  • The logic operates on a single clock and the developer has to take care of any CDCs

Acknowledgements

This tool relies heavily on systemrdl-compiler by Alex Mykyta and was only developed because it exists.

Accellera™ and SystemRDL™ are trademarks of Accellera Systems Initiative Inc.

References

systemrdl

"SystemRDL 2.0 Register Description Language", Accellera Systems Initiative Inc, 2018, available from https://accellera.org/downloads/standards/systemrdl

ii

"INTERNAL INTERFACE, I/O Communication with FPGA Circuits and Hardware Description Standard for Applications in HEP and FEL Electronics ver. 1.0", 2005, available from https://flash.desy.de/reports_publications/tesla_reports/tesla_reports_2005/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

desyrdl-1.4.2.tar.gz (63.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

desyrdl-1.4.2-py3-none-any.whl (53.5 kB view details)

Uploaded Python 3

File details

Details for the file desyrdl-1.4.2.tar.gz.

File metadata

  • Download URL: desyrdl-1.4.2.tar.gz
  • Upload date:
  • Size: 63.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1

File hashes

Hashes for desyrdl-1.4.2.tar.gz
Algorithm Hash digest
SHA256 52d6f1c3b543df9c1cce498aad7d8b41dd4aca22d61317cb25aba1ec3b1056e6
MD5 be04149f9418e8e397f5a5714d67c219
BLAKE2b-256 62e6ad8f3328164d61331bcca115a4cf366a3a45b732024f868f999bbe804398

See more details on using hashes here.

File details

Details for the file desyrdl-1.4.2-py3-none-any.whl.

File metadata

  • Download URL: desyrdl-1.4.2-py3-none-any.whl
  • Upload date:
  • Size: 53.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1

File hashes

Hashes for desyrdl-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b5111f6d3246bb77ad0e6e1b55c864701824fefa39bf8b1dda78e722f85ac9e7
MD5 3fc2a67e1b8dcc60d63a8cf313f56261
BLAKE2b-256 9f1e3aabe9d6f81261a6bb45b7ec5fb0746d586c7157e16147e4478814ed0f76

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page