Module services api - #673
Conversation
3d193c2 to
851bbfb
Compare
There was a problem hiding this comment.
Pull request overview
Introduces module-scoped SystemVerilog and waveform services, while also adding substantial netlist, typed-array, DevTools, example, and documentation changes.
Changes:
- Adds
ModuleService,SystemVerilogService,WaveformService, and convenience APIs. - Expands netlist synthesis and typed logic-array support.
- Migrates tests, examples, DevTools integrations, and documentation.
Reviewed changes
Copilot reviewed 176 out of 177 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
tool/gh_actions/install_node.sh |
Updates copyright. |
tool/gh_actions/check_tmp_test.sh |
Updates copyright. |
tool/generate_gate_catalog.dart |
Adds fixture generation tool. |
test/waveform_service_test.dart |
Tests waveform service and compatibility API. |
test/typed_port_test.dart |
Migrates synthesis calls. |
test/systemverilog_port_types_test.dart |
Uses SystemVerilog service. |
test/synth_structure_layout_test.dart |
Tests structure layout utilities. |
test/swizzle_test.dart |
Migrates synthesis calls. |
test/sv_param_passthrough_test.dart |
Migrates synthesis call. |
test/sv_gen_test.dart |
Migrates synthesis tests. |
test/struct_port_pruning_test.dart |
Adds struct-port pruning tests. |
test/sequential_test.dart |
Migrates synthesis call. |
test/replication_test.dart |
Migrates synthesis calls. |
test/provider_consumer_w_modify_test.dart |
Migrates synthesis call. |
test/provider_consumer_test.dart |
Migrates synthesis call. |
test/pipeline_test.dart |
Updates copyright. |
test/pair_interface_test.dart |
Migrates synthesis call. |
test/pair_interface_hier_w_modify_test.dart |
Migrates synthesis call. |
test/pair_interface_hier_test.dart |
Migrates synthesis call. |
test/net_test.dart |
Migrates synthesis calls. |
test/net_bus_test.dart |
Migrates synthesis calls. |
test/nested_array_struct_port_synthesis_test.dart |
Restricts platform and migrates API. |
test/naming_namespace_test.dart |
Migrates synthesis calls. |
test/naming_cases_test.dart |
Migrates synthesis call. |
test/name_test.dart |
Migrates synthesis and exception checks. |
test/multimodule5_test.dart |
Migrates synthesis call. |
test/multimodule4_test.dart |
Migrates synthesis call. |
test/module_test.dart |
Tests convenience output methods. |
test/module_services_test.dart |
Tests registry and SystemVerilog service. |
test/module_merging_test.dart |
Migrates synthesis calls. |
test/math_test.dart |
Migrates synthesis calls. |
test/mac_unit_test.dart |
Tests MAC pipeline stalling. |
test/logic_test.dart |
Updates copyright. |
test/logic_structure_test.dart |
Tests structure flattening and constants. |
test/logic_name_test.dart |
Migrates synthesis calls. |
test/logic_name_config_test.dart |
Migrates synthesis calls. |
test/logic_array_test.dart |
Migrates synthesis calls. |
test/inout_loopback_test.dart |
Migrates synthesis calls. |
test/gate_test.dart |
Migrates synthesis calls. |
test/fsm_test.dart |
Migrates synthesis calls. |
test/flop_test.dart |
Updates copyright. |
test/external_test.dart |
Migrates synthesis call. |
test/counter_wintf_test.dart |
Migrates synthesis call. |
test/counter_test.dart |
Updates waveform example comment. |
test/const_radix_test.dart |
Migrates synthesis calls. |
test/config_test.dart |
Tests new and deprecated synthesis APIs. |
test/comb_mod_test.dart |
Updates copyright. |
test/comb_math_test.dart |
Updates copyright. |
test/collapse_test.dart |
Migrates synthesis calls. |
test/bus_test.dart |
Migrates synthesis calls. |
test/benchmark_test.dart |
Updates copyright. |
test/assignment_test.dart |
Updates copyright. |
rohd-multipackage.code-workspace |
Removes checked-in workspace. |
rohd_extension/package.json |
Adds command activation events. |
rohd_extension/dart/lib/dtd_service.dart |
Improves connection diagnostics. |
rohd_devtools_extension/tool/test_devtools_install.dart |
Checks binary asset manifest. |
rohd_devtools_extension/packages/rohd_devtools_widgets/test/signal_value_format_registry_test.dart |
Tests signal value formatting. |
rohd_devtools_extension/packages/rohd_devtools_widgets/README.md |
Documents shared widgets. |
rohd_devtools_extension/packages/rohd_devtools_widgets/pubspec.yaml |
Adds hierarchy dependency. |
rohd_devtools_extension/packages/rohd_devtools_widgets/lib/rohd_devtools_widgets.dart |
Exports format registry. |
rohd_devtools_extension/lib/rohd_devtools/ui/signal_table.dart |
Updates copyright. |
rohd_devtools_extension/lib/rohd_devtools/services/vm_service_signal_value_source.dart |
Renames evaluated JSON accessors. |
rohd_devtools_extension/lib/rohd_devtools/services/tree_service.dart |
Updates hierarchy evaluation. |
pubspec.yaml |
Raises minimum Dart SDK. |
packages/rohd_waveform/lib/src/waveform_repository.dart |
Simplifies asynchronous retrieval. |
packages/rohd_waveform/lib/src/waveform_api.dart |
Simplifies default futures. |
packages/rohd_waveform/analysis_options.yaml |
Adds analyzer exclusions. |
packages/rohd_hierarchy/test/occurrence_trie_test.dart |
Tests occurrence trie. |
packages/rohd_hierarchy/test/hierarchy_model_test.dart |
Adds cross-platform model tests. |
packages/rohd_hierarchy/test/filter_bank_integration_test.dart |
Moves portable tests and restricts VM tests. |
packages/rohd_hierarchy/pubspec.yaml |
Enables package publishing. |
packages/rohd_hierarchy/lib/src/occurrence_trie.dart |
Adds occurrence-address trie. |
packages/rohd_hierarchy/lib/src/hierarchy_models.dart |
Exports occurrence trie. |
packages/rohd_hierarchy/analysis_options.yaml |
Adds analyzer exclusions. |
lib/src/utilities/simcompare.dart |
Migrates synthesis and improves cleanup. |
lib/src/synthesizers/utilities/utilities.dart |
Exports synthesis helpers. |
lib/src/synthesizers/utilities/synth_structure_slice.dart |
Adds structure slice helper. |
lib/src/synthesizers/utilities/synth_structure_layout.dart |
Adds packed structure layout. |
lib/src/synthesizers/utilities/synth_structure_concat.dart |
Adds structure concatenation helper. |
lib/src/synthesizers/utilities/synth_module_stop_policy.dart |
Adds hierarchy stopping policy. |
lib/src/synthesizers/utilities/synth_logic.dart |
Adds nullable selected-name accessor. |
lib/src/synthesizers/utilities/synth_assignment.dart |
Updates copyright. |
lib/src/synthesizers/utilities/synth_array_slice.dart |
Adds array slice helper. |
lib/src/synthesizers/utilities/synth_array_concat.dart |
Adds array concatenation helper. |
lib/src/synthesizers/systemverilog/systemverilog.dart |
Exports SystemVerilog service. |
lib/src/synthesizers/systemverilog/system_verilog_service.dart |
Implements SystemVerilog service. |
lib/src/synthesizers/synthesizers.dart |
Exports netlist APIs. |
lib/src/synthesizers/synthesis_result.dart |
Updates copyright. |
lib/src/synthesizers/netlist/netlist.dart |
Adds netlist barrel export. |
lib/src/synthesizers/netlist/netlist_validation.dart |
Adds structural validation. |
lib/src/synthesizers/netlist/netlist_synthesizer_configuration.dart |
Adds netlist configuration. |
lib/src/synthesizers/netlist/netlist_synthesis_result.dart |
Adds immutable netlist result. |
lib/src/synthesizers/netlist/netlist_synth_module_definition.dart |
Adds netlist-specific module processing. |
lib/src/signals/wire_net.dart |
Updates copyright. |
lib/src/signals/signals.dart |
Includes typed/value array parts. |
lib/src/signals/logic_value_array_of.dart |
Adds typed value arrays. |
lib/src/signals/logic_structure.dart |
Adds flattening and constant detection. |
lib/src/signals/logic_array_of.dart |
Adds typed logic arrays. |
lib/src/signals/const.dart |
Reformats constructors. |
lib/src/modules/conditionals/flop.dart |
Exposes constant reset value. |
lib/src/module.dart |
Adds output convenience APIs. |
lib/src/diagnostics/module_services.dart |
Adds service registry. |
lib/src/diagnostics/module_service.dart |
Adds service and artifact contracts. |
lib/src/diagnostics/inspector_service.dart |
Bridges hierarchy registration. |
lib/src/diagnostics/diagnostics.dart |
Adds diagnostics barrel export. |
lib/src/collections/iterable_removable_queue.dart |
Removes redundant null assertions. |
lib/rohd.dart |
Exports new public APIs. |
example/tree.dart |
Uses SystemVerilog service. |
example/oven_fsm.dart |
Uses waveform service. |
example/logic_array.dart |
Uses service APIs. |
example/fir_filter.dart |
Uses service APIs. |
example/filter_bank/shared_data_bus.dart |
Adds shared bidirectional bus. |
example/filter_bank/mac_unit.dart |
Adds pipelined MAC module. |
example/filter_bank/filter_sample.dart |
Adds structured filter sample. |
example/filter_bank/filter_data_interface.dart |
Adds filter interface. |
example/filter_bank/filter_controller.dart |
Adds filter controller FSM. |
example/filter_bank/filter_bank_modules.dart |
Exports filter-bank modules. |
example/filter_bank/coeff_bank.dart |
Adds coefficient bank. |
example/filter_bank.dart |
Adds filter-bank simulation. |
example/example.dart |
Uses service APIs. |
doc/user_guide/_docs/A21-generation.md |
Documents generation services. |
doc/user_guide/_docs/A20-logic-arrays.md |
Documents typed arrays. |
doc/user_guide/_docs/A19-logic-structures.md |
Documents structure flattening. |
doc/tutorials/chapter_9/rohd_vf.md |
Migrates waveform tutorial. |
doc/tutorials/chapter_9/rohd_vf_example/lib/rohd_vf_example.dart |
Migrates waveform example. |
doc/tutorials/chapter_8/oven_fsm.dart |
Migrates waveform API. |
doc/tutorials/chapter_8/counter_interface.dart |
Migrates service APIs. |
doc/tutorials/chapter_8/carry_save_multiplier.dart |
Migrates waveform API. |
doc/tutorials/chapter_8/answers/exercise_3_pipeline.dart |
Migrates service APIs. |
doc/tutorials/chapter_8/answers/exercise_2_toycapsule_fsm.dart |
Migrates service APIs. |
doc/tutorials/chapter_8/answers/exercise_1_spi.dart |
Migrates service APIs. |
doc/tutorials/chapter_8/03_pipeline.md |
Migrates waveform documentation. |
doc/tutorials/chapter_8/02_finite_state_machine.md |
Migrates waveform documentation. |
doc/tutorials/chapter_8/01_interface.md |
Migrates service documentation. |
doc/tutorials/chapter_7/shift_register.dart |
Migrates waveform API. |
doc/tutorials/chapter_7/answers/exercise_1_d_flip_flop.dart |
Migrates service APIs. |
doc/tutorials/chapter_7/00_sequential_logic.md |
Migrates service documentation. |
doc/tutorials/chapter_5/n_bit_adder.dart |
Updates synthesis example. |
doc/tutorials/chapter_5/answers/n_bit_subtractor.dart |
Migrates synthesis API. |
doc/tutorials/chapter_5/answers/full_subtractor.dart |
Migrates synthesis API. |
doc/tutorials/chapter_5/answers/full_adder.dart |
Migrates synthesis API. |
doc/tutorials/chapter_5/00_basic_modules.md |
Migrates synthesis documentation. |
doc/tutorials/chapter_4/basic_generation_sv.dart |
Migrates synthesis API. |
doc/tutorials/chapter_4/answers/exercise_2_sv.dart |
Migrates synthesis API. |
doc/tutorials/chapter_4/answers/exercise_1_sv.dart |
Migrates synthesis API. |
doc/tutorials/chapter_3/full_adder.dart |
Migrates synthesis API. |
doc/tutorials/chapter_3/answers/exercise_sv.dart |
Migrates synthesis API. |
doc/tutorials/chapter_2/helper.dart |
Migrates synthesis helper. |
doc/tutorials/chapter_1/01_setup_installation.md |
Migrates introductory examples. |
dart_test.yaml |
Configures benchmark timeout. |
CONTRIBUTING.md |
Updates links and copyright template. |
CHANGELOG.md |
Documents next-release APIs. |
benchmark/wave_dump_benchmark.dart |
Migrates waveform benchmark. |
benchmark/many_submodules_benchmark.dart |
Migrates synthesis benchmark. |
.github/workflows/general.yml |
Removes trailing blank line. |
.devcontainer/devcontainer.json |
Adds Node.js 24 feature. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| /// Returns the constant reset value if one was provided, or null if the | ||
| /// reset value is a port or no reset exists. | ||
| LogicValue? get constantResetValue => |
|
On .constantResetValue(): For example, the netlist mapper reads it when converting a if (hasReset && !hasDynamicResetValue) {
parameters['ARST_VALUE'] =
flipFlop.constantResetValue!.toString(includeWidth: false);
}The actual call is in Given: final q = flop(
clk,
d,
reset: reset,
resetValue: 9,
asyncReset: true,
);
For a reset value supplied through a |
c48a1c2 to
061d254
Compare
4811ed8 to
44fc0ed
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
a61c6a0 to
501e5d3
Compare
Description & Motivation
This is a subset of the PR #669 that introduces the new API for Services attached to a module (outputters like wave dumpers, netlisters, translators, tracing services, etc).
Related Issue(s)
None
Testing
This runs a full dart test with the new API in place in the tests.
Backwards-compatibility
No, we retain the old interfaces but they should eventually be deprecated.
WaveDumper
generateSynth
...
Documentation
Some examples have been modified to match.