Package: desyrdl
DesyRDLThis 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 logicMapfiles (compatible with ChimeraTK)C header filesAsciiDoc documentationDesyRDL was developed atDESYin 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 versionii.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 sourceSystemRDL compilerhas been published.
This has been proposed byMicroTCA Tech Labat DESY when they wroteHECTARE, the predecessor of DesyRDL.UsageThis tool can be used standalone but was intended to be used as part of a
firmware build environment like DESY MSK'sFPGA Firmware Framework,
shortfwk.Seedesyrdl -hfor options.
All RDL files must be passed in the correct order. Below is an example for thetest_hectaremodule which also comes with a testbench (not in Git yet):desyrdl -o out -i examples/spi_ad9510.rdl examples/test_desyrdl.rdl examples/top.rdl -f vhdl tclThis will compile the.rdlfile and create one.vhdin./out/for eachaddrmapinstance 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_inandt_addrmap_mymodule_out). Through these
records, each node in thisaddrmapcan be accessed by its SystemRDL instance
name. Check the generated VHDL package for details.ConceptCompiling the SystemRDL™ files is handled bySystemRDL Compiler.
To create useful information (or "context") for the template processing, its
Walker/Listener method of traversing the compiled tree is used.DesyListenerextends itssystemrdl.RDLListenerclass. It extracts a fixed
set of information from the compiled tree and passes it on to a template engine
(Jinja2).TemplatesTemplates are written for the Jinja2 template engine. Users can provide their
own templates using-tswitch.ContextContext creation differs a bit depending on the type of output. Some outputs
have to be generated for eachaddrmapcomponent (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 Pythondictthat 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 busesThe DesyRDL allows to generate various top address map interfaces.
They are defined in the addrmap component by thedesyrdl_interfacevariable.Tool bus support anddesyrdl_interfacesvalues:ValueDescriptionBus SizeSupportedAXI4LAXI4 Lite interface32 bitYESIBUSInternal Interface type bus, proprietary MSK DESY32 bitYESWISHBONEOpen source hardware computer bus32 bitplannedKnown Issues and LimitationsThe bus decoder implementation is relatively basic:Only 32bit data bussesLikewise, only 32 bit registers are supportedThe dual-port memory interface does not support AXI4 write strobesThe logic operates on a single clock and the developer has to take care of any
CDCsAcknowledgementsThis 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.Referencessystemrdl"SystemRDL 2.0 Register Description Language", Accellera
Systems Initiative Inc, 2018,
available fromhttps://accellera.org/downloads/standards/systemrdlii"INTERNAL INTERFACE, I/O Communication with FPGA Circuits and Hardware
Description Standard for Applications in HEP and FEL Electronics ver. 1.0",
2005, available fromhttps://flash.desy.de/reports_publications/tesla_reports/tesla_reports_2005/