Module Hardcaml.Structural
Hardware generation API that includes tri-states - used for toplevel module generation.
The API is very similar to Signal except for instantiation which is done differently.
- type name- = string
- type id- = int
- type width- = int
- type signal- =- |- Empty- |- Module_input of id * name * width- |- Module_output of id * name * width * signal Stdlib.ref- |- Module_tristate of id * name * width * signal list Stdlib.ref- |- Internal_wire of id * width * signal Stdlib.ref- |- Internal_triwire of id * width * signal list Stdlib.ref- |- Instantiation_output of id * name- reference to instantiation - |- Instantiation_tristate of id * name- |- Instantiation of id * name * (string * generic) list * (string * signal) list * (string * signal) list * (string * signal) list- |- Rtl_op of id * width * rtl_op
- and rtl_op- =- |- Constant of string- |- Select of int * int * signal- |- Concat of signal list- |- Mux of signal * signal list
- and generic- =- |- GInt of int- |- GFloat of float- |- GString of string- |- GUnquoted of string
- type circuit- =- {- name : string;- id : id;- mutable signals : signal list;- }
- exception- Invalid_submodule_input_connection of string * string * signal
- exception- Invalid_submodule_output_connection of string * string * signal
- exception- Invalid_submodule_tristate_connection of string * string * signal
- exception- Wire_already_assigned of signal
- exception- Invalid_assignment_target of signal
- exception- Cant_assign_wire_with of signal
- exception- Cant_assign_triwire_with of signal
- exception- Invalid_name of signal
- exception- Invalid_width of signal
- exception- Invalid_id of signal
- exception- Invalid_constant of string
- exception- Rtl_op_arg_not_readable of signal
- exception- Too_few_mux_data_elements
- exception- Too_many_mux_data_elements of int
- exception- All_mux_data_elements_must_be_same_width of int list
- exception- No_elements_to_concat
- exception- Select_index_error of int * int
- exception- Binop_arg_widths_different of string
- exception- No_circuit
- exception- Circuit_already_started
- val find_circuit : string -> circuit
- find circuit in database 
- val width : signal -> int
- val mk_input : string -> int -> signal
- val mk_output : string -> int -> signal
- val mk_tristate : string -> int -> signal
- val mk_wire : int -> signal
- val mk_triwire : int -> signal
- val (<==) : signal -> signal -> unit
- val is_connected : signal -> bool
- val inst : ?g:(string * generic) list -> ?i:(string * signal) list -> ?o:(string * signal) list -> ?t:(string * signal) list -> string -> unit
- val (==>) : 'a -> 'b -> 'a * 'b
- val of_bit_string : string -> signal
- val z : int -> signal
- val mux : signal -> signal list -> signal
- val concat_msb : signal list -> signal
- val select : signal -> int -> int -> signal
module type Config = Hardcaml__.Structural_intf.Config- module Base : functor (C : Config) -> Comb.Primitives with type t = signal
- the comb API must be (rebuilt) between each circuit 
- module Base0 : Comb.Primitives with type t = signal
- progressively more structural APIs 
- module Base1 : Comb.Primitives with type t = signal
- includes mux, concat, select 
- module Base2 : Comb.Primitives with type t = signal
- includes consts 
- val write_verilog : (string -> unit) -> circuit -> unit
module Lib : sig ... end