PackageTrack
Sign in Get early access

rohd

The Rapid Open Hardware Development (ROHD) framework, a framework for describing and verifying hardware.

0.6.10 10K downloads/mo #2898 most downloaded on pub.dev intel/rohd

What this package is like to depend on

Last release 19 days ago

04 Aug 2026

Release timing varies

gaps range from 9 days to 9 months

Nearly every release is documented

notes for 25 of 25 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

25 releases · first in 2021

4 releases in the last 12 months

see the full history below

Release timeline

25 releases · Nov 2021 to Aug 2026
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 25
  1. 0.6.10 04 Aug 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.6.9...v0.6.10

    Open source →
    Release notes
    • Improved Logic.replicate(1) and same-width signExtend to return the original signal, eliminating redundant replication modules and generated SystemVerilog (https://github.com/intel/rohd/pull/689).
    • Improved simulation performance and generated outputs by avoiding module creation for four-state-safe operations involving Consts, zero shifts, and muxes with constant controls (https://github.com/intel/rohd/issues/429).
    • Enforced that Const values cannot be changed through put or inject, including through another Logic driven by a Const (https://github.com/intel/rohd/issues/486).
    • Added per-Const preferred radix control for generated literals, normalized Const names to reflect their displayed radix, and enhanced LogicValue.toRadixString to omit its width and radix decorator or digit separators (https://github.com/intel/rohd/issues/601).
    • Fixed a bug to prevent stack overflows when synthesizing designs with combinational loops (https://github.com/intel/rohd/pull/680).
    • Improved generated SystemVerilog to collapse contiguous partial array and range assignments into packed slice assignments when safe (https://github.com/intel/rohd/pull/676).
    • Added per-direction configuration of explicit or implicit object and data types for generated SystemVerilog ports. Defaults preserve the existing input logic, output logic, and inout wire declarations (https://github.com/intel/rohd/pull/678, https://github.com/intel/rohd/pull/687).
    • Significantly enhanced ROHD DevTools with embedded and standalone VM connections, live hierarchy and signal inspection, filtering, snapshots and export, and cross-probe integration (https://github.com/intel/rohd/pull/665).
    • Added the rohd_hierarchy package for compact hierarchy dictionaries, canonical occurrence addresses, hierarchy search, and netlist adapters (https://github.com/intel/rohd/pull/653).
    • Added the ROHD VS Code extension with context-aware snippets, Dart Tooling Daemon integration, and source navigation for cross-probing from ROHD viewers (https://github.com/intel/rohd/pull/670).
    • Improved Logic.getRange and slice on filled Consts to return direct constants instead of constructing BusSubset modules (https://github.com/intel/rohd/pull/677).
    • Improved generated SystemVerilog for swizzles to compact adjacent bit selections into legal slice expressions (https://github.com/intel/rohd/pull/674).
    • Improved generated SystemVerilog to collapse a variety of intermediate LogicArrays and net buses (e.g. from bit-blasting, aggregate connections, assignSubset) into inline concatenations on their consuming connections, eliminating unnecessary intermediate declarations, assigns, and net_connects when it is safe to do so (https://github.com/intel/rohd/pull/663).
    • Centralized synthesizer naming so output names in different contexts are more consistent. Generated SystemVerilog signal and instance names may change in designs with name collisions, repeated constants, or mergeable intermediate signals, so tests or downstream scripts that match exact generated identifiers may need updates (https://github.com/intel/rohd/pull/652).
    Open source →
  2. 0.6.9 17 Apr 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.6.8...v0.6.9

    Open source →
    Release notes
    Open source →
  3. 0.6.8 18 Jan 2026
    Release notes

    What's Changed

    • Fix typos by @antonkesy in #642
    • Fix bug where const assignments could be lost in some disallowed const scenarios by @mkorbel1 in #643
    • Fix bug where output/inOut connection is incorrectly pruned when unnamed by @mkorbel1 in #644
    • Preparing to release v0.6.8 by @mkorbel1 in #645

    New Contributors

    Full Changelog: v0.6.7...v0.6.8

    Open source →
    Release notes
    Open source →
  4. 0.6.7 27 Dec 2025
    Release notes

    What's Changed

    • LogicValue.ofRadixString returning 0 on bad input instead of throwing by @desmonddak in #617
    • Deprecate PairInterface.modify in favor of uniquify on addSubInterface by @mkorbel1 in #620
    • fixes for pub.dev issues in 0.6.6 by @desmonddak in #621
    • Performance optimization on Conditional.driveX by @mkorbel1 in #623
    • Improve WriteAfterReadException message with trace of involved assignments by @mkorbel1 in #624
    • Fix typo in user guide by @gharbi-mohamed-dev in #626
    • Improve exceptions for SSA checks with improper reuse by @mkorbel1 in #625
    • Driving and receiving of hierarchical PairInterfaces by @mkorbel1 in #628
    • Fix bug where one-bit struct output ports improperly slice by @mkorbel1 in #629
    • Fix bug where cached packed on LogicStructures on output ports reused inside and out cause build trace failures by @mkorbel1 in #631
    • Fix bug with Module port naming in generated outputs when LogicStructures contain ports by @mkorbel1 in #630
    • Improve SSA error debuggability with hierarchy by @mkorbel1 in #635
    • Fix bug where partial array assignments could cause missing assignments in generated outputs by @mkorbel1 in #637
    • Mark bit ranges of swizzles with comments in generated SystemVerilog by @mkorbel1 in #627
    • Pruning, empty disconnected ports, and removal of unused signals by @mkorbel1 in #638
    • Preparing to release v0.6.7 by @mkorbel1 in #640

    New Contributors

    Full Changelog: v0.6.6...v0.6.7

    Open source →
    Release notes
    Open source →
  5. 0.6.6 06 Aug 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.6.5...v0.6.6

    Open source →
    Release notes
    • Added cloneing for Interfaces and Logics and APIs that leverage the new capabilities (https://github.com/intel/rohd/pull/614).
      • Added a new expectation for Interfaces and Logics (and derivative classes) to implement a clone function, to enable better APIs and reuse in various scenarios.
      • Deprecated PairInterface.clone constructor in favor of new clone method on PairInterface instances.
      • Added new addTyped* functions on Module which will create a clone of original source for ports. This also supports LogicStructures as ports.
      • Added new addInterfacePorts and addPairInterfacePorts functions on Module which wrap connectIO and pairConnectIO, respectively, to make adding interfaces on Modules easier and more consistent with creation of other ports.
    • Updated naming of generated SystemVerilog signals (without reserved names) that were part of LogicStructures to include the name of the parent structure as a prefix.
    • Added packed to base Logic, which just returns itself, so that it can safely be called on any Logic without first checking the type.
    • Fixed a bug related to module selection in the ROHD DevTools Extension (https://github.com/intel/rohd/pull/612).
    Open source →
  6. 0.6.5 11 Jul 2025
    Release notes

    What's Changed

    Full Changelog: v0.6.4...v0.6.5

    Open source →
    Release notes
    Open source →
  7. 0.6.4 10 Jul 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.6.3...v0.6.4

    Open source →
    Release notes
    Open source →
  8. 0.6.3 20 Feb 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.6.2...v0.6.3

    Open source →
    Release notes
    Open source →
  9. 0.6.2 31 Jan 2025
    Release notes

    What's Changed

    • Transition to using a different addition syntax for lint avoidance by @mkorbel1 in #478
    • Simulator end of sim actions and exception handling by @mkorbel1 in #558
    • Support VCDs generated by Verilator in VcdParser by @mkorbel1 in #557
    • Preparing to release v0.6.2 by @mkorbel1 in #560

    Full Changelog: v0.6.1...v0.6.2

    Open source →
    Release notes
    Open source →
  10. 0.6.1 21 Jan 2025
    Release notes

    What's Changed

    • Fix bug in SSA discovery when LogicStructures are used by @mkorbel1 in #540
    • Fix bug where Module.build didn't follow through structs containing ports properly, plus improved debug messaging. by @mkorbel1 in #541
    • fix radix10 issue in toRadixString by @desmonddak in #543
    • Add Logic.named and broaden clone by @mkorbel1 in #550
    • Preparing to release v0.6.1 by @mkorbel1 in #555

    Full Changelog: v0.6.0...v0.6.1

    Open source →
    Release notes
    Open source →
  11. 0.6.0 31 Dec 2024
    Release notes
    • Added LogicNet, inOuts, and TriStateBuffer to enable multi-directional wires, ports, and drivers. Includes support for "wire-only" operations supporting multiple drivers.
    • Deprecated CustomSystemVerilog in favor of SystemVerilog, which has similar functionality but supports inOut ports, and collapses all ports into a single ports argument, as well as some other new features like custom definitions and parameter passthroughs.
    • Breaking: ExternalSystemVerilogModule and InlineSystemVerilog now extend SystemVerilog instead of CustomSystemVerilog, meaning the instantiationVerilog API arguments have been modified.
    • Breaking: Increased minimum Dart SDK version to 3.0.0.
    • Breaking: Interface.connectIO has an additional optional named argument for inOutTags. Implementations of Interface which override connectIO will need to be updated.
    • Fixed a bug where expressionlessInputs may not have been honored in non-inline custom SystemVerilog modules.
    • Fixed a bug where in some cases an xor between two LogicValues could cause an exception due to a false width mismatch.
    • Added better checking, error handling, and message when module hierarchy cannot be properly resolved (e.g. self-containing modules, modules within multiple hierarchies).
    • Breaking: Updated APIs for Synthesizer.synthesize and down the stack to use a Function to calculate the instance type of a module instead of a Map look-up table.
    • Added srcConnections API to Logic to make it easier to trace drivers of subtypes of Logic which contain multiple drivers.
    • Improved SystemVerilog generation to be more succinct for array to array assignments.
    • Breaking: Const constructor updated so that specified width takes precedence over the inherent width of a provided LogicValue val.
    • Added flags to support an asyncReset option in places where sequential reset automation was already present.
    • Breaking: Sequential has new added strictness checking when triggers and non-triggers change simultaneously (in the same Simulator tick) when it may be unpredictable how the hardware would synthesize or sample the inputs. In these scenarios, Sequential will interpret affected inputs as X, thus driving Xs on affected outputs instead of just picking an order. Descriptions that properly imply asynchronous resets are predictable and therefore unaffected.
    • Breaking: injected actions in the Simulator now occur in the mainTick phase. This API will generally continue to work as expected and as it always has, but in some scenarios could slightly change the behavior of existing testbenches.
    • Added a new API Simulator.injectEndOfTickAction which behaves similarly to Simulator.injectAction, except it registers the event to occur at the end of the tick rather than in the main phase. This is useful for some specific simulation situations like cosimulation, but not generally expected to be used for "normal" testbench development.
    • Breaking: Simulator.run now yields execution of the Dart event loop prior to beginning the simulation. This makes actions taken before starting the simulation more predictable, but may slightly change behavior in existing testbenches that relied on a potential delay.
    • Improved error and exception messages.
    • Various performance enhancements.
    • Fixed a bug where asynchronous events could sometimes show up late in generated waveforms from WaveDumper.
    • Added support for negative edge triggers to Sequential.multi for cases where synthesis may interpret an inverted posedge as different from a negedge.
    • Fixed a bug where resetValues would not take effect in Pipelines.
    • Fixed a bug where a multi-triggered Sequential may not generate X's if one trigger is valid and another trigger is invalid.
    • Fixed bugs related to array signal discovery during the build process that, while they do not affect functionality or generated SystemVerilog, could provide incomplete information related to the contents of Modules from an API perspective.
    • Fixed bugs where generated SystemVerilog could have parameter declaration or assignment sections that were empty, which is illegal SystemVerilog and would cause build errors (https://github.com/intel/rohd/pull/498).
    • Fixed a bug where sometimes getRange on LogicStructures and LogicArrays could access the wrong set of signals (https://github.com/intel/rohd/pull/499).
    • Add the assignSubset API to Logic and LogicStructure which behave similarly to the already-present API in LogicArray (https://github.com/intel/rohd/pull/502).
    • Added convenience APIs for accessing the original sources external to a Module for inputs and inOuts (https://github.com/intel/rohd/pull/503).
    • Added functionality to LogicValue to enable conversion to and from various different radix strings.
    • Fixed bugs related to the handling of errors which cause the Simulator to halt (https://github.com/intel/rohd/pull/515).
    Open source →
  12. 0.5.3 05 Apr 2024
    Release notes
    Open source →
  13. 0.5.2 09 Jan 2024
    Release notes
    • Added APIs for accessing indices of a List<Logic> using another Logic: Logic.selectFrom and List<Logic>.selectIndex (https://github.com/intel/rohd/pull/438).
    • Added/fixed support for compiling ROHD to JavaScript via bug fixes, compile-time arithmetic precision consideration, and testing (https://github.com/intel/rohd/pull/445).
    • Added isZero to LogicValue.
    • Improved Pipeline abstraction via bug fixes, better error checking, improved documentation, and new APIs (https://github.com/intel/rohd/pull/447).
    • Improved performance of construction of Combinational.ssa (https://github.com/intel/rohd/pull/443).
    • Updated Simulator.endSimulation API to return a Future which completes once the simulation has ended (https://github.com/intel/rohd/pull/455).
    • Fixed bugs where certain non-synthesizable function calls on LogicStructures (e.g. for verification) could add additional hardware (which did not affect functionality) and also cause unexpected behavior on previousValue (https://github.com/intel/rohd/issues/457).
    • Fixed bugs where certain APIs on Logic (e.g. changed, previousValue) could have incorrect behavior after a Simulator.reset (https://github.com/intel/rohd/pull/458).
    • Fixed a bug where LogicValue.clog2 was inaccurate in rare scenarios.
    • Fixed a bug that caused a crash when comparing certain LogicValues.
    • Fixed a bug where conversions between BigInts and LogicValues could result in incorrect arithmetic operations.
    • Fixed a bug where FiniteStateMachine-generated mermaid diagrams were missing "default next state" cases (https://github.com/intel/rohd/pull/454).
    • Allowed generated SystemVerilog to contain assignments to z (floating) if explicitly connected to a constant z (https://github.com/intel/rohd/pull/441).
    Open source →
  14. 0.5.1 29 Nov 2023
    Release notes
    • Fixed bugs and improved controllability around naming of internal signals and collapsing of inlineable functionality, leading to significantly more readable generated SystemVerilog (https://github.com/intel/rohd/pull/439).
    • Fixed a bug where identical module definitions with different reserved definition names would merge incorrectly in generated outputs(https://github.com/intel/rohd/issues/345).
    • Improved organization of port and internal signal declarations in generated outputs.
    • Fixed bugs where generated SystemVerilog could flag lint issues due to unsafe truncation of signals in cases like + and << (https://github.com/intel/rohd/pull/423).
    Open source →
  15. 0.5.0 25 Sep 2023
    Release notes
    • Added LogicArray for N-dimensional packed and unpacked (and mixed) arrays. Added LogicStructure for grouping sets of related signals together in a convenient way (https://github.com/intel/rohd/pull/375).
    • Added a ConditionalGroup which can group a collection of other Conditionals into one Conditional object.
    • Breaking: some APIs which previously returned ConditionalAssign now return a Conditional, such as the < operator for Logic.
    • Updated LogicValue.of which now accepts a dynamic input and tries its best to build what you're looking for. Added LogicValue.ofIterable to replace the old LogicValue.of.
    • Added previousValue to Logic to make testbench and modelling easier for things like clock edge sampling.
    • Breaking: Modified the way Combinational sensitivities are implemented to improve performance and prevent some types of simulation/synthesis mismatch bugs. Added Combinational.ssa as a method to safely build procedural logic. Combinational will now throw fatal exceptions in cases of "write after read" violations. (https://github.com/intel/rohd/pull/344)
    • Deprecated getReceivers, getDrivers, and getConditionals in always blocks like Combinational and Sequential in favor of simpler and more efficient APIs receivers, drivers, and conditionals.
    • Breaking: shorthand notation APIs for incr, decr, mulAssign, and divAssign have been modified.
    • Replaced IfBlock with If.block (deprecated IfBlock).
    • Replaced StateMachine with FiniteStateMachine (deprecated StateMachine).
    • Added support for multi-trigger (e.g. async reset) to abstractions like FiniteStateMachine and Pipeline. Deprecated clk on FiniteStateMachine and Pipeline.
    • Added ability to generate an FSM diagram in mermaid from a FiniteStateMachine.
    • Added PairInterface to make it easier to build and use simple Interfaces.
    • Breaking: connectIO in Interface now accepts Iterables instead of only Sets.
    • Improved numerous Exceptions throughout to provide more specific information about errors and make them easier to catch and handle.
    • Upgraded some operations to avoid generating unnecessary hardware and SystemVerilog when configured to leave a signal unchanged (e.g. getRange, swizzle, slice, etc.).
    • Added extension to generate randomized LogicValues from a Random.
    • Added replication operations to LogicValue and Logic.
    • Added equalsWithDontCare to LogicValue for comparisons where invalid bits are "don't-care".
    • Improved timestamps in generated outputs to make timezones apparent.
    • Added the flop function to construct FlipFlops in an easier way.
    • Added the cases function to construct simple Case statements in an easier way.
    • Added APIs for configuring reset and reset values in Sequential and flip flops.
    • Added APIs for adding an enable to flip flops.
    • Implemented a variety of performance enhancements for both build and simulation.
    • Added tryInput and tryOutput to Module and tryPort to Interface to more easily handle conditionally present ports by leveraging Dart's null safety by returning null if the port does not exist (instead of an exception).
    • Added gt and gte to Logic to make APIs more consistent.
    • Added clog2 to LogicValue.
    • Added neq and pow to both Logic and LogicValue.
    • Made LogicValue implement Comparable, enabling things like sorting.
    • Enabled WaveDumper to recursively create necessary directories for specified output paths.
    • Fixed a bug where ports could be created with an empty string as the name (https://github.com/intel/rohd/issues/281).
    • Fixed a bug where generated SystemVerilog for arithmetic shift-right operations would sometimes be incorrect (https://github.com/intel/rohd/issues/295).
    • Fixed a bug where SynthBuilder would not flag an error when run on a Module that hadn't yet been built (https://github.com/intel/rohd/issues/246).
    • Disallowed signals from being connected directly to themselves in a combinational loop.
    • Fixed a bug where non-synthesizable deposits on undriven signals could affect the generated output SystemVerilog by inserting a non-floating constant (https://github.com/intel/rohd/issues/254).
    • Reinstated an accidentally removed exception for when signal width mismatch occurs (https://github.com/intel/rohd/issues/311).
    • Fixed a bug where indexing a constant value could generate invalid SystemVerilog.
    • Fixed a bug where constants and values that could be interpreted as negative 64-bit values would sometimes generate a - sign in output SystemVerilog.
    • Fixed bugs so Ifs that are illegally constructed throw an Exception (https://github.com/intel/rohd/issues/382).
    • Fixed a bug where FiniteStateMachine could create an inferred latch (https://github.com/intel/rohd/pull/390).
    • Fixed an issue where Case statements with multiple matches would throw an Exception instead of driving x on the output, which could cause spurious crashes during glitch simulation (https://github.com/intel/rohd/issues/107).
    • Fixed a number of bugs related to logical, shift, math, and comparison operations related to width and sign interpretation.
    • Fixed a bug where Case and CaseZ would not use the properly edge-sampled value in Sequential blocks (https://github.com/intel/rohd/issues/348).
    • Fixed bugs where logic that is driven by floating signals would sometimes drive z instead of x on outputs (https://github.com/intel/rohd/issues/235).
    Open source →
  16. 0.4.2 08 Feb 2023
    Release notes
    Open source →
  17. 0.4.1 16 Dec 2022
    Release notes
    Open source →
  18. 0.4.0 24 Oct 2022
    Release notes
    Open source →
  19. 0.3.2 19 Aug 2022
    Release notes
    • Added the StateMachine abstraction for finite state machines.
    • Added support for the modulo % operator.
    • Added ability to register actions to be executed at the end of the simulation.
    • Modified the WaveDumper to write to the .vcd file asynchronously to improve simulation performance while waveform dumping is enabled (https://github.com/intel/rohd/issues/3)
    Open source →
  20. 0.3.1 06 Jun 2022
    Release notes
    Open source →
  21. 0.3.0 05 May 2022
    Release notes
    • Breaking: Merged LogicValue and LogicValues into one type called LogicValue.
    • Deprecation: Aligned LogicValue to Logic by renaming length to width.
    • Breaking: Logic.put no longer accepts List<LogicValue>, swizzle it together instead.
    • Deprecated Logic.valueInt and Logic.valueBigInt; instead use equivalent functions on Logic.value.
    • Deprecated bit on both LogicValue and Logic; instead just check width.
    • Added ability in LogicValue.toString to decide whether or not to include the width annotation through includeWidth argument.
    • Fixed a bug related to zero-width construction of LogicValues (https://github.com/intel/rohd/issues/90).
    • Fixed a bug where generated constants in SystemVerilog had no width, which can cause issues in some cases (e.g. swizzles) (https://github.com/intel/rohd/issues/89)
    • Added capability to convert binary strings to ints with underscore separators using bin (https://github.com/intel/rohd/issues/56).
    • Added getRange and reversed on Logic and slice on LogicValue to improve consistency.
    • Using slice in reverse-index order now reverses the order.
    • Added the ability to extend signals (e.g. zeroExtend and signExtend) on both Logic and LogicValue (https://github.com/intel/rohd/issues/101).
    • Improved flexibility of IfBlock.
    • Added withSet on LogicValue and Logic to make it easier to assign subsets of signals and values (https://github.com/intel/rohd/issues/101).
    • Fixed a bug where 0-bit signals would sometimes improperly generate 0-bit constants in generated SystemVerilog (https://github.com/intel/rohd/issues/122).
    • Added capability to reserve instance names, as well as provide and reserve definition names, for Modules and their corresponding generated outputs.
    Open source →
  22. 0.2.0 09 Feb 2022
    Release notes
    • Updated implementation to avoid Iterable.forEach to make debug easier.
    • Added ofBool to LogicValue and LogicValues (https://github.com/intel/rohd/issues/34).
    • Breaking: updated Interface API so that getPorts returns a Map from port names to Logic signals instead of just a list, which makes it easier to work with when names are uniquified.
    • Breaking: removed setPort from Interface. Use setPorts instead.
    • Deprecated swizzle and rswizzle global functions and replaced them with extensions on Lists of certain types including Logic, LogicValue, and LogicValues (https://github.com/intel/rohd/issues/70).
    • Breaking: renamed ExternalModule to ExternalSystemVerilogModule since it is specifically for SystemVerilog.
    • Breaking: made topModuleName a required named parameter in ExternalSystemVerilogModule to reduce confusion.
    • Added simulationHasEnded bool to Simulator.
    • Updated Simulator to allow for injected actions to return Futures which will be awaited.
    • Fixed bug where Simulator warns about maximum simulation time when not appropriate.
    • Fixed a bug where ExternalSystemVerilogModule could enter infinite recursion.
    • Some improvements to SimCompare to properly check values at the end of a tick and support a wider variety of values in Vectors.
    • Fixed a bug related to Sequential signal sampling where under certain scenarios, signals would pass through instead of being flopped (https://github.com/intel/rohd/issues/79).
    • Deprecated a number of from functions and replaced them with of to more closely follow Dart conventions (https://github.com/intel/rohd/issues/72).
    Open source →
  23. 0.1.2 06 Dec 2021
    Release notes
    Open source →
  24. 0.1.1 30 Nov 2021
    Release notes
    Open source →
  25. 0.1.0 10 Nov 2021
    Release notes
    • The first formally versioned release of ROHD.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive