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.