You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ROHD (pronounced like "road") is a framework for describing and verifying hardware in the Dart programming language.
15
14
@@ -45,7 +44,7 @@ You can also open this repository in a GitHub Codespace to run the example in yo
45
44
-**Simple and fast build**, free of complex build systems and EDA vendor tools
46
45
- Can use the excellent pub.dev **package manager** and all the packages it has to offer
47
46
- Built-in event-based **fast simulator** with **4-value** (0, 1, X, and Z) support and a **waveform dumper** to .vcd file format
48
-
- Conversion of modules to equivalent, human-readable, structurally similar **SystemVerilog** for integration or downstream tool consumption
47
+
- Conversion of modules to equivalent, human-readable, structurally similar **SystemVerilog**and **SystemC**for integration or downstream tool consumption
49
48
-**Run-time dynamic** module port definitions (numbers, names, widths, etc.) and internal module logic, including recursive module contents
50
49
- Leverage the [ROHD Hardware Component Library (ROHD-HCL)](https://github.com/intel/rohd-hcl) with reusable and configurable design and verification components.
51
50
- Simple, free, **open source tool stack** without any headaches from library dependencies, file ordering, elaboration/analysis options, +defines, etc.
@@ -69,5 +68,6 @@ One of ROHD's goals is to help grow an open-source community around reusable har
69
68
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).
Copy file name to clipboardExpand all lines: doc/architecture.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ The `Simulator` acts as a statically accessible driver of the overall simulation
24
24
25
25
### Synthesizer
26
26
27
-
A separate type of object responsible for taking a `Module` and converting it to some output, such as SystemVerilog.
27
+
A separate type of object responsible for taking a `Module` and converting it to some output, such as SystemVerilog or SystemC.
28
28
29
29
## Organization
30
30
@@ -44,7 +44,7 @@ Contains a collection of `Module` implementations that can be used as primitive
44
44
45
45
### Synthesizers
46
46
47
-
Contains logic for synthesizing `Module`s into some output. It is structured to maximize reusability across different output types (including those not yet supported).
47
+
Contains logic for synthesizing `Module`s into some output (e.g. SystemVerilog, SystemC). It is structured to maximize reusability across different output types.
Copy file name to clipboardExpand all lines: doc/user_guide/_docs/A21-generation.md
+21-1Lines changed: 21 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ last_modified_at: 2023-11-13
5
5
toc: true
6
6
---
7
7
8
-
Hardware in ROHD is convertible to an output format via `Synthesizer`s, the most popular of which is SystemVerilog. Hardware in ROHD can be converted to logically equivalent, human-readable SystemVerilog with structure, hierarchy, ports, and names maintained.
8
+
Hardware in ROHD is convertible to an output format via `Synthesizer`s. The most popular output format is SystemVerilog, with SystemC also available. Hardware in ROHD can be converted to logically equivalent, human-readable SystemVerilog or SystemC with structure, hierarchy, ports, and names maintained.
9
9
10
10
The simplest way to generate SystemVerilog is with the helper method `generateSynth` in `Module`:
11
11
@@ -28,6 +28,26 @@ void main() async {
28
28
29
29
The `generateSynth` function will return a `String` with the SystemVerilog `module` definitions for the top-level it is called on, as well as any sub-modules (recursively). You can dump the entire contents to a file and use it anywhere you would any other SystemVerilog.
30
30
31
+
## SystemC generation
32
+
33
+
ROHD can also generate SystemC (C++ with the SystemC library) from the same hardware description. Use the `generateSystemC` helper method:
The generated SystemC uses `SC_MODULE`, `SC_METHOD`, and `SC_CTHREAD` constructs. Combinational logic becomes `SC_METHOD` processes, sequential logic (flip-flops and `Sequential` blocks) sharing the same clock and reset are consolidated into a single `SC_CTHREAD`, and sub-modules are instantiated with port bindings. All signal types map to SystemC equivalents (`bool`, `sc_uint<N>`, `sc_biguint<N>`).
48
+
49
+
For more control over SystemC generation, use `SynthBuilder` with `SystemCSynthesizer()` directly.
Copy file name to clipboardExpand all lines: doc/user_guide/_get-started/01-overview.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ Features of ROHD include:
19
19
-**Simple and fast build**, free of complex build systems and EDA vendor tools
20
20
- Can use the excellent pub.dev **package manager** and all the packages it has to offer
21
21
- Built-in event-based **fast simulator** with **4-value** (0, 1, X, and Z) support and a **waveform dumper** to .vcd file format
22
-
- Conversion of modules to equivalent, human-readable, structurally similar **SystemVerilog** for integration or downstream tool consumption
22
+
- Conversion of modules to equivalent, human-readable, structurally similar **SystemVerilog**and **SystemC**for integration or downstream tool consumption
23
23
-**Run-time dynamic** module port definitions (numbers, names, widths, etc.) and internal module logic, including recursive module contents
24
24
- Leverage the [ROHD Hardware Component Library (ROHD-HCL)](https://github.com/intel/rohd-hcl) with reusable and configurable design and verification components.
25
25
- Simple, free, **open source tool stack** without any headaches from library dependencies, file ordering, elaboration/analysis options, +defines, etc.
0 commit comments