Closed davidmlw closed 1 year ago
Verilator itself is increasing coroutine to handle events, cocotb uses coroutine to simulate thousands of threads in RTL interfaces.
The closest thing we have to coroutine support in Hardcaml is the Step Testbench. You can run the coroutine with a simulator built with Hardcaml_verilator or Hardcaml cyclesim.
How much effort to have an Ocaml coroutine DPI interface, UVM class system (is it neccessary? which I doubt) and Randomized signals and space coverage collection?
Those are very different projects from Hardcaml verilator support. We don't have any plans to look at them at the moment.
I asked a question here https://github.com/ocaml/opam-repository/issues/23914, and I did a little google search, and I found this project and https://github.com/ujamjar/hardcaml-vpi is the most match project I am looking for. And it seems that both repos links to Jane Street.
Ocaml, because of its features, is hard to write and hard to fail. It has been very successful in formal verification (software), and is being actively applied to hardware. In my opinion, it is a perfect language for simulation verification too. In addition commercialized Verilog implementation UVM, I see cocotb, pyuvm and pyvsc in python, and euvm in D language.
Verilator itself is increasing coroutine to handle events, cocotb uses coroutine to simulate thousands of threads in RTL interfaces. I see Ocaml has several coroutine implementation, and I believe Lwt is the official one, am I right?
How much effort to have an Ocaml coroutine DPI interface, UVM class system (is it neccessary? which I doubt) and Randomized signals and space coverage collection?