Hardcaml.RecipeSourceHardware generation in an imperative style.
This module is undergoing significant rewriting and refactoring, and subject to many breaking changes.
include Base.Monad.S with type 'a t := 'a tt >>= f returns a computation that sequences the computations represented by two monad elements. The resulting computation first does t to yield a value v, and then runs the computation returned by f v.
ignore_m t is map t ~f:(fun _ -> ()). ignore_m used to be called ignore, but we decided that was a bad name, because it shadowed the widely used Caml.ignore. Some monads still do let ignore = ignore_m for historical reasons.
Like all, but ensures that every monadic value in the list produces a unit value, all of which are discarded rather than being collected into a list.
These are convenient to have in scope when programming with a monad:
Perform ts in parallel. comb_fin controls the finish signal generation. When false and extra cycle is taken after the ts complete to generate the fin signal. Otherwise extra combinatorial logic is generated to ensure the fin signal toggles on the same cycle as the last t to complete.
cond c t f performs t if c is high, otherwise performs f
follow t and get result
create an new n bit register
assign list of registers - takes 1 cycle
read a register, modify value, write a second register