rohd_hcl library

Classes

Adder
An abstract class for all adder module.
ApbCompleterAgent
A model for the completer side of an ApbInterface.
ApbComplianceChecker
A checker for some of the rules defined in the APB interface specification.
ApbInterface
A standard APB interface.
ApbMonitor
A monitor for ApbInterfaces.
ApbPacket
A packet on an ApbInterface.
ApbReadPacket
A read packet on an ApbInterface.
ApbRequesterAgent
An agent for sending requests on an ApbInterface.
ApbRequesterDriver
A driver for the ApbInterface from the requester side.
ApbTracker
A tracker for the ApbInterface.
ApbWritePacket
A write packet on an ApbInterface.
Arbiter
An abstract description of an arbiter module.
BinaryToGrayConverter
A module for converting binary values to Gray code representation.
BinaryToOneHot
Encodes a binary number into one-hot.
BitCompressor
Base class for bit-level column compressor function
BitonicSort
Bitonic Sort is a pipelined sort module that sort toSort to specified order based on isAscending.
BitonicSortConfigurator
A Configurator for BitonicSort.
BrentKung
BrentKung shaped ParallelPrefix tree
CarrySaveMultiplier
A binary multiplier using carry-save technique with pipelining.
CarrySaveMultiplierConfigurator
A Configurator for CarrySaveMultiplier.
CarrySelectCompoundAdder
Carry-select compound adder.
CaseOneHotToBinary
Decodes a one-hot number into binary using a case block.
ChoiceConfigKnob<T>
A ConfigKnob for selecting one of multiple options.
ClockGate
A generic and configurable clock gating block.
ClockGateControlInterface
An Interface for controlling ClockGates.
ColumnCompressor
A column compressor
CompoundAdder
An abstract class for all compound adder module implementations.
CompoundAdderConfigurator
A Configurator for CompoundAdder.
CompressionTreeMultiplier
An implementation of an integer multiplier using compression trees
CompressionTreeMultiplierConfigurator
A Configurator for CompressionTreeMultipliers.
CompressionTreeMultiplyAccumulate
An implementation of an integer multiply-accumulate using compression trees
Compressor2
2-input column compressor (half-adder)
Compressor3
3-input column compressor (full-adder)
CompressTerm
A compression term
ConfigKnob<T>
A configuration knob for use in Configurators.
Configurator
An object that enables a consisten API for configuring a Module and performing common tasks with it.
Count
Count 1 or 0.
Counter
Keeps a count of the running sum of any number of sources with optional configuration for widths, saturation behavior, and restarting.
CounterConfigurator
A configurator for Counter.
DataPortInterface
An interface to a simple memory that only needs enable, address, and data.
Deserializer
Deserializer aggregates data from a serialized stream.
EccConfigurator
A Configurator for HammingEccReceiver and HammingEccTransmitter.
EdgeDetector
An edge detector for positive, negative, or any edge on a signal relative to the previous clock cycle.
EdgeDetectorConfigurator
A Configurator for EdgeDetector.
ErrorCheckingReceiver
A receiver for data which includes a code for checking and possibly correcting.
ErrorCheckingTransmitter
A transmitter for data which includes a code for checking and possibly correcting data at the receiving end.
Extrema
Determines the extremas (maximum or minimum) of a List<Logic>.
ExtremaConfigurator
A Configurator for Extrema.
Fifo
A simple FIFO (First In, First Out).
FifoChecker
A checker for Fifos that they are being used properly and not reaching any dangerous conditions.
FifoConfigurator
A Configurator for Fifo.
FifoTracker
A tracker for a Fifo which can generate logs.
Find
Find functionality
FindConfigurator
A Configurator for Find.
FixedPoint
A representation of (un)signed fixed-point logic following Q notation (Qm.n format) as introduced by (Texas Instruments)https://www.ti.com/lit/ug/spru565b/spru565b.pdf.
FixedPointValue
An immutable representation of (un)signed fixed-point values following Q notation (Qm.n format) as introduced by (Texas Instruments)https://www.ti.com/lit/ug/spru565b/spru565b.pdf.
FixedToFloat
FixedToFloat converts a fixed point input to floating point with rouding to nearest even. If the input exceeds the floating point range, the output will be infinity. E4M3 is not supported as this format doesn't support infinity.
FixedToFloatConfigurator
A Configurator for FixedToFloat.
Float8ToFixed
Float8ToFixed converts an 8-bit floating point (FP8) input to a signed fixed-point output following Q notation (Qm.n) as introduced by (Texas Instruments)https://www.ti.com/lit/ug/spru565b/spru565b.pdf. FP8 input must follow E4M3 or E5M2 as described in (FP8 formats for deep learning)https://arxiv.org/pdf/2209.05433. This component offers re-using the same hardware for both FP8 formats. Infinities and NaN's are not supported. The output is of type Logic and in two's complement. It can be cast to a FixedPoint by the consumer based on the mode. if mode is true: Input is treated as E4M3 and converted to Q9.9 fixed[17:9] contains integer part fixed8:0 contains fractional part else: Input is treated as E5M2 and converted to Q16.16 fixed[31:16] contains integer part fixed15:0 contains fractional part
Float8ToFixedConfigurator
A Configurator for Float8ToFixed.
FloatingPoint
Flexible floating point logic representation
FloatingPoint16
Sixteen-bit floating point representation
FloatingPoint16Value
A representation of an FP16 floating-point value.
FloatingPoint32
Single floating point representation
FloatingPoint32Value
A representation of a single-precision floating-point value.
FloatingPoint64
Double floating point representation
FloatingPoint64Value
A representation of a double-precision floating-point value.
FloatingPoint8E4M3
Eight-bit floating point representation for deep learning: E4M3
FloatingPoint8E4M3Value
The E4M3 representation of a 8-bit floating point value as defined in FP8 Formats for Deep Learning.
FloatingPoint8E5M2
Eight-bit floating point representation for deep learning: E5M2
FloatingPoint8E5M2Value
The E5M2 representation of a 8-bit floating point value as defined in FP8 Formats for Deep Learning.
FloatingPointAdderRound
An adder module for variable FloatingPoint type with rounding.
FloatingPointAdderRoundConfigurator
A Configurator for FloatingPointAdderRounds.
FloatingPointAdderSimple
An adder module for FloatingPoint values
FloatingPointBF16
Sixteen-bit BF16 floating point representation
FloatingPointBF16Value
A representation of a BF16 floating-point value.
FloatingPointTF32Value
A representation of a TF32 floating-point value.
FloatingPointValue
A flexible representation of floating point values. A FloatingPointValue hasa mantissa in [0,2) with 0 <= exponent <= maxExponent(); A normal isNormal FloatingPointValue has minExponent() <= exponent <= maxExponent() and a mantissa in the range of [1,2). Subnormal numbers are represented with a zero exponent and leading zeros in the mantissa capture the negative exponent value.
FloatToFixed
FloatToFixed converts a floating point input to a signed fixed-point output following Q notation (Qm.n format) as introduced by (Texas Instruments)https://www.ti.com/lit/ug/spru565b/spru565b.pdf. Infinities and NaN's are not supported. Conversion is lossless. The output is in two's complement and in Qm.n format where: m = e_max - bias + 1 n = mantissa + bias - 1
FloatToFixedConfigurator
A Configurator for FloatToFixed.
FullAdder
A simple full-adder with inputs a and b to be added with a carryIn.
GrayToBinaryConverter
A module for converting Gray code to binary representation.
GroupOfKnobs
A knob which groups together other ConfigKnobs.
HammingEccReceiver
A receiver for transmissions sent with a Hamming code for error detection and possibly correction.
HammingEccTransmitter
A transmitter for data which generates a Hamming code for error detection and possibly correction.
IntConfigKnob
A knob to store an int.
IntOptionalConfigKnob
A knob to store an int.
KoggeStone
KoggeStone shaped ParallelPrefix tree
ListOfKnobsKnob
A knob wich holds a collection of other ConfigKnobs.
MaskedDataPortInterface
A DataPortInterface that supports byte-enabled strobing.
MaskRoundRobinArbiter
A RoundRobinArbiter implemented using request and grant masks.
Memory
A generic memory with variable numbers of read and write ports.
MemoryModel
A model of a Memory which uses a software-based SparseMemoryStorage to store data.
MemoryStorage
A storage for memory models.
MultiCycleDivider
The Divider module definition
MultiCycleDividerInterface
Internal interface to the Divider.
MultiplicandSelector
A class accessing the multiples of the multiplicand at a position
Multiplier
An abstract class for all multiplier implementations.
MultiplierEncoder
A class that generates the Booth encoding of the multipler
MultiplyAccumulate
An abstract class for all multiply accumulate implementations.
MutiplyOnly
A MultiplyAccumulate which ignores the c term and applies the multiplier function
OneHotConfigurator
A Configurator for BinaryToOneHot and OneHotToBinary.
OneHotToBinary
Decodes a one-hot number into binary using a case block.
OnesComplementAdder
An adder (and subtractor) OnesComplementAdder that operates on ones-complement values.
ParallelPrefix
ParallelPrefix is the core parallel prefix tree structure node The output is a List of multi-bit Logic vectors (typically 2-bit) that represent things like carry-save or generate-propagate signaling in adder networks. Each node in a parallel prefix tree transforms a row of inputs to an equal length row of outputs of these multi-bit Logic values.
ParallelPrefixAdder
Adder based on ParallelPrefix tree
ParallelPrefixAdderConfigurator
A Configurator for ParallelPrefixAdders.
ParallelPrefixDecr
Decrementer based on ParallelPrefix tree
ParallelPrefixIncr
Incrementer based on ParallelPrefix tree
ParallelPrefixOrScan
Or scan based on ParallelPrefix tree
ParallelPrefixPriorityEncoder
Priority Encoder based on ParallelPrefix tree
ParallelPrefixPriorityFinder
Priority Finder based on ParallelPrefix tree
ParityReceiver
Check for error & Receive data on transmitted data via parity
ParityTransmitter
Encode data to transport with Parity bits
PartialProductArray
A PartialProductArray is a class that holds a set of partial products for manipulation by PartialProductGenerator and ColumnCompressor.
PartialProductGenerator
A PartialProductGenerator class that generates a set of partial products. Essentially a set of shifted rows of Logic addends generated by Booth recoding and manipulated by sign extension, before being compressed
PartialProductGeneratorNoSignExtension
A Partial Product Generator with no sign extension
PriorityArbiter
An Arbiter which always picks the lowest-indexed request.
PriorityArbiterConfigurator
A Configurator for PriorityArbiter.
RadixEncode
A bundle for the leaf radix compute nodes. This holds the multiples of the multiplicand that are needed for encoding
RadixEncoder
Base interface for radix radixEncoder
ReadyValidAgent
A generic agent for ready/valid protocol.
ReadyValidMonitor
A Monitor for ready/valid protocol.
ReadyValidPacket
A packet to be transmitted over a ready/valid interface.
ReadyValidReceiverAgent
An Agent for receiving over a ready/valid protocol.
ReadyValidTracker
A tracker for a ready/valid protocol.
ReadyValidTransmitterAgent
An Agent for transmitting over a ready/valid protocol.
ReadyValidTransmitterDriver
An Agent for transmitting over a ready/valid protocol.
RegisterFile
A flop-based memory.
RegisterFileConfigurator
A Configurator for RegisterFiles.
Ripple
Ripple shaped ParallelPrefix tree
RippleCarryAdder
An RippleCarryAdder is a digital circuit used for binary addition. It consists of a series of full adders connected in a chain, with the carry output of each adder linked to the carry input of the next one. Starting from the least significant bit (LSB) to most significant bit (MSB), the adder sequentially adds corresponding bits of two binary numbers.
RippleCarryAdderConfigurator
A Configurator for RippleCarryAdder.
RotateConfigurator
A Configurator for rotation.
RotateLeft
Rotates a Logic to the left.
RotateLeftFixed
Rotates left by a fixed amount.
RotateRight
Rotates a Logic to the right.
RotateRightFixed
Rotates right by a fixed amount.
RotateRoundRobinArbiter
A RoundRobinArbiter implemented using rotations and a PriorityArbiter.
RoundRobinArbiter
A StatefulArbiter which fairly arbitrates between requests.
RoundRobinArbiterConfigurator
A Configurator for PriorityArbiter.
Serializer
Serializes wide aggregated data onto a narrower serialization stream.
ShiftRegister
A shift register with configurable width and depth and optional enable and reset.
SignBit
Store a Signbit as Logic
SignMagnitudeAdder
A SignMagnitudeAdder performsa addition on values in sign/magnitude format.
Sklansky
Sklansky shaped ParallelPrefix tree
Sort
An abstract class for all sort algorithm.
SparseMemoryStorage
A sparse storage for memory models.
StatefulArbiter
An Arbiter which holds state in order to arbitrate.
StringConfigKnob
A knob for holding a String.
Sum
Computes a sum of any number of sources with optional configuration for widths and saturation behavior.
SumConfigurator
A configurator for Sum.
SumInterface
A PairInterface representing an amount and behavior for inclusion in a sum or count.
SumInterfaceKnob
A knob for a single sum interface.
SummationConfigurator
A configurator for a module like SummationBase.
TextConfigKnob<T>
A configuration knob for use in Configurators which can be configured by text.
ToggleConfigKnob
A knob for holding a bool.
TreeOneHotToBinary
Module for binary-tree recursion for decoding one-hot.
TrivialCompoundAdder
A trivial compound adder.

Enums

ApbDirection
A grouping of signals on the ApbInterface interface based on direction.
CompressTermType
Compress terms
DataPortGroup
A grouping for interface signals of DataPortInterfaces.
FloatingPointConstants
Critical threshold constants
FloatingPointRoundingMode
IEEE Floating Point Rounding Modes
HammingType
Type of Hamming code, with different characteristics for error correction, error detection, and number of check bits required.
RotateDirection
A direction for something to rotate.

Extensions

LogicList on List<Logic>
Helper evaluation methods for printing aligned arithmetic bitvectors.
LogicValueBitString on LogicValue
This extension will eventually move to ROHD once it is proven useful
LogicValueMajority on LogicValue
This extension will eventually move to ROHD once it is proven useful
RotateLogic on Logic
Adds rotation functions to Logic.
RotateLogicValue on LogicValue
Adds rotation functions to LogicValue.

Functions

condFlop(Logic? clk, Logic d, {Logic? en, Logic? reset, dynamic resetValue}) Logic
Conditionally constructs a positive edge triggered flip condFlop on clk.
largestPow2LessThan(int x) int
This computes the power of 2 less than x
log2Ceil(int w) int
Computes the bit width needed to store w addresses.

Typedefs

ColumnQueue = PriorityQueue<CompressTerm>
A column of partial product terms

Exceptions / Errors

RohdHclException
An Exception for the ROHD Hardware Component Library.