Eight different possible use cases are listed/explained:
- Raw simulation of hardware-software interactions on SoCs
- Coarse grained mixed-language simulation
- Coarse grained mixed-signal simulation
- Using pipes or RPC libs to implement virtual peripherals
- Implementing algebra algorithms in VHDL
- Replacing functions in unmodified binaries with behaviourally equivalent VHDL simulations/designs/models
- Providing custom(izable) GUI interfaces to interact with simulations at runtime
- Executing arbitrary Python callbacks from VHDL
All of them have been prototyped and are known to work (with more or less limitations). In fact, some of the examples are +10 years old. However, my own examples about Xyce, Matlab/Octave and Python callbacks do need a cleanup. Anyhow, I thought it'd be better to open the discussion already.
@PeterFlake, I tried to keep the requirements compatible with those in your proposal, but there are some implementation details which I am not sure to understand (my knowledge of the LRM is quite limited); and code examples for GHDL are already written. Hence, I didn't take much from those subsections. Please, let me know how you'd like to proceed.
For now, I'd like other users to review what I wrote and please let me know if you find anything which is not correct. I'd also want to add more references to the "Current situation", so I'd be glad to receive feedback from users familiar with other vendor-specific interfaces (FLI, XSI...). Last (not least), should anyone have questions about the use cases, or wants to know if some other use case is currently feasible, please do ask.