This is a (proof of concept) library/framework of virtual components which can be reused to build HDL testbenches including software models/visualizations of non-trivial peripherals. Each virtual component is composed of three parts:
- Frontend (HDL module/component).
- Transport layer/machanism.
- Backend (software library).
The purpose of this repository is to document the APIs that are used between the frontend and the transport, and between the tansport and the backend. Multiple projects exist which combine either GHDL or Verilator with foreign languages (C/C++, Python, m, golang, JavaScript, etc.). Many of them implement the same peripherals (e.g. virtual VGA screen). However, there is no framework to share common resources. For instance, drawing the content of a framebuffer in a window is independent from how it is filled (either from VHDL, Verilog or some other HDL).
- Frontend
- GHDL
- Verilator
- Transport
- C/C++
- Python
- Backend
- ImageMagick
- Xlib
- Gtk
- Qt
- HTML/JS/CSS
All of these can be executed on high-performance workstations or on low-cost SBCs. Some solutions are available on Android smartphones/tablets too.
- Line follower robot.
- BLDC motor.
- GPS sensor.
- ...
- ghdl/ghdl-cosim
- gitter.im/ghdl1/Lobby: 2019/07/12 8:12AM
- VUnit/cosim
- hackfin/ghdlex
- ZipCPU/vgasim
- 8bitworkshop.com
- adumont/hrm-cpu@master/gui
- renode.io
- isotel/mixedsim
- labsland.com
- redwoodeda.com
- tinkercad.com/circuits
- gitpod.io
- TerosTechnology/terosHDL
- GHDL, GRT and clock-gating: use
unsigned(63 downto 0)
instead of twointeger
. See https://github.com/VUnit/vunit/commit/89957a9b227ace890bfbfab0d50ff59940560b5c. - Python web frameworks:
- hipolitoguzman/virtualboard