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.
@@ -0,0 +1,444 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ File: README
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "README";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="file_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index</a> &raquo;
40
+ <span class="title">File: README</span>
41
+
42
+ </div>
43
+
44
+ <div id="search">
45
+
46
+ <a class="full_list_link" id="class_list_link"
47
+ href="class_list.html">
48
+
49
+ <svg width="24" height="24">
50
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
51
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
52
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
53
+ </svg>
54
+ </a>
55
+
56
+ </div>
57
+ <div class="clear"></div>
58
+ </div>
59
+
60
+ <div id="content"><div id='filecontents'><h1 id="rvvm-ruby-vivado-manager">RVvM - Ruby Vivado Manager <a href="https://badge.fury.io/rb/rvvm"><img src="https://badge.fury.io/rb/rvvm.svg" alt="Gem Version"></a></h1>
61
+
62
+ <p>RVvM is a Ruby based meta tool to manage, compile, elaborate and simulate SystemVerilog and UVM based projects using Xilinx Vivado xvlog, xelab, xrun and xsc tools.</p>
63
+
64
+ <h2 id="installation">Installation</h2>
65
+
66
+ <p>Install the gem and add to the application&#39;s Gemfile by executing:</p>
67
+
68
+ <pre class="code bash"><code class="bash">bundle add rvvm
69
+ </code></pre>
70
+
71
+ <p>If bundler is not being used to manage dependencies, install the gem by executing:</p>
72
+
73
+ <pre class="code bash"><code class="bash">gem install rvvm
74
+ </code></pre>
75
+
76
+ <h2 id="requirements">Requirements</h2>
77
+
78
+ <ol>
79
+ <li><a href="https://www.xilinx.com/support/download.html">Vivado Design Suite</a></li>
80
+ <li><strong>Xilinx Vivado</strong> binaries in your <code>PATH</code> and <code>XILINX_PATH</code> env variable pointing to your Vivado install dir or sourced <code>settings64</code> Vivado script</li>
81
+ </ol>
82
+
83
+ <h2 id="usage">Usage</h2>
84
+
85
+ <p>To get full <code>rvvm</code> usage docs use <code>-h</code> or <code>--help</code> option.</p>
86
+
87
+ <h3 id="project-creation">Project creation</h3>
88
+
89
+ <p>Create a new RVvM project using <code>-n</code> or <code>--new</code>.</p>
90
+
91
+ <p>eg.:</p>
92
+
93
+ <pre class="code bash"><code class="bash">rvvm -n best_rtl_project
94
+ </code></pre>
95
+
96
+ <p>Whitespaces in project name and or generated templates are not allowed.</p>
97
+
98
+ <h3 id="project-management">Project management</h3>
99
+
100
+ <p>To manage an <strong>RVvM</strong> project use the <code>rvvm</code> script inside the root of an <strong>RVvM</strong> project or its config directory.</p>
101
+
102
+ <h4 id="project-structure">Project structure</h4>
103
+
104
+ <pre class="code bash"><code class="bash">RvvM_project
105
+ ├── design # SV design sources
106
+ │   ├── itf
107
+ │   ├── pkg
108
+ │   └── src
109
+ ├── rvvm # RVvM project config and output directory
110
+ │   ├── rvvm_project_compile_list.f
111
+ │   ├── dpi_compile_list.f
112
+ │   ├── logs # comp, dpi, elab, sim log dir
113
+ │   │   ├── comp
114
+ │   │   ├── dpi
115
+ │   │   ├── elab
116
+ │   │   └── sim
117
+ │   ├── rvvmconf.json # RVvM project config file
118
+ │   └── wfcfg.tcl
119
+ └── verif # SV verification sources
120
+ ├── env
121
+ │   ├── agents
122
+ │   └── top
123
+ ├── tb
124
+ │   └── src # default UVM testbench top module
125
+ │   └── rvvm_project_tb_top.sv
126
+ └── test
127
+ ├── seq
128
+ └── src
129
+ </code></pre>
130
+
131
+ <h3 id="project-configuration">Project configuration</h3>
132
+
133
+ <p>RVvM project configuration is stored in its config directory in the <code>&lt;project root&gt;/rvvm/rvvmconf.json</code> json file.</p>
134
+
135
+ <p>You can configure the project by editing its config file. Individual settings of the configuration can be owerwritten @ runtime using specific arguments (see <code>-h</code>/<code>--help</code>).</p>
136
+
137
+ <p>The <code>rvvmconf.json</code> configuration consists of:</p>
138
+
139
+ <pre class="code json"><code class="json"># example configuration:
140
+ # .../best_rtl_project/rvvm/rvvmconf.json:
141
+
142
+ {
143
+ &quot;project&quot;: {
144
+ &quot;name&quot;: &quot;best_rtl_project&quot;,
145
+ &quot;path&quot;: &quot;/home/mrbya/mycodes/ruby/rvvm/best_rtl_project&quot;,
146
+ &quot;rvvmDir&quot;: &quot;rvvm&quot;,
147
+ &quot;logDir&quot;: &quot;logs&quot;,
148
+ &quot;company&quot;: &quot; &quot;
149
+ },
150
+
151
+ &quot;compilation&quot;: {
152
+ &quot;list&quot;: &quot;best_rtl_project_compile_list.f&quot;,
153
+ &quot;logDir&quot;: &quot;comp&quot;,
154
+ &quot;log&quot;: &quot;comp.log&quot;,
155
+ &quot;args&quot;: &quot;-L uvm&quot;
156
+ },
157
+
158
+ &quot;dpi&quot;: {
159
+ &quot;dpilib&quot;: 0,
160
+ &quot;list&quot;: &quot;dpi_compile_list.f&quot;,
161
+ &quot;args&quot;: &quot; &quot;
162
+ },
163
+
164
+ &quot;elaboration&quot;: {
165
+ &quot;tbTop&quot;: &quot;best_rtl_project_tb_top&quot;,
166
+ &quot;tb&quot;: &quot;best_rtl_project_tb&quot;,
167
+ &quot;timescale&quot;: &quot;1ns/1ps&quot;,
168
+ &quot;customdpilib&quot;: &quot;&quot;,
169
+ &quot;logDir&quot;: &quot;elab&quot;,
170
+ &quot;log&quot;: &quot;elab.log&quot;,
171
+ &quot;args&quot;: &quot; &quot;
172
+ },
173
+
174
+ &quot;simulation&quot;: {
175
+ &quot;logDir&quot;: &quot;sim&quot;,
176
+ &quot;log&quot;: &quot;${testname}.log&quot;,
177
+ &quot;verbosity&quot;: &quot;LOW&quot;,
178
+ &quot;defTest&quot;: &quot; &quot;,
179
+ &quot;batch&quot;: 0,
180
+ &quot;testlist&quot;: [&quot; &quot;],
181
+ &quot;args&quot;: &quot; &quot;
182
+ }
183
+ }
184
+
185
+ </code></pre>
186
+
187
+ <h4 id="project">Project</h4>
188
+
189
+ <table><thead>
190
+ <tr>
191
+ <th style="text-align: center">Parameter</th>
192
+ <th>Default Value</th>
193
+ <th>Description</th>
194
+ </tr>
195
+ </thead><tbody>
196
+ <tr>
197
+ <td style="text-align: center"><code>name</code></td>
198
+ <td>Name of the project @ creation</td>
199
+ <td>RVvM project name</td>
200
+ </tr>
201
+ <tr>
202
+ <td style="text-align: center"><code>path</code></td>
203
+ <td>Path to the project @ its creation</td>
204
+ <td>Absolute path to the project</td>
205
+ </tr>
206
+ <tr>
207
+ <td style="text-align: center"><code>rvvmDir</code></td>
208
+ <td><code>rvvm</code></td>
209
+ <td>Project config and output directory</td>
210
+ </tr>
211
+ <tr>
212
+ <td style="text-align: center"><code>logDir</code></td>
213
+ <td><code>log</code></td>
214
+ <td>Log output directory root</td>
215
+ </tr>
216
+ <tr>
217
+ <td style="text-align: center"><code>company</code></td>
218
+ <td>empty</td>
219
+ <td>Company name</td>
220
+ </tr>
221
+ </tbody></table>
222
+
223
+ <h4 id="compilation">Compilation</h4>
224
+
225
+ <table><thead>
226
+ <tr>
227
+ <th style="text-align: center">Parameter</th>
228
+ <th>Default Value</th>
229
+ <th>Description</th>
230
+ </tr>
231
+ </thead><tbody>
232
+ <tr>
233
+ <td style="text-align: center"><code>list</code></td>
234
+ <td><code>&lt;project name&gt;_compile_list.f</code></td>
235
+ <td>Path to project HDL source files compile list</td>
236
+ </tr>
237
+ <tr>
238
+ <td style="text-align: center"><code>logDir</code></td>
239
+ <td><code>comp</code></td>
240
+ <td>Subdirectory for <code>xvlog</code> logs inside <code>project: logDir</code></td>
241
+ </tr>
242
+ <tr>
243
+ <td style="text-align: center"><code>log</code></td>
244
+ <td><code>comp.log</code></td>
245
+ <td><code>xvlog</code> log file name</td>
246
+ </tr>
247
+ <tr>
248
+ <td style="text-align: center"><code>args</code></td>
249
+ <td><code>-L uvm</code></td>
250
+ <td>Additional <code>xvlog</code> arguments</td>
251
+ </tr>
252
+ </tbody></table>
253
+
254
+ <h4 id="dpi">DPI</h4>
255
+
256
+ <table><thead>
257
+ <tr>
258
+ <th style="text-align: center">Parameter</th>
259
+ <th>Default value</th>
260
+ <th>Description</th>
261
+ </tr>
262
+ </thead><tbody>
263
+ <tr>
264
+ <td style="text-align: center"><code>dpilib</code></td>
265
+ <td><code>0</code></td>
266
+ <td>Switch activating DPI-C compilation when running <code>--all</code> and dpi library linkage during elaboration</td>
267
+ </tr>
268
+ <tr>
269
+ <td style="text-align: center"><code>list</code></td>
270
+ <td><code>dpi_compile_list.f</code></td>
271
+ <td>Path to DPI-C source files compile list</td>
272
+ </tr>
273
+ <tr>
274
+ <td style="text-align: center"><code>args</code></td>
275
+ <td>empty</td>
276
+ <td>Additional <code>xsc</code> arguments</td>
277
+ </tr>
278
+ </tbody></table>
279
+
280
+ <h4 id="elaboration">Elaboration</h4>
281
+
282
+ <table><thead>
283
+ <tr>
284
+ <th style="text-align: center">Parameter</th>
285
+ <th>Default value</th>
286
+ <th>Description</th>
287
+ </tr>
288
+ </thead><tbody>
289
+ <tr>
290
+ <td style="text-align: center"><code>tbTop</code></td>
291
+ <td><code>&lt;projec name&gt;_tb_top</code></td>
292
+ <td>Testbench top module name</td>
293
+ </tr>
294
+ <tr>
295
+ <td style="text-align: center"><code>tb</code></td>
296
+ <td><code>&lt;project name&gt;_tb</code></td>
297
+ <td>Elaborated testbench snapshot name</td>
298
+ </tr>
299
+ <tr>
300
+ <td style="text-align: center"><code>timescale</code></td>
301
+ <td><code>1ns/1ps</code></td>
302
+ <td>Elaborated testbench timescale</td>
303
+ </tr>
304
+ <tr>
305
+ <td style="text-align: center"><code>customdpilib</code></td>
306
+ <td>empty</td>
307
+ <td>Path to a custom DPI-C library to link into a snapshot during elaboration</td>
308
+ </tr>
309
+ <tr>
310
+ <td style="text-align: center"><code>logDir</code></td>
311
+ <td><code>elab</code></td>
312
+ <td>Subdirectory for <code>xelab</code> logs inside <code>project: logDir</code></td>
313
+ </tr>
314
+ <tr>
315
+ <td style="text-align: center">log</td>
316
+ <td><code>elab.log</code></td>
317
+ <td><code>xelab</code> log file name</td>
318
+ </tr>
319
+ <tr>
320
+ <td style="text-align: center"><code>args</code></td>
321
+ <td>empty</td>
322
+ <td>Additional <code>xelab</code> arguments</td>
323
+ </tr>
324
+ </tbody></table>
325
+
326
+ <h4 id="simulation">Simulation</h4>
327
+
328
+ <table><thead>
329
+ <tr>
330
+ <th style="text-align: center">Parameter</th>
331
+ <th>Default value</th>
332
+ <th>Description</th>
333
+ </tr>
334
+ </thead><tbody>
335
+ <tr>
336
+ <td style="text-align: center"><code>logDir</code></td>
337
+ <td><code>sim</code></td>
338
+ <td>Subdirectory for <code>xsim</code> logs inside <code>project: logDir</code></td>
339
+ </tr>
340
+ <tr>
341
+ <td style="text-align: center"><code>log</code></td>
342
+ <td><code>${testname}.log</code></td>
343
+ <td><code>xsim</code> log file name</td>
344
+ </tr>
345
+ <tr>
346
+ <td style="text-align: center"><code>verbosity</code></td>
347
+ <td><code>LOW</code></td>
348
+ <td>UVM reporting verbosity</td>
349
+ </tr>
350
+ <tr>
351
+ <td style="text-align: center"><code>defTest</code></td>
352
+ <td>empty</td>
353
+ <td>Default UVM test to be run using <code>--run</code></td>
354
+ </tr>
355
+ <tr>
356
+ <td style="text-align: center"><code>batch</code></td>
357
+ <td><code>0</code></td>
358
+ <td>Switch activating batch UVM test simulation: run multiple UVM tests provided in <code>simulation: testlist</code> or using <code>--testlist</code>.</td>
359
+ </tr>
360
+ <tr>
361
+ <td style="text-align: center"><code>testlist</code></td>
362
+ <td>empty array</td>
363
+ <td>Provide an array of UVM test names to run during a batch simulation.</td>
364
+ </tr>
365
+ <tr>
366
+ <td style="text-align: center"><code>args</code></td>
367
+ <td>empty</td>
368
+ <td>Additional <code>xsim</code> arguments</td>
369
+ </tr>
370
+ </tbody></table>
371
+
372
+ <h3 id="tmplate-file-generation">Tmplate file generation</h3>
373
+
374
+ <p>RVvM can generate SystemVerilog module, interface, package and generic template files to ease your SV project development.</p>
375
+
376
+ <p>To generate module templates use:</p>
377
+
378
+ <ul>
379
+ <li><code>-m --module &lt;NAME&gt;</code> - to generate a SV module template</li>
380
+ <li><code>-i --itf &lt;NAME&gt;</code> - to generate a SV interface template</li>
381
+ <li><code>-p --pkg &lt;NAME&gt;</code> - to generate a SV package template</li>
382
+ <li><code>--svfile &lt;NAME&gt;</code> - to generate a generic SV file template</li>
383
+ </ul>
384
+
385
+ <p>Default paths for template file generations are:</p>
386
+
387
+ <pre class="code bash"><code class="bash">RVvM project root
388
+ └── design
389
+ ├── itf # for SV interfaces
390
+ ├── pkg # for SV packages
391
+ └── src # for SV modules and generic SV files
392
+ </code></pre>
393
+
394
+ <p>You can modify generated template path using <code>--path &lt;PATH&gt;</code> (excluding template file name) or <code>--here</code>.</p>
395
+
396
+ <h3 id="using-xilinx-vivado-tools">Using Xilinx Vivado tools</h3>
397
+
398
+ <p>To compile/elaborate/simulate,... yout RVvM project use the <code>rvvm</code> script from inside an RVvM project root or its config directory.</p>
399
+
400
+ <ul>
401
+ <li><code>-c --comp</code> - to compile HDL sources</li>
402
+ <li><code>-d --dpi</code> - to compile C/C++ DPI-C library sources</li>
403
+ <li><code>-e --elab</code> - to elaborate project testbench into a snapshot</li>
404
+ <li><code>-r --run</code> - to run UVM test simulation (use <code>-b --batch</code> to run a batch of simulations)</li>
405
+ <li><code>-a --all</code> - to run <code>--comp</code>, <code>--dpi</code> (when configured), <code>--elab</code>, <code>--run</code></li>
406
+ <li><code>--runsv</code> - to run pure SV/V simulation</li>
407
+ </ul>
408
+
409
+ <p>Use <code>-w --wave</code> to dump signal waveforms</p>
410
+
411
+ <ul>
412
+ <li><code>-u --gui</code> - to open dumped waveforms in Vivado GUI</li>
413
+ <li><code>-g --gencov</code> - to generate UVM test functional coverage report</li>
414
+ <li><code>--covreport</code> - to open coverage report dashboard</li>
415
+ </ul>
416
+
417
+ <h2 id="development">Development</h2>
418
+
419
+ <p>After checking out the repo, run <code>bin/setup</code> to install dependencies. Then, run <code>rake test</code> to run the tests. You can also run <code>bin/console</code> for an interactive prompt that will allow you to experiment.</p>
420
+
421
+ <p>To install this gem onto your local machine, run <code>bundle exec rake install</code>. To release a new version, update the version number in <code>version.rb</code>, and then run <code>bundle exec rake release</code>, which will create a git tag for the version, push git commits and the created tag, and push the <code>.gem</code> file to <a href="https://rubygems.org">rubygems.org</a>.</p>
422
+
423
+ <h2 id="contributing">Contributing</h2>
424
+
425
+ <p>Bug reports and pull requests are welcome on GitHub at <a href="https://gitlab.com/such-hdl-much-wow/rvvm">https://gitlab.com/such-hdl-much-wow/rvvm</a>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the <a href="https://gitlab.com/such-hdl-much-wow/rvvm/-/blob/master/CODE_OF_CONDUCT.md?ref_type=heads">code of conduct</a>.</p>
426
+
427
+ <h2 id="license">License</h2>
428
+
429
+ <p>The gem is available as open source under the terms of the <a href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
430
+
431
+ <h2 id="code-of-conduct">Code of Conduct</h2>
432
+
433
+ <p>Everyone interacting in the RVvM project&#39;s codebases, issue trackers, chat rooms and mailing lists is expected to follow the <a href="https://gitlab.com/such-hdl-much-wow/rvvm/-/blob/master/CODE_OF_CONDUCT.md?ref_type=heads">code of conduct</a>.</p>
434
+ </div></div>
435
+
436
+ <div id="footer">
437
+ Generated on Thu Sep 19 20:26:42 2024 by
438
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
439
+ 0.9.37 (ruby-3.2.5).
440
+ </div>
441
+
442
+ </div>
443
+ </body>
444
+ </html>
@@ -0,0 +1,59 @@
1
+ <!DOCTYPE html>
2
+ <html >
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
+ <meta charset="utf-8" />
6
+
7
+ <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" />
8
+
9
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" />
10
+
11
+
12
+
13
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
+
17
+
18
+ <title>File List</title>
19
+ <base id="base_target" target="_parent" />
20
+ </head>
21
+ <body>
22
+ <div id="content">
23
+ <div class="fixed_header">
24
+ <h1 id="full_list_header">File List</h1>
25
+ <div id="full_list_nav">
26
+
27
+ <span><a target="_self" href="class_list.html">
28
+ Classes
29
+ </a></span>
30
+
31
+ <span><a target="_self" href="method_list.html">
32
+ Methods
33
+ </a></span>
34
+
35
+ <span><a target="_self" href="file_list.html">
36
+ Files
37
+ </a></span>
38
+
39
+ </div>
40
+
41
+ <div id="search">
42
+ <label for="search-class">Search:</label>
43
+ <input id="search-class" type="text" />
44
+ </div>
45
+ </div>
46
+
47
+ <ul id="full_list" class="file">
48
+
49
+
50
+ <li id="object_README" class="odd">
51
+ <div class="item"><span class="object_link"><a href="index.html" title="README">README</a></span></div>
52
+ </li>
53
+
54
+
55
+
56
+ </ul>
57
+ </div>
58
+ </body>
59
+ </html>
data/doc/frames.html ADDED
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Documentation by YARD 0.9.37</title>
6
+ </head>
7
+ <script type="text/javascript">
8
+ var mainUrl = 'index.html';
9
+ try {
10
+ var match = decodeURIComponent(window.location.hash).match(/^#!(.+)/);
11
+ var name = match ? match[1] : mainUrl;
12
+ var url = new URL(name, location.href);
13
+ window.top.location.replace(url.origin === location.origin ? name : mainUrl);
14
+ } catch (e) {
15
+ window.top.location.replace(mainUrl);
16
+ }
17
+ </script>
18
+ <noscript>
19
+ <h1>Oops!</h1>
20
+ <h2>YARD requires JavaScript!</h2>
21
+ </noscript>
22
+ </html>