rvvm 1.1.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: 420096b77b4d823c6ad6a69509ffe6da56d4a63cf96152cd7d36a5ea41ab063a
4
- data.tar.gz: 28b2c65e701d7f2bdfdb3b7bac2d0d7a9f62db9877d912d18eaa9a8e8d9aac78
3
+ metadata.gz: 9f28c26f52cac0664fe55cdf731ca46c6ac1bd108c26ffb5a57c4d700564ce81
4
+ data.tar.gz: 202a410476e45a546059a56aff5b2da36b867c7aae43682e098ec0a1b48cae97
5
5
  SHA512:
6
- metadata.gz: b2cb584479a4fde2453c4d4830403db857d2dc197840dc44dd2b9b932881e111abea00fbad1ba52e7c2e01e4865b66911f12eef5110bdadb695a468df293aeb8
7
- data.tar.gz: eea11a1a5f36f0a20d796dd87e165f7618b022c8062c81b0eb45122644a5291adcbd475973df785008bc3e43be866b3b78830bcb3c666636b17a03b138cde830
6
+ metadata.gz: 1d8e925f7d59239bb85e1a81e6a4b28cc7cc92205f2ac04f605b20cec2b0c129a822fbe2c626a615eb4201357bb92ad094f7cf8b3b6159ce0b40bb00c9224a2c
7
+ data.tar.gz: ee81fb9a3d0144c1bfc1f5820d1dfbc73aec4623abfb900bfecdd4cd22db6549f3bcea3d5fc37c711e2f1056a621958e48283cafb16f1a4dfcafcb019db858b4
data/CHANGELOG.md CHANGED
@@ -156,7 +156,6 @@
156
156
  ## TBI:
157
157
 
158
158
  1. Elaboration and simulation custom waveform trace dump file
159
- 2. Project template files regeneration/restoration to default
160
159
  3. Crayon module tests
161
160
  4. RBS definitions
162
161
 
@@ -171,3 +170,42 @@
171
170
  ### Fixed:
172
171
 
173
172
  1. More Crayons rendering bugs
173
+
174
+ ## [1.2.0] - 2024-09-19
175
+
176
+ ### Added:
177
+
178
+ 1. Cyayons.command exception handling
179
+ 2. Flags for itf, pkg and svfile template generation
180
+ 3. Custom DPI-C library for elaboration
181
+
182
+ ### Fixed
183
+
184
+ 1. More rendering bugs
185
+ 2. Package template not being generated under <prj root>/design/pkg by default
186
+ 3. DPI-C compilation using invalid command
187
+ 4. Script crash on trying to execute a missing shell command
188
+ 5. Script crashing on trying to open non existent coverage report
189
+
190
+ ### TBI
191
+
192
+ 1. Custom waveform dump file name for elaboration and simulation
193
+ 2. RVvM config file versions and regeneration
194
+ 3. Exit on failing compilation/elaboration/simulation
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]