HDLRuby 3.4.0 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HDLRuby.gemspec +1 -0
- data/README.md +14 -6
- data/lib/HDLRuby/hdr_samples/hard_to_route.rb +30 -0
- data/lib/HDLRuby/hdr_samples/with_generic_in_generic.rb +31 -0
- data/lib/HDLRuby/hdr_samples/with_seq_case.rb +28 -0
- data/lib/HDLRuby/hdr_samples/with_seq_if.rb +25 -0
- data/lib/HDLRuby/hdr_samples/with_seq_if_succ.rb +27 -0
- data/lib/HDLRuby/hdr_samples/with_verilog.rb +1 -1
- data/lib/HDLRuby/hdrcc.rb +84 -27
- data/lib/HDLRuby/hruby_bstr.rb +2 -2
- data/lib/HDLRuby/hruby_high.rb +40 -11
- data/lib/HDLRuby/hruby_low.rb +4 -0
- data/lib/HDLRuby/hruby_viz.rb +5060 -0
- data/lib/HDLRuby/std/sequencer.rb +28 -13
- data/lib/HDLRuby/version.rb +1 -1
- data/tuto/tutorial_sw.html +2772 -4079
- data/tuto/tutorial_sw.md +16 -3
- metadata +9 -6
data/tuto/tutorial_sw.md
CHANGED
@@ -48,7 +48,7 @@ To use HDLRuby the following software is required:
|
|
48
48
|
|
49
49
|
The following software is also recommended:
|
50
50
|
|
51
|
-
* A wave viewer supporting *vcd* files (e.g., [GTKWave](https://gtkwave.sourceforge.net/).)
|
51
|
+
* A wave viewer supporting *vcd* files (e.g., [GTKWave](https://gtkwave.sourceforge.net/), or, [HTMLWave](https://civol.github.io/htmlwave/htmlwave.html))
|
52
52
|
|
53
53
|
## 1. What is HDLRuby and how to use its framework
|
54
54
|
|
@@ -131,10 +131,10 @@ Up to now, we said that HDLRuby is a language, it is in truth a complete framewo
|
|
131
131
|
Basically, `hdrcc` is used as follows:
|
132
132
|
|
133
133
|
```bash
|
134
|
-
hdrcc <options> <input file> <output directory>
|
134
|
+
hdrcc <options> <input file> <output/working directory>
|
135
135
|
```
|
136
136
|
|
137
|
-
Where `options` specifies the action to be performed, `input file` specifies the input HDLRuby file, and `output directory` specifies the directory where the command results will be saved. As a general rule, when an input file is specified, an output directory must also be specified.
|
137
|
+
Where `options` specifies the action to be performed, `input file` specifies the input HDLRuby file, and `output/working directory` specifies the directory where the command results will be saved. As a general rule, when an input file is specified, an output directory must also be specified.
|
138
138
|
|
139
139
|
Several actions are possible using `hdrcc`, the main ones being the following:
|
140
140
|
|
@@ -144,6 +144,11 @@ Several actions are possible using `hdrcc`, the main ones being the following:
|
|
144
144
|
hdrcc --sim <input file> <output directory>
|
145
145
|
```
|
146
146
|
|
147
|
+
* Generate a graphical representation of the RTL code in SVG format:
|
148
|
+
|
149
|
+
```bash
|
150
|
+
hdrcc --svg <input file> <output directory>
|
151
|
+
|
147
152
|
* Generate the equivalent Verilog HDL code:
|
148
153
|
|
149
154
|
```bash
|
@@ -171,6 +176,14 @@ For example, assuming that you have a Verilog ddHDL named 'adder.v' describing a
|
|
171
176
|
v2hdr adder.v adder.rb
|
172
177
|
```
|
173
178
|
|
179
|
+
It is also possible to directly use a Verilog file as input to 'hdrcc', but its top module must be specified. For example, to directly simulate the previous 'adder.v', and assuming its top module is 'adder' you can do as follows:
|
180
|
+
|
181
|
+
```bash
|
182
|
+
hdrcc --sim -t adder adder.v adder
|
183
|
+
```
|
184
|
+
|
185
|
+
__Note__: for the command above, it is assumed that 'adder.v' contains a simulation benchmark.
|
186
|
+
|
174
187
|
|
175
188
|
And that's it! For details about all the actions that can be performed, how to write an input file, and what kind of output can be produced, let us see the remaining of the tutorial.
|
176
189
|
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: HDLRuby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lovic Gauthier
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date: 2024-
|
10
|
+
date: 2024-12-23 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: bundler
|
@@ -131,6 +130,7 @@ files:
|
|
131
130
|
- lib/HDLRuby/hdr_samples/dff_properties.rb
|
132
131
|
- lib/HDLRuby/hdr_samples/dff_unit.rb
|
133
132
|
- lib/HDLRuby/hdr_samples/enum_as_param.rb
|
133
|
+
- lib/HDLRuby/hdr_samples/hard_to_route.rb
|
134
134
|
- lib/HDLRuby/hdr_samples/huge_rom.rb
|
135
135
|
- lib/HDLRuby/hdr_samples/if_bench.rb
|
136
136
|
- lib/HDLRuby/hdr_samples/include.rb
|
@@ -210,6 +210,7 @@ files:
|
|
210
210
|
- lib/HDLRuby/hdr_samples/with_fixpoint_adv.rb
|
211
211
|
- lib/HDLRuby/hdr_samples/with_fsm.rb
|
212
212
|
- lib/HDLRuby/hdr_samples/with_function_generator.rb
|
213
|
+
- lib/HDLRuby/hdr_samples/with_generic_in_generic.rb
|
213
214
|
- lib/HDLRuby/hdr_samples/with_handshake.rb
|
214
215
|
- lib/HDLRuby/hdr_samples/with_init.rb
|
215
216
|
- lib/HDLRuby/hdr_samples/with_instance.rb
|
@@ -231,6 +232,9 @@ files:
|
|
231
232
|
- lib/HDLRuby/hdr_samples/with_reduce.rb
|
232
233
|
- lib/HDLRuby/hdr_samples/with_ref_array.rb
|
233
234
|
- lib/HDLRuby/hdr_samples/with_ref_expr.rb
|
235
|
+
- lib/HDLRuby/hdr_samples/with_seq_case.rb
|
236
|
+
- lib/HDLRuby/hdr_samples/with_seq_if.rb
|
237
|
+
- lib/HDLRuby/hdr_samples/with_seq_if_succ.rb
|
234
238
|
- lib/HDLRuby/hdr_samples/with_sequencer.rb
|
235
239
|
- lib/HDLRuby/hdr_samples/with_sequencer_channel.rb
|
236
240
|
- lib/HDLRuby/hdr_samples/with_sequencer_deep.rb
|
@@ -348,6 +352,7 @@ files:
|
|
348
352
|
- lib/HDLRuby/hruby_values.rb
|
349
353
|
- lib/HDLRuby/hruby_verilog.rb
|
350
354
|
- lib/HDLRuby/hruby_verilog_name.rb
|
355
|
+
- lib/HDLRuby/hruby_viz.rb
|
351
356
|
- lib/HDLRuby/low_samples/adder.yaml
|
352
357
|
- lib/HDLRuby/low_samples/after.yaml
|
353
358
|
- lib/HDLRuby/low_samples/before.yaml
|
@@ -468,7 +473,6 @@ homepage: https://github.com/civol/HDLRuby
|
|
468
473
|
licenses:
|
469
474
|
- MIT
|
470
475
|
metadata: {}
|
471
|
-
post_install_message:
|
472
476
|
rdoc_options: []
|
473
477
|
require_paths:
|
474
478
|
- lib
|
@@ -484,8 +488,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
484
488
|
- !ruby/object:Gem::Version
|
485
489
|
version: '0'
|
486
490
|
requirements: []
|
487
|
-
rubygems_version: 3.
|
488
|
-
signing_key:
|
491
|
+
rubygems_version: 3.6.0
|
489
492
|
specification_version: 4
|
490
493
|
summary: HDLRuby is a library for describing and simulating digital electronic systems.
|
491
494
|
test_files: []
|