HardCaml is an OCaml library for designing hardware.
Express hardware designs in OCaml
Make generic designs using higher order functions, lists, maps, functors...
Simulate designs in OCaml
Convert to VHDL, Verilog, C
Write new modules to transform or analyse circuits, or provide new backends
$ opam install hardcaml
The package (optionally) depends on
camlp4 for the syntax extension and
ctypes-foreign for the C based simulator. The js_of_ocaml library requires
To build locally use
$ ocaml pkg/pkg.ml build --with-camlp4 [true|false] --with-ctypes-foreigh [true|false] --with-lwt [true|false] --with-js_of_ocaml [true|false]
IOcamlJS notebook kernel can also be built with
$ ocamlbuild kernel.hardcaml.js
Examples and framework - simple to mildly complex example designs
Waveform viewer - terminal based digital waveform viewer
Icarus verilog VPI interface - cosimulation with Icarus verilog
LLVM simulator - high speed, native code generating simulator
>= "4.01.0" & < "4.08.0"