menu
rohd_hcl
rohd_hcl.dart
rohd_hcl
dark_mode
light_mode
rohd_hcl
library
Classes
Adder
An abstract class for adders..
AdderSelectKnob
A knob for selecting an adder to use in a component.
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 ApbInterface s.
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.
Axi4Channel
An AXI4 channel that may or may not support reads and/or writes.
Axi4MainAgent
An agent for sending requests on
Axi4ReadInterface s and Axi4WriteInterface s.
Axi4ReadAgent
An agent for sending and monitoring read requests
Axi4ReadComplianceChecker
A checker for some of the rules defined in the AXI4 interface specification.
Axi4ReadInterface
A standard AXI4 read interface.
Axi4ReadMainDriver
A driver for the Axi4ReadInterface interface.
Axi4ReadMonitor
A monitor for Axi4ReadInterface s.
Axi4ReadRequestPacket
A read packet on an Axi4ReadInterface .
Axi4RequestPacket
A request packet on an AXI4 interface.
Axi4SubordinateAgent
A model for the subordinate side of
an Axi4ReadInterface and Axi4WriteInterface .
Axi4SystemInterface
AXI4 clock and reset.
Axi4Tracker
A tracker for the Axi4ReadInterface or Axi4WriteInterface .
Axi4WriteAgent
An agent for sending and monitoring write requests.
Axi4WriteComplianceChecker
A checker for some of the rules defined in the AXI4 interface specification.
Axi4WriteInterface
A standard AXI4 write interface.
Axi4WriteMainDriver
A driver for the Axi4WriteInterface interface.
Axi4WriteMonitor
A monitor for Axi4WriteInterface s.
Axi4WriteRequestPacket
A write packet on an Axi4WriteInterface .
AxiAddressRange
A repesentation of an address region for the
AXI Subordinate. Regions can have access modes
and can be leveraged for wrapping bursts.
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 .
BooleanConfig
A configuration class for boolean configurations, which can be used to
statically enable or disable features in a component.
BrentKung
BrentKung implements the Brent-Kung shaped ParallelPrefix tree pattern.
BruteSignExtension
A Brute Sign Extension class.
CarrySaveMultiplier
A binary multiplier using carry-save technique with pipelining.
CarrySaveMultiplierConfigurator
A Configurator for CarrySaveMultiplier .
CarrySelectCompoundAdder
Carry-select compound adder.
CarrySelectOnesComplementCompoundAdder
Carry-select ones-complement 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 ClockGate s.
ColumnCompressor
A column compressor module
CompactRectSignExtension
A Partial Product Generator using Compact Rectangular Extension
CompactSignExtension
A Compact Sign Extension class.
CompoundAdder
An abstract class for all compound adder module implementations.
CompoundAdderConfigurator
A Configurator for CompoundAdder .
CompressionTreeDotProduct
An integer dot product module using a ColumnCompressor .
CompressionTreeMultiplier
An implementation of an integer multiplier using compression trees.
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 Configurator s.
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 .
Csr
Logic representation of a Control and Status Register (CSR).
CsrBackdoorInterface
An interface to interact very simply with a CSR.
CsrBlock
Logic representation of a block of registers.
CsrBlockConfig
Definition for a coherent block of registers.
CsrConfig
Configuration for an architectural register.
CsrFieldConfig
Configuration for a register field.
CsrInstanceConfig
Configuration for a register instance.
CsrTop
Top level module encapsulating groups of CSRs.
CsrTopConfig
Definition for a top level module containing CSR blocks.
DataPortInterface
An interface to a simple memory that only needs enable, address, and data.
Deserializer
Deserializer aggregates data from a serialized stream.
DotProductBase
A dot product module for integers.
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 <LogicType extends Logic >
A module Fifo implementing a simple FIFO (First In, First Out) buffer.
FifoChecker
A checker for Fifo s 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 .
FindPattern
FindPattern functionality
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 ).
FixedPointSqrt
Implementation
Algorithm explained here;
https://projectf.io/posts/square-root-in-verilog/
FixedPointSqrtBase
Base class for fixed-point square root
FixedPointSqrtConfigurator
A Configurator for FixedPointSqrt .
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 ).
FixedPointValuePopulator <FxvType extends FixedPointValue >
A populator for FixedPointValue s, a utility that can populate various
forms of FixedPointValue s.
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
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.
FloatingPoint32ValuePopulator
A special type of FloatingPointValuePopulator that adjusts how
FloatingPoint32Value s are populated.
FloatingPoint64
Double floating point representation.
FloatingPoint64Value
A representation of a double-precision floating-point value.
FloatingPoint64ValuePopulator
A special type of FloatingPointValuePopulator that adjusts how
FloatingPoint64Value s are populated.
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 .
FloatingPointAdder <FpTypeIn extends FloatingPoint , FpTypeOut extends FloatingPoint >
An abstract API for floating point adders.
FloatingPointAdderConfigurator
A Configurator for FloatingPointAdder s.
FloatingPointAdderDualPath <FpTypeIn extends FloatingPoint , FpTypeOut extends FloatingPoint >
A fast adder module for variable width FloatingPoint logic signals.
FloatingPointAdderSinglePath <FpTypeIn extends FloatingPoint , FpTypeOut extends FloatingPoint >
A single-path adder implementation for FloatingPoint values.
FloatingPointBF16
Sixteen-bit BF16 floating point representation.
FloatingPointBF16Value
A representation of a BF16 floating-point value.
FloatingPointConditionalSwap <FpType extends FloatingPoint >
A module that swaps two floating point values based on a condition.
FloatingPointConverter <FpTypeIn extends FloatingPoint , FpTypeOut extends FloatingPoint >
A converter module between different FloatingPoint logic signals.
FloatingPointMultiplier <FpTypeIn extends FloatingPoint , FpTypeOut extends FloatingPoint >
An abstract API for floating-point multipliers.
FloatingPointMultiplierSimple <FpTypeIn extends FloatingPoint , FpTypeOut extends FloatingPoint >
A multiplier module for FloatingPoint logic.
FloatingPointMultiplierSimpleConfigurator
A Configurator for FloatingPointMultiplierSimple s.
FloatingPointSort <FpType extends FloatingPoint >
A module that sorts two floating point values, output the larger one
first.
FloatingPointSortByExp <FpType extends FloatingPoint >
A module that sorts two floating point values by exponent output the one
with the larger exponent first.
FloatingPointSqrt <FpType extends FloatingPoint >
An abstract API for floating point square root.
FloatingPointSqrtConfigurator
A Configurator for FloatingPointSqrt .
FloatingPointSqrtSimple <FpType extends FloatingPoint >
A square root module for FloatingPoint logic signals.
FloatingPointSwap <FpType extends FloatingPoint >
A module that swaps two floating point values.
FloatingPointTF32
TF32 floating point representation.
FloatingPointTF32Value
A representation of a TF32 floating-point value.
FloatingPointUtilities
A utility class for floating point operations.
FloatingPointValue
A flexible representation of floating point values. A FloatingPointValue
has a mantissa in [0,2)
with 0 <= exponent <= maxExponent();
A value
which FloatingPointValue.isNormal 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.
FloatingPointValuePopulator <FpvType extends FloatingPointValue >
A populator for FloatingPointValue s, a utility that can populate various
forms of FloatingPointValue s.
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:
FloatToFixedConfigurator
A Configurator for FloatToFixed .
FullAdder
A simple full-adder with single-bit inputs a
and b
to be added
with a carryIn
.
GatedCounter
A version of a Counter which includes ClockGate ing and ToggleGate ing
for power savings.
GeneralDotProduct
General version of the DotProductBase module that uses provided
Multiplier and Adder functions to construct the dot product computation.
GrayToBinaryConverter
A module for converting Gray code to binary representation.
GroupOfKnobs
A knob which groups together other ConfigKnob s.
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 implements the Kogge-Stone shaped ParallelPrefix tree
pattern.
LeadingDigitAnticipate
Module for predicting the number of leading digits (position of first
digit change) before the sum of the two 2s-complement numbers.
The leading digit position is either leadingDigit or leadingDigit + 1.
LeadingDigitAnticipateConfigurator
A Configurator for LeadingDigitAnticipate and LeadingZeroAnticipate .
LeadingZeroAnticipate
Module for predicting the number of leading zeros (position of leading 1)
before an addition or subtraction.
LeadingZeroAnticipateBase
Base class for leading-zero anticipate modules.
LeadingZeroAnticipateCarry
Module for predicting the number of leading zeros (position of leading 1)
before an addition or subtraction.
ListOfKnobsKnob
A knob wich holds a collection of other ConfigKnob s.
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.
MultiplierConfigurator
A Configurator for Multiplier s.
MultiplierEncoder
A class that generates the Booth encoding of the multipler.
MultiplierSelectKnob
A knob for selecting a multiplier to use in a component.
MultiplyAccumulate
An abstract class for all multiply accumulate implementations.
MultiplyOnly
A subclass of MultiplyAccumulate which ignores the third (c ) accumulate
term and applies the multiplier function.
NativeAdder
A class which wraps the native '+' operator so that it can be passed
into other modules as a parameter for using the native operation.
Note that NativeAdder is unsigned.
NativeMultiplier
A class which wraps the native '*' operator so that it can be passed
into other modules as a parameter for using the native operation.
NoneSignExtension
A range of SignExtension classes to be used in building new arithmetic
building blocks. Start with BruteSignExtension when composing new
partial product array shapes as it should work in all situations.
A Partial Product Generator using None Sign Extension
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, producing a magnitude and sign.
OutputWidthSelectKnob
A knob for selecting a different width output.
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 ParallelPrefixAdder s.
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
PartialProduct
A PartialProduct module wrapping partial product array manipulation
and generation of outputs in an actual module as opposed to an inline
generator class.
PartialProductArray
A PartialProductArray is a class that holds a set of partial products
for manipulation by PartialProductGeneratorBase and column compressor.
PartialProductGenerator
A concrete base class for partial product generation
PartialProductGeneratorBase
A PartialProductGeneratorBase 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.
PartialProductGeneratorBruteSignExtension
A wrapper class for BruteSignExtension we used
during refactoring to be compatible with old calls.
PartialProductGeneratorCompactRectSignExtension
A wrapper class for CompactRectSignExtension we used
during refactoring to be compatible with old calls.
PartialProductGeneratorCompactSignExtension
A wrapper class for CompactSignExtension we used
during refactoring to be compatible with old calls.
PartialProductGeneratorStopBitsSignExtension
Stop-bits based sign extension
PartialProductMatrix
An module API that represents a set of partial products rows including
their shifts. This is a base class for the PartialProduct module.
PartialProductSignExtension
API for sign extension classes.
PriorityArbiter
An Arbiter which always picks the lowest-indexed request.
PriorityArbiterConfigurator
A Configurator for PriorityArbiter .
PriorityEncoder
Base class for priority encoders.
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.
RecursiveModulePriorityEncoder
Priority finder based on bitwise OR operations, using a tree of modules.
RecursiveModulePriorityEncoderNode
Recursive Tree Node for Priority Encoding.
RecursivePriorityEncoder
Priority finder based on or() operations.
ReductionTree
Recursive Node for Reduction Tree
ReductionTreeGenerator
Reduction Tree Generator that produces a recursive tree computation
inline so that the operation can access global signals.
RegisterFile
A flop-based Memory .
RegisterFileConfigurator
A Configurator for RegisterFile s.
Ripple
A 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 .
RoundRNE
A rounding class that performs rounding-nearest-even
RoundRobinArbiter
A StatefulArbiter which fairly arbitrates between requests.
RoundRobinArbiterConfigurator
A Configurator for PriorityArbiter .
RuntimeConfig
A configuration class for runtime configurations, which can be used to
dynamically configure a component at runtime.
SerializationConfigurator
A Configurator for Serializer and Deserializer .
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
SignedShifter
A bit shifter that takes a positive or negative shift amount
SignMagnitudeAdder
A SignMagnitudeAdder performs addition on values in sign/magnitude
format.
SignMagnitudeAdderBase
A SignMagnitudeAdderBase performs addition on values in sign/magnitude
format.
SignMagnitudeDualAdder
A sign-magnitude adder implementation that uses two ones-complement adders
wired in opposition to compute the magnitude and sign without using internal
twos-complement addition. This will cost more area than a
SignMagnitudeAdder but will not require the caller to guarantee the order
of inputs or deal with the end-around carry and will be faster than adding
the end-around carry to get the correct sum.
SignMagnitudeValue
An immutable representation of a sign-magnitude value.
SignMagnitudeValuePopulator <SmvType extends SignMagnitudeValue >
A populator for SignMagnitudeValue s, a utility that can populate various
forms of SignMagnitudeValue s.
Sklansky
Sklansky implements the Sklansky-shaped ParallelPrefix tree pattern.
Sort
An abstract class for all sort algorithm.
SparseMemoryStorage
A sparse storage for memory models.
SpiChecker
Checker component for Serial Peripheral Interface (SPI).
SpiInterface
A standard Serial Peripheral Interface.
SpiMain
Main component for Serial Peripheral Interface (SPI).
SpiMainAgent
An agent for the main side of the SpiInterface .
SpiMainDriver
A driver for the main side of the SpiInterface .
SpiMonitor
A monitor for SpiInterface s.
SpiPacket
A packet for the SpiInterface .
SpiSub
Sub component for Serial Peripheral Interface (SPI).
SpiSubAgent
A model for the sub side of the SPI interface.
SpiSubDriver
A driver for the sub side of the SpiInterface .
SpiTracker
A tracker for SpiInterface .
StatefulArbiter
An Arbiter which holds state in order to arbitrate.
StaticOrRuntimeParameter
A general configuration class for specifying parameters that are
for both static or runtime configurations of a component feature.
StopBitsSignExtension
A StopBits Sign Extension.
StringConfigKnob
A knob for holding a String .
SubNormalAsZeroSelecKnob
Set of knobs for subnormal treatment.
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 Configurator s which can be configured by
text.
ToggleConfigKnob
A knob for holding a bool
.
ToggleGate
A gate for signals to avoid toggling when not needed.
TreeOneHotToBinary
Module for binary-tree recursion for decoding one-hot.
TrivialCompoundAdder
A trivial compound adder.
Mixins
ResettableEntries
Provides functionality for structures with many entries to have various
reset capabilities.