Module Hardcaml.Interface

Interfaces specify the widths and names of a group of signals, and some functions for manipulating the signals as a group.

They are generally used with ppx_deriving_hardcaml as follows

type t = { ... } [@@deriving sexp_of, hardcaml]

The sexp_of is required, and must appear before hardcaml. This syntax generates a call to Interface.Make, which therefore does not need to be explicitly called.

module type Pre_partial = sig ... end
module type Pre = sig ... end
module type S = sig ... end
module type S_Of_signal = sig ... end
module type Ast = sig ... end
module type Empty = sig ... end
module Ast : Ast
module Empty : Empty
module type S_with_ast = sig ... end
module Create_fn (I : S) (O : S) : sig ... end

Type of functions representing the implementation of a circuit from an input to output interface.

module Make (X : Pre) : S with type 'a t := 'a X.t
module Value (S : sig ... end) : S with type 'a t = 'a

An interface for a single value

module Update (Pre : Pre) (M : sig ... end) : S with type 'a t = 'a Pre.t

Recreate a Hardcaml Interface with the same type, but different port names / widths.

module Make_interface_with_conversion (Repr : S) (M : sig ... end) : S with type 'a t = 'a M.t

Creates a new hardcaml interface by converting between functions. This can be used to implement Hardcaml.Interface.S on types that otherwise can't use @@deriving hardcaml