package hardcaml

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module HardcamlSource

Design

Sourcemodule Always : sig ... end

Always is a DSL that lets one describe a circuit in the same style as a Verliog always block.

Sourcemodule Assertions : sig ... end

Assertions within Hardcaml simulations.

Sourcemodule Caller_id : sig ... end

Optionally embed the callstack in the signal type when it is created.

Sourcemodule Comb : sig ... end

Combinational logic API.

Sourcemodule Constant : sig ... end

Representation of variable width Constants and conversion to/from OCaml types.

Sourcemodule Interface : sig ... end

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

Sourcemodule Instantiation : sig ... end

Instantiation of sub-modules.

Sourcemodule Parameter : sig ... end

A Parameter.t is the name and value of a configurable attribute of an instantiated RTL design.

Sourcemodule Parameter_name : sig ... end

RTL name of parameters on instantiated modules.

Sourcemodule Property : sig ... end
Sourcemodule Property_manager : sig ... end
Sourcemodule Reg_spec : sig ... end
Sourcemodule Scope : sig ... end

Scopes control the process of hierarchical circuit generation.

Sourcemodule Signal : sig ... end

Hardware design datatype suitable for simulation and netlist generation

Sourcemodule Structural : sig ... end

Hardware generation API that includes tri-states - used for toplevel module generation.

Circuits

Sourcemodule Circuit : sig ... end

Creation and manipulation of hardware circuits

Sourcemodule Circuit_database : sig ... end

A database which holds a collection of circuits, indexed by a unique circuit name.

Sourcemodule Circuit_utilization : sig ... end

Utilization information for a circuit which can be printed to a sexp.

Sourcemodule Hierarchy : sig ... end

Allow a hardcaml circuit to be defined as a hierarchy of modules, rather than just a single flat module.

Sourcemodule Mangler : sig ... end

Map a set of names to a set of unique names.

Simulation and modelling

Sourcemodule Bits : sig ... end

An immutable finite sequence of bits with a specified width.

Sourcemodule Bits_list : sig ... end

Combinational logic described as lists of Bits ie 0;1;1;1;0.

Sourcemodule Combinational_op : sig ... end

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.

Sourcemodule Cyclesim : sig ... end

Cycle accurate simulator

Sourcemodule Cyclesim_float_ops : sig ... end

Floating point operations for simulation.

Sourcemodule Logic : sig ... end
Sourcemodule Vcd : sig ... end

VCD (Verilog Change Dump) generation utilities, and a Cyclesim wrapper function.

Sourcemodule Wave_format : sig ... end

How to display the value of a signal. Generally used in waveforms.

Sourcemodule Wave_data : sig ... end

Rtl generation

Sourcemodule Rtl : sig ... end
Sourcemodule Rtl_attribute : sig ... end

RTL attribute specification. Only relevant to downstream tooling.

Sourcemodule Reserved_words : sig ... end

Tables of reserved words in Verilog, VHDL and OCaml.

Transformations and passes

Sourcemodule Design_rule_checks : sig ... end

Simple circuit analsysis passes for common issues.

Sourcemodule Dedup : sig ... end

Deduplicates combinatorial nodes performing redundant computation.

Sourcemodule Signal_graph : sig ... end

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.

Misc types

Sourcemodule Architecture : sig ... end

Hardware architecture specification.

Sourcemodule Build_mode : sig ... end

Specify whether to configure the hardware for simulation or synthesis.

Sourcemodule Edge : sig ... end

Specification of rising or falling edge of a signal (normally a clock).

Sourcemodule Enum : sig ... end

The Enum contains functors that can be used to create special interface modules to represent an enumeration type (ie: a variant with no arguments).

Sourcemodule Flags_vector : sig ... end
Sourcemodule Level : sig ... end

Specification of a signals level - high or low.

Sourcemodule Read_port : sig ... end

A memory read port.

Sourcemodule Side : sig ... end

Used to specify when an operation should be performed - before or after an event like a clock edge.

Sourcemodule Signedness : sig ... end
Sourcemodule Types : sig ... end
Sourcemodule With_valid : sig ... end
Sourcemodule Write_port : sig ... end

A memory write port.

Core circuits

Sourcemodule Async_fifo : sig ... end

Simple and fast distributed RAM based asynchronous FIFO. The depth of the FIFO is parameterizable, however, it should be less than or equal to 2 ^ LUT_SIZE to avoid glitches on the addressing logic.

Sourcemodule Fifo : sig ... end

Synchronous FIFO implementions with optional showahead functionality and pipelining stages.

Sourcemodule Ram : sig ... end

Random access memories described using RTL inference.

OCaml

Innovation. Community. Security.