- New Components:
- Added constraint generation to
random()forFixedPointValuePopulatorandFloatingPointValuePopulatorwhich allows for generating random values in those types constrained by a fixed range, inclusive or exclusive (gte,gt,lt,lte), and in the case ofFloatingPointValue, normal or subnormal numbers in that range (#232). - Improved SystemVerilog output:
- Added
FixedPointValueandFloatingPointValueoperators including negation, and comparison.- For
FixedPointValuethis is a deprecating change as previous operators returnedLogicValueand their future operators will returnbool(#232). For now,boolreturn methods are provided for transitioning:.ltBool,.lteBool,.gtBool, and.gteBool. They will be deprecated in the future foroperator <,operator <=,operator >andoperator >=, respectively.
- For
- Added dynamic sign extension capability to
ReductionTree(#246). - Bug fixes:
- Updates for current ROHD version 0.6.6 (https://github.com/intel/rohd/releases/tag/v0.6.6) compatibility:
- Improved internal code documentation to use more references of types (#223).
- Added extensive variable-width floating-point support:
- Added support classes
FloatingPointLogicandFloatingPointValue(#97), (#110), (#131), (#156), (#175), (#134). - Added
FloatingPointAdderabstract component API with implementationsFloatingPointSinglePathAdderandFloatingPointDualPathAdder(#106), with pipelining (#126), (#182). - Added explicit J-Bit option for
FloatingPointValueandFloatingPointLogic(#193) as well as in theFloatingPointAdderSinglePathandFloatingPointAdderDualPath. This allows for unnormalized floating-point representation by storing the leading '1' or j-bit in the mantissa. - Modified
FloatingPointValueandFloatingPointLogicto support denormal-as-zero (DAZ) and flush-to-zero (FTZ) (#212). Implemented inFloatingPointAdderSinglePathandFloatingPointAdderDualPath. - Added
FloatingPointConvertercomponent (#123), (#161) to convert between different widths ofFloatingPointLogic. - Added
FloatingPointMultiplerbase API withFloatingPointMultiplierSimpleimplementation component (#152), (#160). - Added square root components for floating-point (#188).
- Added support classes
- Added fixed-point support classes
FixedPointLogicandFixedPointValue(#99), (#132), (#167), (#172), (#208). - Added
StaticOrRuntimeParameterconfiguration class which provides API support for configuration of a hardware feature within a component using a single parameter for either static configuration with aboolor dynamic configuration with aLogicsignal (#214). - Added AXI4 interface with functional model (#159).
- Added Control Status Register capabilities (#151), (#205), (#197).
- Added
SumandCountercomponents (#89) which are fully-featured capabilities to track counters with multiple inputs and various options to handle overflow. - Added
SerializerandDeserializercomponents (#92) which handle marshalling and unmarshalling of data onto wider or narrower interfaces. - Added
ReductionTreemodule andReductionTreeGeneratorcomponent (#155), (#180), (#204) which allow generalized reduction operations of arbitrary radix with pipelining. - Added
Extremacomponent (#93). - Added clock gating componentry (#96), (#111).
- Added fast
RecursiveModulePriorityEncoder(#178) to complementParallelPrefixPriorityEncoder. - Added
OnesComplementAddercomponent (#85). - Added
CompoundAdderandCarrySelectOnesComplementadder components (#98), (#178). - Added extensive integer multiplication support:
- Added multiplier componentry such as parameterizable Booth-encoders, different kinds of sign extension on a partial-product array, delay-driven Wallace tree compression, and selection of differnt kinds for final adders (#85).
- Added components
CompressionTreeMultiplierandCompressionTreeMultiplyAccumulatesupporting signed and unsigned operands, both statically and logically controlled, rectangular multiplication, Booth encoding with radices 2,4,8, and 16, delay-driven Wallace tree, and configurable final adder, all with exhaustive narrow-width testing (#144). - Added wrapper class
NativeMultiplier(#125).
- Added integer
MultiCycleDivider(#87), (#117), (#129), (#141). - Added Parallel Prefix Tree components: adding
ParallelPrefixAdder,ParallelPrefixEncoder,ParallelPrefixIncr,ParallelPrefixDecrandParallelPrefixOrScan(#77), fixing Issue (#12). The types of prefix trees supported areKogge-Stone,Sklansky,Brent-Kung, andRipple. - Added Ready-Valid Bus Functional Model (#69).
- Added
HammingEccTramsitterandHammingEccReceivercomponentry with SECC/SEDDED/SECDED, and SEDDEDTED (#74). - Added
BinaryToGrayandGrayToBinaryconversion components (#54). - Added
EdgeDetectorcomponent (#75). - Added Serial Peripheral Interface componentry and functional modeling (#148).
- Added
Find-Nthcomponent (#187). - Modified
ShiftRegistercomponent to support async reset and different stage reset values (#105). - Modified tree form of
OneHotToBinaryto add error generation (#211). - Fixed bugs in
FifoCheckersampling at clock edges that caused failures. (#70). - Updated
ApbTrackerfor configurable widths and data (#71). - Breaking:
ParityTransmitterdeprecatesparityforcode,checkErrorforerrorandoriginalDatafordata. - Fixed memory model for read-after-write or read on non-zero latency (#72).
- Fixed bug in
SparseMemoryStorage(#195). - Improved
MemoryStorageread (#176). - Added online schematic generation in the web generator application using yoWASP (WebAssembly form of the yosys logic synthesis tool) and d3schematics graphics (SVG) generation (#84).
- Modified code to be compatible with ROHD 0.6.0 (#150).
- Modified code to be lint-compatible with Dart 3.8 (#202).
- Updated flutter to version 3.27.0 (#212).
- Added flutter to devcontainer (#79).
- Fixed documentation linting to be compatible with Dart 3.3.0 and above (#80).
- The first formally versioned release of ROHD-HCL.