rvvm 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdb2b96ce09d030dc59c5bc426673d5208aaba4ce8aa4b097179d62cdaa2dc17
4
- data.tar.gz: 37576dcfb35c64353383518a8c8ef496e4930a76acd2f3ba3bcfb3dcb45e4a1a
3
+ metadata.gz: 9f28c26f52cac0664fe55cdf731ca46c6ac1bd108c26ffb5a57c4d700564ce81
4
+ data.tar.gz: 202a410476e45a546059a56aff5b2da36b867c7aae43682e098ec0a1b48cae97
5
5
  SHA512:
6
- metadata.gz: af7c4f03fd70b8eca2f5da78d0e02d67d777aa04d95b166c07f7fe625ba46ae053141e4e7664d352fc2e02c95c11a30ba3501a87cfcbaa00f8ba7bd51dcee1aa
7
- data.tar.gz: b0c520fae9157b3d6a20593b0d3ed44baff1c967d734ebe6e1012c58fca1d71c63a218550f64a88aed8232d75bb49cb41b70c58b1967b30fc38a1a73fa5799c7
6
+ metadata.gz: 1d8e925f7d59239bb85e1a81e6a4b28cc7cc92205f2ac04f605b20cec2b0c129a822fbe2c626a615eb4201357bb92ad094f7cf8b3b6159ce0b40bb00c9224a2c
7
+ data.tar.gz: ee81fb9a3d0144c1bfc1f5820d1dfbc73aec4623abfb900bfecdd4cd22db6549f3bcea3d5fc37c711e2f1056a621958e48283cafb16f1a4dfcafcb019db858b4
data/CHANGELOG.md CHANGED
@@ -193,3 +193,19 @@
193
193
  2. RVvM config file versions and regeneration
194
194
  3. Exit on failing compilation/elaboration/simulation
195
195
 
196
+ ## [1.2.2] - 2024-09-19
197
+
198
+ ### Added:
199
+
200
+ 1. Script exit on failing compilation/elaboration/simulation/...
201
+ 2. Option to ignore shell command errors
202
+ 3. Docs
203
+
204
+ ### Fixed:
205
+
206
+ 1. Syntax errors in RBS files
207
+
208
+ ### TBI
209
+
210
+ 1. Custom waveform dump file name generated by simulation
211
+ 2. RVvM config file version and regeneration
data/README.md CHANGED
@@ -16,24 +16,33 @@ If bundler is not being used to manage dependencies, install the gem by executin
16
16
  gem install rvvm
17
17
  ```
18
18
 
19
+ ## Requirements
20
+
21
+ 1. [Vivado Design Suite](https://www.xilinx.com/support/download.html)
22
+ 2. **Xilinx Vivado** binaries in your `PATH` and `XILINX_PATH` env variable pointing to your Vivado install dir or sourced `settings64` Vivado script
23
+
19
24
  ## Usage
20
25
 
21
- ### Project management
26
+ To get full `rvvm` usage docs use `-h` or `--help` option.
27
+
28
+ ### Project creation
22
29
 
23
30
  Create a new RVvM project using `-n` or `--new`.
24
31
 
25
32
  eg.:
26
- ```
33
+ ```bash
27
34
  rvvm -n best_rtl_project
28
35
  ```
29
36
 
30
37
  Whitespaces in project name and or generated templates are not allowed.
31
38
 
32
- To manage an RVvM project use the `rvvm` script from inside an RVvM project root or its config directory.
39
+ ### Project management
40
+
41
+ To manage an **RVvM** project use the `rvvm` script inside the root of an **RVvM** project or its config directory.
33
42
 
34
43
  #### Project structure
35
44
 
36
- ```
45
+ ```bash
37
46
  RvvM_project
38
47
  ├── design # SV design sources
39
48
  │   ├── itf
@@ -61,7 +70,152 @@ RvvM_project
61
70
  └── src
62
71
  ```
63
72
 
64
- To get full `rvvm` usage docs use `-h` or `--help` option.
73
+ ### Project configuration
74
+
75
+ RVvM project configuration is stored in its config directory in the `<project root>/rvvm/rvvmconf.json` json file.
76
+
77
+ You can configure the project by editing its config file. Individual settings of the configuration can be owerwritten @ runtime using specific arguments (see `-h`/`--help`).
78
+
79
+ The `rvvmconf.json` configuration consists of:
80
+
81
+ ```json
82
+ # example configuration:
83
+ # .../best_rtl_project/rvvm/rvvmconf.json:
84
+
85
+ {
86
+ "project": {
87
+ "name": "best_rtl_project",
88
+ "path": "/home/mrbya/mycodes/ruby/rvvm/best_rtl_project",
89
+ "rvvmDir": "rvvm",
90
+ "logDir": "logs",
91
+ "company": " "
92
+ },
93
+
94
+ "compilation": {
95
+ "list": "best_rtl_project_compile_list.f",
96
+ "logDir": "comp",
97
+ "log": "comp.log",
98
+ "args": "-L uvm"
99
+ },
100
+
101
+ "dpi": {
102
+ "dpilib": 0,
103
+ "list": "dpi_compile_list.f",
104
+ "args": " "
105
+ },
106
+
107
+ "elaboration": {
108
+ "tbTop": "best_rtl_project_tb_top",
109
+ "tb": "best_rtl_project_tb",
110
+ "timescale": "1ns/1ps",
111
+ "customdpilib": "",
112
+ "logDir": "elab",
113
+ "log": "elab.log",
114
+ "args": " "
115
+ },
116
+
117
+ "simulation": {
118
+ "logDir": "sim",
119
+ "log": "${testname}.log",
120
+ "verbosity": "LOW",
121
+ "defTest": " ",
122
+ "batch": 0,
123
+ "testlist": [" "],
124
+ "args": " "
125
+ }
126
+ }
127
+
128
+ ```
129
+
130
+ #### Project
131
+
132
+ | Parameter | Default Value | Description |
133
+ | :-------: | ---------------------------------- | ----------------------------------- |
134
+ | `name` | Name of the project @ creation | RVvM project name |
135
+ | `path` | Path to the project @ its creation | Absolute path to the project |
136
+ | `rvvmDir` | `rvvm` | Project config and output directory |
137
+ | `logDir` | `log` | Log output directory root |
138
+ | `company` | empty | Company name |
139
+
140
+ #### Compilation
141
+
142
+ | Parameter | Default Value | Description |
143
+ | :-------: | ------------------------------- | ------------------------------------------------------ |
144
+ | `list` | `<project name>_compile_list.f` | Path to project HDL source files compile list |
145
+ | `logDir` | `comp` | Subdirectory for `xvlog` logs inside `project: logDir` |
146
+ | `log` | `comp.log` | `xvlog` log file name |
147
+ | `args` | `-L uvm` | Additional `xvlog` arguments |
148
+
149
+ #### DPI
150
+
151
+ | Parameter | Default value | Description |
152
+ | :-------: | -------------------- | --------------------------------------------------------------------------------------------------- |
153
+ | `dpilib` | `0` | Switch activating DPI-C compilation when running `--all` and dpi library linkage during elaboration |
154
+ | `list` | `dpi_compile_list.f` | Path to DPI-C source files compile list |
155
+ | `args` | empty | Additional `xsc` arguments |
156
+
157
+ #### Elaboration
158
+
159
+ | Parameter | Default value | Description |
160
+ | :------------: | ---------------------- | ------------------------------------------------------------------------- |
161
+ | `tbTop` | `<projec name>_tb_top` | Testbench top module name |
162
+ | `tb` | `<project name>_tb` | Elaborated testbench snapshot name |
163
+ | `timescale` | `1ns/1ps` | Elaborated testbench timescale |
164
+ | `customdpilib` | empty | Path to a custom DPI-C library to link into a snapshot during elaboration |
165
+ | `logDir` | `elab` | Subdirectory for `xelab` logs inside `project: logDir` |
166
+ | log | `elab.log` | `xelab` log file name |
167
+ | `args` | empty | Additional `xelab` arguments |
168
+
169
+ #### Simulation
170
+
171
+ | Parameter | Default value | Description |
172
+ | :---------: | ----------------- | ----------------------------------------------------------------------------------------------------------------------------- |
173
+ | `logDir` | `sim` | Subdirectory for `xsim` logs inside `project: logDir` |
174
+ | `log` | `${testname}.log` | `xsim` log file name |
175
+ | `verbosity` | `LOW` | UVM reporting verbosity |
176
+ | `defTest` | empty | Default UVM test to be run using `--run` |
177
+ | `batch` | `0` | Switch activating batch UVM test simulation: run multiple UVM tests provided in `simulation: testlist` or using `--testlist`. |
178
+ | `testlist` | empty array | Provide an array of UVM test names to run during a batch simulation. |
179
+ | `args` | empty | Additional `xsim` arguments |
180
+ ### Tmplate file generation
181
+
182
+ RVvM can generate SystemVerilog module, interface, package and generic template files to ease your SV project development.
183
+
184
+ To generate module templates use:
185
+
186
+ - `-m --module <NAME>` - to generate a SV module template
187
+ - `-i --itf <NAME>` - to generate a SV interface template
188
+ - `-p --pkg <NAME>` - to generate a SV package template
189
+ - `--svfile <NAME>` - to generate a generic SV file template
190
+
191
+ Default paths for template file generations are:
192
+
193
+ ```bash
194
+ RVvM project root
195
+ └── design
196
+ ├── itf # for SV interfaces
197
+ ├── pkg # for SV packages
198
+ └── src # for SV modules and generic SV files
199
+ ```
200
+
201
+ You can modify generated template path using `--path <PATH>` (excluding template file name) or `--here`.
202
+
203
+ ### Using Xilinx Vivado tools
204
+
205
+ To compile/elaborate/simulate,... yout RVvM project use the `rvvm` script from inside an RVvM project root or its config directory.
206
+
207
+ - `-c --comp` - to compile HDL sources
208
+ - `-d --dpi` - to compile C/C++ DPI-C library sources
209
+ - `-e --elab` - to elaborate project testbench into a snapshot
210
+ - `-r --run` - to run UVM test simulation (use `-b --batch` to run a batch of simulations)
211
+ - `-a --all` - to run `--comp`, `--dpi` (when configured), `--elab`, `--run`
212
+ - `--runsv` - to run pure SV/V simulation
213
+
214
+ Use `-w --wave` to dump signal waveforms
215
+
216
+ - `-u --gui` - to open dumped waveforms in Vivado GUI
217
+ - `-g --gencov` - to generate UVM test functional coverage report
218
+ - `--covreport` - to open coverage report dashboard
65
219
 
66
220
  ## Development
67
221
 
data/Rakefile CHANGED
@@ -4,9 +4,3 @@ require "bundler/gem_tasks"
4
4
  require "minitest/test_task"
5
5
 
6
6
  Minitest::TestTask.create
7
-
8
- # require "rubocop/rake_task"
9
- #
10
- # RuboCop::RakeTask.new
11
- #
12
- # task default: %i[test rubocop]