I”ve been using CXXRTL a few years now to create cycle accurate hardware mockups like with Verilator, in the process, a few virtual devices got ported over to CXXRTL blackboxes from a library that did the same virtualization for GHDL (ghdlex) the asynchronous way.
The goal is mainly to be able to put a hardware mockup into the test loop, simulating key presses/uart inputs, etc. or even tunnel through packets of whatever sort.
Are there people interested in collaborating on some kind of library that makes such tasks a no-brainer for ‘pure’ hardware developers (not wanting to touch C++)?
What I got so far:
- Unix pipe to FIFO/device I/O (virtual UARTs, etc.)
- Virtual framebuffers to simulate TFT/LCD screens
- Virtual bus (backdoor access to registers from the network)
- Virtual flash memory bare bone backends
- Various interfacing backends (TFT emulators, let aside SPI/I2C etc.)
Currently, this runs synchronously to the main loop driving the CXXRTL steps, however there appears to be the need for a better scheduler in order to model transactions that take a few simulation steps to complete, or the option to run fully as an asynchronous thread.
I’d be interested in hearing more ideas on use cases you might come up with.