Announcing a tool to generate VHDL registers (+ more) #125
mbuechl
started this conversation in
Show and tell
Replies: 1 comment 1 reply
-
@mbuechl This is great! |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi all,
We (an FPGA firmware team at DESY [1]) made a tool based on systemrdl-compiler. It generates VHDL (and more) based on templates, a bit similar to PeakRDL-verilog, but using our own weird template engine instead of Jinja2. I just uploaded it on PyPI [2] and I thought that was a good time to announce it somehow, and say thank you to @amykyta3 and all contributors. SystemRDL Compiler is great!
You might have seen HECTARE [3] by @j-marjanovic who was working at a different team here at DESY. It wasn't enough for our purpose so we took the idea and made a new thing. It handles arrays of registers, for example. It also generates record types so that you can use node instances by their instance names within VHDL, similar to PeakRDL-regblock [4] I think. And because the template engine and the generated context don't care about the language, we can also generate AsciiDoc documentation or C headers by just writing new templates.
It still has many limitations, e.g. it is limited to AXI4-Lite, doesn't know about interrupts, and the register+field implementation is far from complete, but we want to gradually improve and extend it. Also there is an obvious lack of (publishable) documentation, and the generation of context for the template engine is a bit of a mess.
We made this because we wanted to replace our existing register generation workflow. It had to fit into our custom FPGA build environment [5] and the existing software interface, with its multiple levels of hierarchy, each having a combination of registers and external components (e.g. memories or other addrmap). As a result this probably doesn't fit into the PeakRDL concept - we called it DesyRDL. We still hope that this will be useful to others in some way. Also we're new to sharing with the free & open source community and haven't set up any issue tracker or anything yet, we just use this Gitlab instance [6]. But we will be happy to hear your comments and suggestions!
Michael
[1] https://msk.desy.de/
[2] https://pypi.org/project/desyrdl/0.2.0/
[3] https://github.com/MicroTCA-Tech-Lab/hectare
[4] https://peakrdl-regblock.readthedocs.io/en/latest/hwif.html
[5] https://fpgafw.pages.desy.de/docs-pub/fwk/index.html
[6] https://gitlab.desy.de/fpgafw/tools/desyrdl
Beta Was this translation helpful? Give feedback.
All reactions