HardcamlSourceAlways is a DSL that lets one describe a circuit in the same style as a Verliog always block.
Hardware architecture specification.
Specify whether to configure the hardware for simulation or synthesis.
A database which holds a collection of circuits, indexed by a unique circuit name.
Utilization information for a circuit which can be printed to a sexp.
A custom combinational operation that can be inserted into a simulation.
A database which holds a collecton of custom combinational operations for use with Cyclesim based simulators.
Representation of variable width Constants and conversion to/from OCaml types.
Floating point operations for simulation.
Simple circuit analsysis passes for common issues.
Specification of rising or falling edge of a signal (normally a clock).
Synchronous FIFO implementions with optional showahead functionality and pipelining stages.
Allow a hardcaml circuit to be defined as a hierarchy of modules, rather than just a single flat module.
Bits described as lists of ints ie 0;1;1;1;0 - width implicit as length of list
Interfaces specify the widths and names of a group of signals, and some functions for manipulating the signals as a group.
Instantiation of sub-modules.
A Parameter.t is the name and value of a configurable attribute of an instantiated RTL design.
RTL name of parameters on instantiated modules.
Definition of clock, reset and clear signals for sequential logic (ie registers).
Tables of reserved words in Verilog, VHDL and OCaml.
RTL attribute specification. Only relevant to downstream tooling.
Used to specify when an operation should be performed - before or after an event like a clock edge.
Hardware design datatype suitable for simulation and netlist generation
A Signal_graph.t is a created from a list of signals, and defined by tracing back to inputs (unassigned wires or constants). Functions are provided for traversing the graph.
Hardware generation API that includes tri-states - used for toplevel module generation.
Uses a valid bit to indicate the validity of a value. Conceptually similar to an Option.t.
These are exposed for code that does @@deriving sexp_of, hardcaml.