Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
e5f7c54
Add module services API
desmonddak Sep 4, 2026
8e171fe
Close waveform sink before test cleanup
desmonddak Sep 10, 2026
fd0afb4
fix tutorial headers
desmonddak Sep 15, 2026
21be74b
lint issues with deprecation
desmonddak Sep 15, 2026
213294d
restore creation dates
desmonddak Sep 15, 2026
24297e6
Ignore Visual Studio Code documentation link
desmonddak Sep 15, 2026
29dfbcd
Pin material UI before unsupported language features
desmonddak Sep 15, 2026
db5bd9a
document pin for material_ui
desmonddak Sep 15, 2026
6c0ac96
document pin for material_ui in devtools
desmonddak Sep 15, 2026
28abe1f
waveforms should not buffer by default, better service registration m…
desmonddak Sep 16, 2026
ad7cb8d
waveform service stores on demand only, service registration reworked
desmonddak Sep 16, 2026
e09ce57
need to thread option for waveform in memory for debug
desmonddak Sep 17, 2026
b63d486
Stop pinning material_ui below main
desmonddak Sep 17, 2026
1dc14ff
Constrain Material UI to compatible releases
desmonddak Sep 18, 2026
3d73353
Pin Cupertino UI for DevTools CI
desmonddak Sep 18, 2026
33c20d7
Use compatible Flutter SDK for DevTools CI
desmonddak Sep 18, 2026
c34b75e
Add FST waveform writing and block reading support
desmonddak Sep 4, 2026
6d456ac
streaming waveform fix
desmonddak Sep 17, 2026
f80dd91
Add SystemC generation, runtime, and module service
desmonddak Sep 4, 2026
202dd66
unnecessary import
desmonddak Sep 4, 2026
ef4d629
fix deprecation lint
desmonddak Sep 15, 2026
b928f6d
Add structure flattening for source debug
desmonddak Sep 10, 2026
4588b80
Add source-level debug, waveform data, and hierarchy navigation
desmonddak Sep 4, 2026
221c56d
remove unneed migration doc
desmonddak Sep 4, 2026
3708d8f
tests move to vm only
desmonddak Sep 4, 2026
28ef252
streaming waveform fix
desmonddak Sep 17, 2026
c579939
Format waveform service
desmonddak Sep 18, 2026
6e4022a
Keep waveform service current registry-backed
desmonddak Sep 18, 2026
73354d9
test: suppress expected Verilator filename warning
desmonddak Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/configs/mlc_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@
"pattern":"^https://docs.cocotb.org/en/stable/$"
},
{
"pattern":"^https://www.nandland.com"
"pattern": "^https://code\\.visualstudio\\.com/"
},
{
"pattern": "^https://www.nandland.com"
},
{
"pattern":"^https://.*\\.fandom\\.com"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_devtool.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
uses: flutter-actions/setup-flutter@v2
with:
channel: stable
version: 3.44.0
version: 3.47.2

- name: Run Flutter Test
run: tool/gh_actions/devtool/run_devtool_test.sh
Expand Down
15 changes: 13 additions & 2 deletions .github/workflows/general.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,29 @@ jobs:

- name: Install software - Verilator
run: bash tool/gh_actions/install_verilator.sh
- name: Install software - Accellera SystemC
run: tool/gh_actions/install_systemc.sh

- name: Pre-build SystemC PCH and Makefile
run: tool/gh_actions/setup_systemc_pch.sh

- name: Run project tests
run: tool/gh_actions/run_tests.sh

- name: Clean SystemC temporary files
run: tool/gh_actions/cleanup_systemc_tmp.sh

- name: Check temporary test files
run: tool/gh_actions/check_tmp_test.sh

# https://github.com/devcontainers/ci/blob/main/docs/github-action.md
- name: Build dev container and run tests in it
uses: devcontainers/ci@v0.3
with:
runCmd: ROHD_REQUIRE_VERILATOR=1 tool/gh_actions/run_tests.sh
runCmd: |
ROHD_REQUIRE_VERILATOR=1 tool/gh_actions/run_tests.sh
tool/gh_actions/cleanup_systemc_tmp.sh
tool/gh_actions/check_tmp_test.sh

deploy-documentation:
name: Deploy Documentation
Expand Down Expand Up @@ -124,7 +135,7 @@ jobs:
uses: flutter-actions/setup-flutter@v2
with:
channel: stable
version: 3.44.0
version: 3.47.2

- name: Run Flutter Test
run: tool/gh_actions/devtool/run_devtool_test.sh
Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,24 @@
- Improved generated SystemVerilog to inline packed `Logic.assignSubset` connections into submodule inputs (<https://github.com/intel/rohd/pull/711>).
- Fixed a bug where isolated bit drivers could be lost beside collapsed ranges (<https://github.com/intel/rohd/pull/711>)

- Added the `ModuleService` API for module-scoped generation, capture, and
inspection services. `ModuleServices` registers and looks up services for a
built module hierarchy, and `hierarchyJson` exposes its hierarchy as JSON.
- Added `ArtifactProducingService` and `ModuleServiceArtifact` for
transport-neutral output. Artifact-producing services default
`outputDirectory` to the current directory and `outputBaseName` to the
module definition name, and expose named, media-typed byte streams without
requiring filesystem output.
- Added `SystemVerilogService` for configured SystemVerilog synthesis,
in-memory source output, artifact inspection, and explicit directory writes.
Added `WaveformService` for in-memory waveform capture with optional file
writing through `writeToFile`.
- Added legacy-compatible `Module.dumpSystemVerilog` and `Module.dumpWaves`
convenience methods. `dumpSystemVerilog()` returns simple in-memory output;
`dumpWaves()` provides standard VCD capture as the replacement for
`WaveDumper`. `WaveDumper` and `generateSynth` are deprecated in favor of
these `Module` methods.

## 0.6.10

- 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>).
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Anyone interested in participating in ROHD is more than welcome to help!

## Code of Conduct

ROHD adopts the [Contributor Covenant](https://www.contributor-covenant.org/) v2.1 for the code of conduct. It can be accessed [here](CODE_OF_CONDUCT.md).
ROHD adopts the [Contributor Covenant](https://www.contributor-covenant.org/) v2.1 for the [Code of Conduct](CODE_OF_CONDUCT.md).

## Getting Help

Expand Down Expand Up @@ -126,7 +126,7 @@ Please include the SPDX tag near the top of any new files you create:
Here is an example of a recommended file header template:

```dart
// Copyright (C) 2021-2023 Intel Corporation
// Copyright (C) 2021-2026 Intel Corporation
// SPDX-License-Identifier: BSD-3-Clause
//
// example.dart
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
[![Chat](https://img.shields.io/discord/1001179329411166267?label=Chat)](https://discord.gg/jubxF84yGw)
[![License](https://img.shields.io/badge/License-BSD--3-blue)](https://github.com/intel/rohd/blob/main/LICENSE)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/intel/rohd/blob/main/CODE_OF_CONDUCT.md)
[![Coverage](https://raw.githubusercontent.com/intel/rohd/refs/heads/badges/coverage/main.svg)](https://github.com/intel/rohd/blob/main/.github/workflows/coverage.yml)

ROHD (pronounced like "road") is a framework for describing and verifying hardware in the Dart programming language.

Expand Down Expand Up @@ -44,8 +43,8 @@ You can also open this repository in a GitHub Codespace to run the example in yo
- Easy **IP integration** and **interfaces**; using an IP is as easy as an import. Reduces tedious, redundant, and error prone aspects of integration
- **Simple and fast build**, free of complex build systems and EDA vendor tools
- Can use the excellent pub.dev **package manager** and all the packages it has to offer
- Built-in event-based **fast simulator** with **4-value** (0, 1, X, and Z) support and a **waveform dumper** to .vcd file format
- Conversion of modules to equivalent, human-readable, structurally similar **SystemVerilog** for integration or downstream tool consumption
- Built-in event-based **fast simulator** with **4-value** (0, 1, X, and Z) support and a **waveform capture service** to .vcd or .fst file format
- Conversion of modules to equivalent, human-readable, structurally similar **SystemVerilog** and **SystemC** for integration or downstream tool consumption
- **Run-time dynamic** module port definitions (numbers, names, widths, etc.) and internal module logic, including recursive module contents
- Leverage the [ROHD Hardware Component Library (ROHD-HCL)](https://github.com/intel/rohd-hcl) with reusable and configurable design and verification components.
- Simple, free, **open source tool stack** without any headaches from library dependencies, file ordering, elaboration/analysis options, +defines, etc.
Expand All @@ -69,5 +68,6 @@ One of ROHD's goals is to help grow an open-source community around reusable har
ROHD is under active development. If you're interested in contributing, have feedback or a question, or found a bug, please see [CONTRIBUTING.md](https://github.com/intel/rohd/blob/main/CONTRIBUTING.md).

----------------

Copyright (C) 2021-2026 Intel Corporation
SPDX-License-Identifier: BSD-3-Clause
4 changes: 2 additions & 2 deletions benchmark/many_submodules_benchmark.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (C) 2024 Intel Corporation
// Copyright (C) 2024-2026 Intel Corporation
// SPDX-License-Identifier: BSD-3-Clause
//
// many_submodules_benchmark.dart
Expand Down Expand Up @@ -33,7 +33,7 @@ class ManySubmodulesBenchmark extends AsyncBenchmarkBase {
Future<void> run() async {
final dut = ManySubmodulesModule(Logic(), numSubModules: 10000);
await dut.build();
dut.generateSynth();
dut.dumpSystemVerilog();
}
}

Expand Down
4 changes: 2 additions & 2 deletions benchmark/wave_dump_benchmark.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (C) 2023 Intel Corporation
// Copyright (C) 2023-2026 Intel Corporation
// SPDX-License-Identifier: BSD-3-Clause
//
// wave_dump_benchmark.dart
Expand Down Expand Up @@ -56,7 +56,7 @@ class WaveDumpBenchmark extends AsyncBenchmarkBase {
_mod = _ModuleToDump(Logic(), _clk);
await _mod.build();

WaveDumper(_mod, outputPath: _vcdTemporaryPath);
_mod.dumpWaves(outputPath: _vcdTemporaryPath);

await Simulator.run();

Expand Down
6 changes: 6 additions & 0 deletions dart_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,9 @@ tags:
timeout: 2x
verilator:
timeout: 5m
ffi:
# Tests requiring dart:ffi and native shared libraries.

presets:
no-ffi:
exclude_tags: ffi
4 changes: 2 additions & 2 deletions doc/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The `Simulator` acts as a statically accessible driver of the overall simulation

### Synthesizer

A separate type of object responsible for taking a `Module` and converting it to some output, such as SystemVerilog.
A separate type of object responsible for taking a `Module` and converting it to some output, such as SystemVerilog or SystemC.

## Organization

Expand All @@ -44,7 +44,7 @@ Contains a collection of `Module` implementations that can be used as primitive

### Synthesizers

Contains logic for synthesizing `Module`s into some output. It is structured to maximize reusability across different output types (including those not yet supported).
Contains logic for synthesizing `Module`s into some output (e.g. SystemVerilog, SystemC). It is structured to maximize reusability across different output types.

### Utilities

Expand Down
Loading
Loading