Register Transfer Level hardware design in OCaml

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

Try it online!


With opam

$ 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 lwt and js_of_ocaml

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]

An IOcamlJS notebook kernel can also be built with

$ ocamlbuild kernel.hardcaml.js

Related tools

Other projects