ruby-vpi 18.0.0 → 18.0.1
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.
- data/bin/generate.rb +1 -1
- data/doc/common.inc +7 -6
- data/doc/history.html +76 -40
- data/doc/history.inc +14 -1
- data/doc/history.yaml +21 -0
- data/doc/intro.inc +11 -1
- data/doc/lib/doc_format.rb +1 -1
- data/doc/manual.html +181 -147
- data/doc/memo.html +4 -4
- data/doc/readme.html +61 -27
- data/doc/rss.xml +30 -25
- data/ext/extconf.rb +1 -1
- data/lib/ruby-vpi/erb.rb +1 -1
- data/lib/ruby-vpi/float.rb +1 -1
- data/lib/ruby-vpi/integer.rb +1 -1
- data/lib/ruby-vpi/rake.rb +1 -1
- data/lib/ruby-vpi/rcov.rb +1 -1
- data/lib/ruby-vpi/runner.rb +5 -4
- data/lib/ruby-vpi/runner_boot_loader.rb +9 -1
- data/lib/ruby-vpi/runner_proxy.rb +1 -1
- data/lib/ruby-vpi/util.rb +9 -3
- data/lib/ruby-vpi/verilog_parser.rb +1 -1
- data/lib/ruby-vpi/vpi.rb +4 -4
- data/lib/ruby-vpi.rb +1 -1
- data/ref/c/annotated.html +1 -1
- data/ref/c/common_8h.html +1 -1
- data/ref/c/files.html +1 -1
- data/ref/c/functions.html +1 -1
- data/ref/c/functions_vars.html +1 -1
- data/ref/c/globals.html +1 -1
- data/ref/c/globals_0x63.html +1 -1
- data/ref/c/globals_0x65.html +1 -1
- data/ref/c/globals_0x66.html +1 -1
- data/ref/c/globals_0x6d.html +1 -1
- data/ref/c/globals_0x70.html +1 -1
- data/ref/c/globals_0x72.html +1 -1
- data/ref/c/globals_0x73.html +1 -1
- data/ref/c/globals_0x74.html +1 -1
- data/ref/c/globals_0x76.html +1 -1
- data/ref/c/globals_0x78.html +1 -1
- data/ref/c/globals_defs.html +1 -1
- data/ref/c/globals_defs_0x65.html +1 -1
- data/ref/c/globals_defs_0x70.html +1 -1
- data/ref/c/globals_defs_0x76.html +1 -1
- data/ref/c/globals_defs_0x78.html +1 -1
- data/ref/c/globals_enum.html +1 -1
- data/ref/c/globals_eval.html +1 -1
- data/ref/c/globals_func.html +1 -1
- data/ref/c/globals_type.html +1 -1
- data/ref/c/globals_vars.html +1 -1
- data/ref/c/index.html +1 -1
- data/ref/c/main_8c.html +1 -1
- data/ref/c/main_8h.html +1 -1
- data/ref/c/relay_8c.html +1 -1
- data/ref/c/relay_8h.html +1 -1
- data/ref/c/structt__cb__data.html +1 -1
- data/ref/c/structt__vpi__delay.html +1 -1
- data/ref/c/structt__vpi__error__info.html +1 -1
- data/ref/c/structt__vpi__strengthval.html +1 -1
- data/ref/c/structt__vpi__systf__data.html +1 -1
- data/ref/c/structt__vpi__time.html +1 -1
- data/ref/c/structt__vpi__value.html +1 -1
- data/ref/c/structt__vpi__vecval.html +1 -1
- data/ref/c/structt__vpi__vlog__info.html +1 -1
- data/ref/c/verilog_8h.html +1 -1
- data/ref/c/vlog_8c.html +1 -1
- data/ref/c/vlog_8h.html +1 -1
- data/ref/c/vpi__user_8h.html +1 -1
- data/ref/ruby/classes/String.html +5 -2
- data/ref/ruby/classes/String.src/M000024.html +4 -4
- data/ref/ruby/classes/String.src/M000025.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000047.html +2 -2
- data/ref/ruby/classes/Vpi.src/M000030.html +1 -1
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/generate_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000001.html +3 -3
- data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000002.html +4 -4
- data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/util_rb.html +7 -1
- data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
- data/samp/pipelined_alu/Hw5UnitModel.rb +0 -4
- data/samp/pipelined_alu/TestHw5UnitModel.rb +0 -4
- data/samp/pipelined_alu/hw5_unit.v +0 -5
- metadata +4 -4
data/doc/manual.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="stylesheet" type="text/css" href="common.css" media="screen" />
|
|
6
6
|
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
|
|
7
7
|
<link rel="alternate" type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml" title="RSS feed for this project." />
|
|
8
|
-
<title>Ruby-VPI 18.0.
|
|
8
|
+
<title>Ruby-VPI 18.0.1 user manual</title>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="site-links">
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
<div id="body">
|
|
24
24
|
<hr style="display: none"/>
|
|
25
25
|
|
|
26
|
-
<div id="Ruby-VPI_18.0.
|
|
27
|
-
<h1 class="title"><big>Ruby-VPI 18.0.
|
|
26
|
+
<div id="Ruby-VPI_18.0.1_user_manual" class="front_cover">
|
|
27
|
+
<h1 class="title"><big>Ruby-VPI 18.0.1 user manual</big></h1>
|
|
28
28
|
|
|
29
29
|
<h2 class="author">Suraj N. Kurapati</h2>
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
<h3 class="date">
|
|
32
|
+
<h3 class="date">02 August 2007</h3>
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
<p>
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<p>In addition, this manual is distributed as one big HTML file so that you can easily search for a particular topic using nothing more than your web browser’s built-in text search mechanism. This facilitates offline reading, where an Internet search engine is not available.</p>
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
<p>You can give feedback about this manual and, in general, any aspect of the Ruby-VPI project on the <a href="http://rubyforge.org/forum
|
|
47
|
+
<p>You can give feedback about this manual and, in general, any aspect of the Ruby-VPI project on the <a href="http://ruby-vpi.rubyforge.org/forum/">project forums</a>. Furthermore, you can <a href="#hacking.manual">edit this manual</a> and contribute your improvements to the <a href="http://ruby-vpi.rubyforge.org/tracker/">project patches</a>. Finally, you can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org/">Ruby-VPI project website</a>.</p>
|
|
48
48
|
</div>
|
|
49
49
|
|
|
50
50
|
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
|
|
65
65
|
<div id="intro" class="chapter">
|
|
66
66
|
<h1 class="title">
|
|
67
|
-
Chapter <a href="#a-
|
|
67
|
+
Chapter <a href="#a-606978988">2</a>
|
|
68
68
|
|
|
69
69
|
<br/><br/>
|
|
70
70
|
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
|
|
91
91
|
<div id="resources" class="section">
|
|
92
92
|
<h2 class="title">
|
|
93
|
-
<a href="#a-
|
|
93
|
+
<a href="#a-606913148">2.1</a>
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
|
|
@@ -101,8 +101,8 @@
|
|
|
101
101
|
<div id="Records" class="paragraph">
|
|
102
102
|
<p class="title">Records</p>
|
|
103
103
|
<ul>
|
|
104
|
-
<li><a href="history.html#a18.0.
|
|
105
|
-
– release notes for version 18.0.
|
|
104
|
+
<li><a href="history.html#a18.0.1">What’s new</a>
|
|
105
|
+
– release notes for version 18.0.1.
|
|
106
106
|
<ul>
|
|
107
107
|
<li><a href="history.html">History</a>
|
|
108
108
|
– a record of all release notes.</li>
|
|
@@ -141,19 +141,21 @@
|
|
|
141
141
|
<div id="Facilities" class="paragraph">
|
|
142
142
|
<p class="title">Facilities</p>
|
|
143
143
|
<ul>
|
|
144
|
-
<li><a href="http://rubyforge.org/
|
|
144
|
+
<li><a href="http://ruby-vpi.rubyforge.org/download/">Downloads</a>
|
|
145
145
|
– obtain release packages</li>
|
|
146
|
-
<li><a href="http://ruby-vpi.rubyforge.org/
|
|
146
|
+
<li><a href="http://ruby-vpi.rubyforge.org/code/">Source code</a>
|
|
147
147
|
– browse online or obtain with <a href="http://darcs.net">Darcs</a>.</li>
|
|
148
|
-
<li><a href="http://rubyforge.org/forum
|
|
148
|
+
<li><a href="http://ruby-vpi.rubyforge.org/forum/">Forums</a>
|
|
149
149
|
– discuss things and ask questions.</li>
|
|
150
|
-
<li><a href="http://rubyforge.org/
|
|
150
|
+
<li><a href="http://ruby-vpi.rubyforge.org/mail/">Mailing list</a>
|
|
151
|
+
– discuss things and ask questions.</li>
|
|
152
|
+
<li><a href="http://ruby-vpi.rubyforge.org/tracker/">Bugs</a>
|
|
151
153
|
– report defects in the software.</li>
|
|
152
|
-
<li><a href="http://rubyforge.org/tracker
|
|
154
|
+
<li><a href="http://ruby-vpi.rubyforge.org/tracker/">Patches</a>
|
|
153
155
|
– submit patches to source code.</li>
|
|
154
|
-
<li><a href="http://rubyforge.org/tracker
|
|
156
|
+
<li><a href="http://ruby-vpi.rubyforge.org/tracker/">Requests</a>
|
|
155
157
|
– request new features or get support.</li>
|
|
156
|
-
<li><a href="http://rubyforge.org/
|
|
158
|
+
<li><a href="http://ruby-vpi.rubyforge.org/portal/">Project portal</a>
|
|
157
159
|
– hosted generously by <a href="http://rubyforge.org">RubyForge</a>.</li>
|
|
158
160
|
</ul>
|
|
159
161
|
</div>
|
|
@@ -168,7 +170,7 @@
|
|
|
168
170
|
|
|
169
171
|
<div id="intro.features" class="section">
|
|
170
172
|
<h2 class="title">
|
|
171
|
-
<a href="#a-
|
|
173
|
+
<a href="#a-606925458">2.2</a>
|
|
172
174
|
|
|
173
175
|
|
|
174
176
|
|
|
@@ -239,7 +241,7 @@
|
|
|
239
241
|
|
|
240
242
|
<div id="intro.reqs" class="section">
|
|
241
243
|
<h2 class="title">
|
|
242
|
-
<a href="#a-
|
|
244
|
+
<a href="#a-606937688">2.3</a>
|
|
243
245
|
|
|
244
246
|
|
|
245
247
|
|
|
@@ -258,13 +260,29 @@
|
|
|
258
260
|
<ul>
|
|
259
261
|
<li><a href="http://www.synopsys.com/products/simulation/simulation.html">Synopsys VCS</a>
|
|
260
262
|
– any version that supports the <tt>-load</tt> option is acceptable.</li>
|
|
261
|
-
|
|
263
|
+
</ul>
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
<ul>
|
|
267
|
+
<li><a href="http://www.model.com">Mentor Modelsim</a>
|
|
262
268
|
– any version that supports the <tt>-pli</tt> option is acceptable.</li>
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
269
|
+
</ul>
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
<ul>
|
|
273
|
+
<li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a>
|
|
274
|
+
– any version that supports the <tt>+loadvpi</tt> option should be acceptable. However, version 05.83-s003 is <em>mostly</em> acceptable because you <strong>will not</strong> be able to <a href="manual.html#problem.ncsim.vpiForceFlag">force values onto wires</a>.</li>
|
|
275
|
+
</ul>
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
<ul>
|
|
279
|
+
<li><a href="http://www.pragmatic-c.com/gpl-cver/">GPL Cver</a>
|
|
266
280
|
– version 2.11a or newer is acceptable.</li>
|
|
267
|
-
|
|
281
|
+
</ul>
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
<ul>
|
|
285
|
+
<li><a href="http://www.geda.seul.org/tools/icarus/index.html">Icarus Verilog</a>
|
|
268
286
|
– version 0.8 is <em>mostly</em> acceptable because you <strong>will not</strong> be able to <a href="manual.html#Accessing_a_handle_s_relatives">access child handles through method calls</a>. The reason for this limitation is explained <a href="manual.html#problems.ivl.vpi_handle_by_name.absolute-paths">in the user manual</a>.</li>
|
|
269
287
|
</ul>
|
|
270
288
|
</div>
|
|
@@ -275,11 +293,23 @@
|
|
|
275
293
|
<ul>
|
|
276
294
|
<li><a href="http://en.wikipedia.org/wiki/Make">make</a>
|
|
277
295
|
– any flavor should be acceptable.</li>
|
|
278
|
-
|
|
296
|
+
</ul>
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
<ul>
|
|
300
|
+
<li>C compiler
|
|
279
301
|
– the <a href="http://www.gnu.org/software/gcc/" title="GCC">GNU Compiler Collection</a> is preferred, but any C compiler should be acceptable.</li>
|
|
280
|
-
|
|
302
|
+
</ul>
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
<ul>
|
|
306
|
+
<li><a href="http://www.swig.org/download.html">SWIG</a>
|
|
281
307
|
– version 1.3.29 or newer is necessary.</li>
|
|
282
|
-
|
|
308
|
+
</ul>
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
<ul>
|
|
312
|
+
<li><a href="http://www.ruby-lang.org/en/downloads/">Ruby</a>
|
|
283
313
|
– version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following <a href="http://www.ruby-lang.org/en/downloads/">these instructions</a>.</li>
|
|
284
314
|
</ul>
|
|
285
315
|
</div>
|
|
@@ -290,7 +320,11 @@
|
|
|
290
320
|
<ul>
|
|
291
321
|
<li><a href="http://en.wikipedia.org/wiki/Pthreads" title="pthreads">POSIX threads</a>
|
|
292
322
|
– header and linkable object files, and operating system support for this library are necessary.</li>
|
|
293
|
-
|
|
323
|
+
</ul>
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
<ul>
|
|
327
|
+
<li><a href="http://rubyforge.org/frs/?group_id=126">RubyGems</a>
|
|
294
328
|
– any recent version should be acceptable. You can install RubyGems by following <a href="http://www.rubygems.org/read/chapter/3">these instructions</a>.</li>
|
|
295
329
|
</ul>
|
|
296
330
|
</div>
|
|
@@ -305,7 +339,7 @@
|
|
|
305
339
|
|
|
306
340
|
<div id="intro.applications" class="section">
|
|
307
341
|
<h2 class="title">
|
|
308
|
-
<a href="#a-
|
|
342
|
+
<a href="#a-606940248">2.4</a>
|
|
309
343
|
|
|
310
344
|
|
|
311
345
|
|
|
@@ -351,7 +385,7 @@
|
|
|
351
385
|
|
|
352
386
|
<div id="intro.appetizers" class="section">
|
|
353
387
|
<h2 class="title">
|
|
354
|
-
<a href="#a-
|
|
388
|
+
<a href="#a-606942848">2.5</a>
|
|
355
389
|
|
|
356
390
|
|
|
357
391
|
|
|
@@ -419,7 +453,7 @@
|
|
|
419
453
|
|
|
420
454
|
<div id="intro.license" class="section">
|
|
421
455
|
<h2 class="title">
|
|
422
|
-
<a href="#a-
|
|
456
|
+
<a href="#a-606945718">2.6</a>
|
|
423
457
|
|
|
424
458
|
|
|
425
459
|
|
|
@@ -465,7 +499,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
465
499
|
|
|
466
500
|
<div id="intro.related-works" class="section">
|
|
467
501
|
<h2 class="title">
|
|
468
|
-
<a href="#a-
|
|
502
|
+
<a href="#a-606951108">2.7</a>
|
|
469
503
|
|
|
470
504
|
|
|
471
505
|
|
|
@@ -486,7 +520,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
486
520
|
|
|
487
521
|
<div id="intro.related-works.pli" class="section">
|
|
488
522
|
<h3 class="title">
|
|
489
|
-
<a href="#a-
|
|
523
|
+
<a href="#a-606948168">2.7.1</a>
|
|
490
524
|
|
|
491
525
|
|
|
492
526
|
|
|
@@ -513,7 +547,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
513
547
|
|
|
514
548
|
<div id="setup" class="chapter">
|
|
515
549
|
<h1 class="title">
|
|
516
|
-
Chapter <a href="#a-
|
|
550
|
+
Chapter <a href="#a-607019648">3</a>
|
|
517
551
|
|
|
518
552
|
<br/><br/>
|
|
519
553
|
|
|
@@ -525,7 +559,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
525
559
|
|
|
526
560
|
<div id="setup.manifest" class="section">
|
|
527
561
|
<h2 class="title">
|
|
528
|
-
<a href="#a-
|
|
562
|
+
<a href="#a-606982178">3.1</a>
|
|
529
563
|
|
|
530
564
|
|
|
531
565
|
|
|
@@ -551,7 +585,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
551
585
|
|
|
552
586
|
<div id="setup.reqs" class="section">
|
|
553
587
|
<h2 class="title">
|
|
554
|
-
<a href="#a-
|
|
588
|
+
<a href="#a-606987618">3.2</a>
|
|
555
589
|
|
|
556
590
|
|
|
557
591
|
|
|
@@ -568,7 +602,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
568
602
|
<div class="tip" id="Add_support_for_your_Verilog_simulator">
|
|
569
603
|
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
|
570
604
|
|
|
571
|
-
<p class="title"><a href="#a-
|
|
605
|
+
<p class="title"><a href="#a-606984648">Tip 1</a>. Add support for your Verilog simulator</p>
|
|
572
606
|
|
|
573
607
|
Write a <a href="http://rubyforge.org/tracker/?group_id=1339">support request</a> for your simulator, while providing a sample transcript of the commands you use to run a test with your simulator, and I will add support for your simulator in the next release!
|
|
574
608
|
</div>
|
|
@@ -582,7 +616,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
582
616
|
|
|
583
617
|
<div id="setup.recom" class="section">
|
|
584
618
|
<h2 class="title">
|
|
585
|
-
<a href="#a-
|
|
619
|
+
<a href="#a-606993788">3.3</a>
|
|
586
620
|
|
|
587
621
|
|
|
588
622
|
|
|
@@ -597,7 +631,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
597
631
|
|
|
598
632
|
<div id="setup.recom.merger" class="section">
|
|
599
633
|
<h3 class="title">
|
|
600
|
-
<a href="#a-
|
|
634
|
+
<a href="#a-606990448">3.3.1</a>
|
|
601
635
|
|
|
602
636
|
|
|
603
637
|
|
|
@@ -641,7 +675,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
|
641
675
|
|
|
642
676
|
<div id="setup.inst" class="section">
|
|
643
677
|
<h2 class="title">
|
|
644
|
-
<a href="#a-
|
|
678
|
+
<a href="#a-607002928">3.4</a>
|
|
645
679
|
|
|
646
680
|
|
|
647
681
|
|
|
@@ -667,7 +701,7 @@ $ ls -d `gem env gemdir`/gems/ruby-vpi*
|
|
|
667
701
|
<div class="tip" id="Tuning_for_maximum_performance">
|
|
668
702
|
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
|
669
703
|
|
|
670
|
-
<p class="title"><a href="#a-
|
|
704
|
+
<p class="title"><a href="#a-606996338">Tip 2</a>. Tuning for maximum performance</p>
|
|
671
705
|
|
|
672
706
|
You can tune your installation of Ruby-VPI for maximum performance by adding your C compiler’s optimization flag to the <code class="code"><span style="color:#036; font-weight:bold">CFLAGS</span></code> environment variable <em>before</em> you run the <pre>gem install -y ruby-vpi</pre> command. For example, if your C compiler is GCC, then you can set <code class="code"><span style="color:#036; font-weight:bold">CFLAGS</span></code> to <tt>-O9</tt> for maximum optimization.
|
|
673
707
|
</div>
|
|
@@ -678,7 +712,7 @@ $ ls -d `gem env gemdir`/gems/ruby-vpi*
|
|
|
678
712
|
|
|
679
713
|
<div id="setup.inst.windows" class="section">
|
|
680
714
|
<h3 class="title">
|
|
681
|
-
<a href="#a-
|
|
715
|
+
<a href="#a-606998868">3.4.1</a>
|
|
682
716
|
|
|
683
717
|
|
|
684
718
|
|
|
@@ -729,7 +763,7 @@ $ ls -d `gem env gemdir`/gems/ruby-vpi*
|
|
|
729
763
|
|
|
730
764
|
<div id="setup.maintenance" class="section">
|
|
731
765
|
<h2 class="title">
|
|
732
|
-
<a href="#a-
|
|
766
|
+
<a href="#a-607005208">3.5</a>
|
|
733
767
|
|
|
734
768
|
|
|
735
769
|
|
|
@@ -753,7 +787,7 @@ $ ls -d `gem env gemdir`/gems/ruby-vpi*
|
|
|
753
787
|
|
|
754
788
|
<div id="organization" class="chapter">
|
|
755
789
|
<h1 class="title">
|
|
756
|
-
Chapter <a href="#a-
|
|
790
|
+
Chapter <a href="#a-607025428">4</a>
|
|
757
791
|
|
|
758
792
|
<br/><br/>
|
|
759
793
|
|
|
@@ -773,7 +807,7 @@ $ ls -d `gem env gemdir`/gems/ruby-vpi*
|
|
|
773
807
|
<div class="figure" id="fig:organization.detail">
|
|
774
808
|
|
|
775
809
|
|
|
776
|
-
<p class="title"><a href="#a-
|
|
810
|
+
<p class="title"><a href="#a-607022248">Figure 1</a>. Where does Ruby-VPI fit in?</p>
|
|
777
811
|
|
|
778
812
|
<img src="figures/organization_detailed.png" alt="" />
|
|
779
813
|
</div>
|
|
@@ -787,7 +821,7 @@ As <a href="#fig:organization.detail">Figure 1</a> shows, Ruby-VPI is composed o
|
|
|
787
821
|
|
|
788
822
|
<div id="overview.relay" class="section">
|
|
789
823
|
<h2 class="title">
|
|
790
|
-
<a href="#a-
|
|
824
|
+
<a href="#a-607028538">4.1</a>
|
|
791
825
|
|
|
792
826
|
|
|
793
827
|
|
|
@@ -810,7 +844,7 @@ As <a href="#fig:organization.detail">Figure 1</a> shows, Ruby-VPI is composed o
|
|
|
810
844
|
<div class="figure" id="fig:ruby_relay">
|
|
811
845
|
|
|
812
846
|
|
|
813
|
-
<p class="title"><a href="#a-
|
|
847
|
+
<p class="title"><a href="#a-607025058">Figure 2</a>. Interaction between Ruby and Verilog</p>
|
|
814
848
|
|
|
815
849
|
<img src="figures/ruby_relay.png" alt="" />
|
|
816
850
|
|
|
@@ -836,7 +870,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
836
870
|
|
|
837
871
|
<div id="organization.tests" class="section">
|
|
838
872
|
<h2 class="title">
|
|
839
|
-
<a href="#a-
|
|
873
|
+
<a href="#a-607034108">4.2</a>
|
|
840
874
|
|
|
841
875
|
|
|
842
876
|
|
|
@@ -853,7 +887,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
853
887
|
<div class="figure" id="fig:organization">
|
|
854
888
|
|
|
855
889
|
|
|
856
|
-
<p class="title"><a href="#a-
|
|
890
|
+
<p class="title"><a href="#a-607031008">Figure 3</a>. Organization of a test in Ruby-VPI</p>
|
|
857
891
|
|
|
858
892
|
<img src="figures/organization.png" alt="" />
|
|
859
893
|
</div>
|
|
@@ -876,7 +910,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
876
910
|
|
|
877
911
|
<div id="VPI_in_Ruby" class="section">
|
|
878
912
|
<h2 class="title">
|
|
879
|
-
<a href="#a-
|
|
913
|
+
<a href="#a-606948098">4.3</a>
|
|
880
914
|
|
|
881
915
|
|
|
882
916
|
|
|
@@ -888,7 +922,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
888
922
|
|
|
889
923
|
<div id="Deviations_from_the_VPI_standard" class="section">
|
|
890
924
|
<h3 class="title">
|
|
891
|
-
<a href="#a-
|
|
925
|
+
<a href="#a-607043028">4.3.1</a>
|
|
892
926
|
|
|
893
927
|
|
|
894
928
|
|
|
@@ -903,7 +937,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
903
937
|
|
|
904
938
|
<div id="Names_are_capitalized" class="section">
|
|
905
939
|
<h4 class="title">
|
|
906
|
-
<a href="#a-
|
|
940
|
+
<a href="#a-607036598">4.3.1.1</a>
|
|
907
941
|
|
|
908
942
|
|
|
909
943
|
|
|
@@ -924,7 +958,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
924
958
|
|
|
925
959
|
<div id="a_vprintf__is__printf_" class="section">
|
|
926
960
|
<h4 class="title">
|
|
927
|
-
<a href="#a-
|
|
961
|
+
<a href="#a-607039098">4.3.1.2</a>
|
|
928
962
|
|
|
929
963
|
|
|
930
964
|
|
|
@@ -961,7 +995,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
961
995
|
|
|
962
996
|
<div id="vpi.handles" class="section">
|
|
963
997
|
<h3 class="title">
|
|
964
|
-
<a href="#a-
|
|
998
|
+
<a href="#a-607068568">4.3.2</a>
|
|
965
999
|
|
|
966
1000
|
|
|
967
1001
|
|
|
@@ -990,7 +1024,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
|
990
1024
|
|
|
991
1025
|
<div id="Accessing_a_handle_s_relatives" class="section">
|
|
992
1026
|
<h4 class="title">
|
|
993
|
-
<a href="#a-
|
|
1027
|
+
<a href="#a-607048248">4.3.2.2</a>
|
|
994
1028
|
|
|
995
1029
|
|
|
996
1030
|
|
|
@@ -1027,7 +1061,7 @@ baz = vpi_handle_by_name( <span style="background-color:#fff0f0"><span style="co
|
|
|
1027
1061
|
|
|
1028
1062
|
<div id="Accessing_a_handle_s_properties" class="section">
|
|
1029
1063
|
<h4 class="title">
|
|
1030
|
-
<a href="#a-
|
|
1064
|
+
<a href="#a-607051188">4.3.2.3</a>
|
|
1031
1065
|
|
|
1032
1066
|
|
|
1033
1067
|
|
|
@@ -1070,7 +1104,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
|
1070
1104
|
<div class="figure" id="fig:method_naming_format">
|
|
1071
1105
|
|
|
1072
1106
|
|
|
1073
|
-
<p class="title"><a href="#a-
|
|
1107
|
+
<p class="title"><a href="#a-607053988">Figure 4</a>. Method naming format for accessing a handle’s properties</p>
|
|
1074
1108
|
|
|
1075
1109
|
<table>
|
|
1076
1110
|
<tr>
|
|
@@ -1123,7 +1157,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
|
1123
1157
|
<div class="table" id="tbl:accessors">
|
|
1124
1158
|
|
|
1125
1159
|
|
|
1126
|
-
<p class="title"><a href="#a-
|
|
1160
|
+
<p class="title"><a href="#a-607056418">Table 1</a>. Possible accessors and their implications</p>
|
|
1127
1161
|
|
|
1128
1162
|
<table>
|
|
1129
1163
|
<tr>
|
|
@@ -1177,7 +1211,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
|
1177
1211
|
<div class="table" id="ex:properties">
|
|
1178
1212
|
|
|
1179
1213
|
|
|
1180
|
-
<p class="title"><a href="#a-
|
|
1214
|
+
<p class="title"><a href="#a-607059358">Table 2</a>. Examples of accessing a handle’s properties</p>
|
|
1181
1215
|
|
|
1182
1216
|
<table>
|
|
1183
1217
|
<tr>
|
|
@@ -1502,7 +1536,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
|
1502
1536
|
|
|
1503
1537
|
<div id="vpi.callbacks" class="section">
|
|
1504
1538
|
<h3 class="title">
|
|
1505
|
-
<a href="#a-
|
|
1539
|
+
<a href="#a-607076998">4.3.3</a>
|
|
1506
1540
|
|
|
1507
1541
|
|
|
1508
1542
|
|
|
@@ -1522,7 +1556,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
|
1522
1556
|
<div class="example" id="ex:callback">
|
|
1523
1557
|
|
|
1524
1558
|
|
|
1525
|
-
<p class="title"><a href="#a-
|
|
1559
|
+
<p class="title"><a href="#a-607072518">Example 1</a>. Using a callback for value change notification</p>
|
|
1526
1560
|
|
|
1527
1561
|
<p>This example shows how to use a callback for notification of changes in a handle’s <code class="code"><span style="color:#036; font-weight:bold">VpiIntVal</span></code> property. When you no longer need this callback, you can tear it down using <code class="code">vpi_remove_cb(cb_handle)</code>.</p>
|
|
1528
1562
|
|
|
@@ -1571,7 +1605,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
|
1571
1605
|
|
|
1572
1606
|
<div id="usage" class="chapter">
|
|
1573
1607
|
<h1 class="title">
|
|
1574
|
-
Chapter <a href="#a-
|
|
1608
|
+
Chapter <a href="#a-607149688">5</a>
|
|
1575
1609
|
|
|
1576
1610
|
<br/><br/>
|
|
1577
1611
|
|
|
@@ -1583,7 +1617,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
|
1583
1617
|
|
|
1584
1618
|
<div id="usage.prototyping" class="section">
|
|
1585
1619
|
<h2 class="title">
|
|
1586
|
-
<a href="#a-
|
|
1620
|
+
<a href="#a-607049328">5.1</a>
|
|
1587
1621
|
|
|
1588
1622
|
|
|
1589
1623
|
|
|
@@ -1625,7 +1659,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
|
1625
1659
|
|
|
1626
1660
|
<div id="How_does_prototyping_work_" class="section">
|
|
1627
1661
|
<h3 class="title">
|
|
1628
|
-
<a href="#a-
|
|
1662
|
+
<a href="#a-607039268">5.1.2</a>
|
|
1629
1663
|
|
|
1630
1664
|
|
|
1631
1665
|
|
|
@@ -1647,7 +1681,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
|
1647
1681
|
|
|
1648
1682
|
<div id="usage.debugger" class="section">
|
|
1649
1683
|
<h2 class="title">
|
|
1650
|
-
<a href="#a-
|
|
1684
|
+
<a href="#a-607058778">5.2</a>
|
|
1651
1685
|
|
|
1652
1686
|
|
|
1653
1687
|
|
|
@@ -1668,7 +1702,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
|
1668
1702
|
|
|
1669
1703
|
<div id="usage.debugger.init" class="section">
|
|
1670
1704
|
<h3 class="title">
|
|
1671
|
-
<a href="#a-
|
|
1705
|
+
<a href="#a-607053478">5.2.1</a>
|
|
1672
1706
|
|
|
1673
1707
|
|
|
1674
1708
|
|
|
@@ -1693,7 +1727,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
|
1693
1727
|
|
|
1694
1728
|
<div id="usage.test-runner" class="section">
|
|
1695
1729
|
<h2 class="title">
|
|
1696
|
-
<a href="#a-
|
|
1730
|
+
<a href="#a-607082308">5.3</a>
|
|
1697
1731
|
|
|
1698
1732
|
|
|
1699
1733
|
|
|
@@ -1723,7 +1757,7 @@ rake vsim # Simulate with Mentor Modelsim.
|
|
|
1723
1757
|
|
|
1724
1758
|
<div id="usage.test-runner.env-vars" class="section">
|
|
1725
1759
|
<h3 class="title">
|
|
1726
|
-
<a href="#a-
|
|
1760
|
+
<a href="#a-607072228">5.3.1</a>
|
|
1727
1761
|
|
|
1728
1762
|
|
|
1729
1763
|
|
|
@@ -1770,7 +1804,7 @@ rake
|
|
|
1770
1804
|
<div class="example" id="Running_a_test_with_environment_variables">
|
|
1771
1805
|
|
|
1772
1806
|
|
|
1773
|
-
<p class="title"><a href="#a-
|
|
1807
|
+
<p class="title"><a href="#a-607065588">Example 2</a>. Running a test with environment variables</p>
|
|
1774
1808
|
|
|
1775
1809
|
<p>Below, we enable the prototype and code coverage analysis:
|
|
1776
1810
|
<pre>rake -f your_test_runner.rake PROTOTYPE=1 COVERAGE=1</pre></p>
|
|
@@ -1794,7 +1828,7 @@ rake
|
|
|
1794
1828
|
|
|
1795
1829
|
<div id="usage.tools" class="section">
|
|
1796
1830
|
<h2 class="title">
|
|
1797
|
-
<a href="#a-
|
|
1831
|
+
<a href="#a-607101458">5.4</a>
|
|
1798
1832
|
|
|
1799
1833
|
|
|
1800
1834
|
|
|
@@ -1830,7 +1864,7 @@ Simulators:
|
|
|
1830
1864
|
|
|
1831
1865
|
<div id="usage.tools.generate" class="section">
|
|
1832
1866
|
<h3 class="title">
|
|
1833
|
-
<a href="#a-
|
|
1867
|
+
<a href="#a-607091638">5.4.1</a>
|
|
1834
1868
|
|
|
1835
1869
|
|
|
1836
1870
|
|
|
@@ -1860,7 +1894,7 @@ A Ruby-VPI test is composed of the following files:
|
|
|
1860
1894
|
<div class="caution" id="Do_not_rename_generated_files">
|
|
1861
1895
|
<img src="images/tango/caution.png" alt="caution" class="icon"/>
|
|
1862
1896
|
|
|
1863
|
-
<p class="title"><a href="#a-
|
|
1897
|
+
<p class="title"><a href="#a-607085068">Caution 1</a>. Do not rename generated files</p>
|
|
1864
1898
|
|
|
1865
1899
|
Ruby-VPI uses the convention described above to dynamically create a direct Ruby interface to the design under test, so <em>do not</em> rename the generated files arbitrarily.
|
|
1866
1900
|
</div>
|
|
@@ -1879,7 +1913,7 @@ By producing multiple files, the automated test generator physically decouples t
|
|
|
1879
1913
|
<div class="tip" id="Using__kdiff3__with_the_automated_test_generator.">
|
|
1880
1914
|
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
|
1881
1915
|
|
|
1882
|
-
<p class="title"><a href="#a-
|
|
1916
|
+
<p class="title"><a href="#a-607087558">Tip 3</a>. Using <strong>kdiff3</strong> with the automated test generator.</p>
|
|
1883
1917
|
|
|
1884
1918
|
<ol>
|
|
1885
1919
|
<li>Create a file named <tt>merge2</tt> with the following content: <pre class="code">
|
|
@@ -1905,7 +1939,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
|
1905
1939
|
|
|
1906
1940
|
<div id="usage.tools.convert" class="section">
|
|
1907
1941
|
<h3 class="title">
|
|
1908
|
-
<a href="#a-
|
|
1942
|
+
<a href="#a-607093928">5.4.2</a>
|
|
1909
1943
|
|
|
1910
1944
|
|
|
1911
1945
|
|
|
@@ -1927,14 +1961,14 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
|
1927
1961
|
|
|
1928
1962
|
<div id="usage.examples" class="section">
|
|
1929
1963
|
<h2 class="title">
|
|
1930
|
-
<a href="#a-
|
|
1964
|
+
<a href="#a-607103698">5.5</a>
|
|
1931
1965
|
|
|
1932
1966
|
|
|
1933
1967
|
|
|
1934
1968
|
Sample tests
|
|
1935
1969
|
</h2>
|
|
1936
1970
|
|
|
1937
|
-
The <tt>samp</tt> directory (<a href="http://ruby-vpi.rubyforge.org/
|
|
1971
|
+
The <tt>samp</tt> directory (<a href="http://ruby-vpi.rubyforge.org/code//samp/">browse it online</a>) contains several sample tests which illustrate how Ruby-VPI can be used. Each sample has an associated <tt>Rakefile</tt> which simplifies the process of running it. Therefore, simply navigate into an example directory and run the <pre>rake</pre> command to get started.
|
|
1938
1972
|
|
|
1939
1973
|
</div>
|
|
1940
1974
|
|
|
@@ -1943,7 +1977,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
|
1943
1977
|
|
|
1944
1978
|
<div id="usage.tutorial" class="section">
|
|
1945
1979
|
<h2 class="title">
|
|
1946
|
-
<a href="#a-
|
|
1980
|
+
<a href="#a-606970248">5.6</a>
|
|
1947
1981
|
|
|
1948
1982
|
|
|
1949
1983
|
|
|
@@ -1966,7 +2000,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
|
1966
2000
|
|
|
1967
2001
|
<div id="usage.tutorial.declare-design" class="section">
|
|
1968
2002
|
<h3 class="title">
|
|
1969
|
-
<a href="#a-
|
|
2003
|
+
<a href="#a-607111108">5.6.1</a>
|
|
1970
2004
|
|
|
1971
2005
|
|
|
1972
2006
|
|
|
@@ -1991,7 +2025,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
|
1991
2025
|
<div class="example" id="fig:counter.v_decl">
|
|
1992
2026
|
|
|
1993
2027
|
|
|
1994
|
-
<p class="title"><a href="#a-
|
|
2028
|
+
<p class="title"><a href="#a-607107598">Example 3</a>. Declaration of a simple up-counter with synchronous reset</p>
|
|
1995
2029
|
|
|
1996
2030
|
<pre class="code" lang="verilog">
|
|
1997
2031
|
module counter #(parameter Size = 5) (
|
|
@@ -2015,7 +2049,7 @@ Before we continue, save the source code shown in <a href="#fig:counter.v_decl">
|
|
|
2015
2049
|
|
|
2016
2050
|
<div id="usage.tutorial.generate-test" class="section">
|
|
2017
2051
|
<h3 class="title">
|
|
2018
|
-
<a href="#a-
|
|
2052
|
+
<a href="#a-607121708">5.6.2</a>
|
|
2019
2053
|
|
|
2020
2054
|
|
|
2021
2055
|
|
|
@@ -2051,7 +2085,7 @@ $ cp counter.v xUnit
|
|
|
2051
2085
|
<div class="example" id="fig:generate-test.RSpec">
|
|
2052
2086
|
|
|
2053
2087
|
|
|
2054
|
-
<p class="title"><a href="#a-
|
|
2088
|
+
<p class="title"><a href="#a-607114448">Example 4</a>. Generating a test with specification in RSpec format</p>
|
|
2055
2089
|
|
|
2056
2090
|
<pre>
|
|
2057
2091
|
$ ruby-vpi generate counter.v --RSpec
|
|
@@ -2073,7 +2107,7 @@ $ ruby-vpi generate counter.v --RSpec
|
|
|
2073
2107
|
<div class="example" id="fig:generate-test.xUnit">
|
|
2074
2108
|
|
|
2075
2109
|
|
|
2076
|
-
<p class="title"><a href="#a-
|
|
2110
|
+
<p class="title"><a href="#a-607116908">Example 5</a>. Generating a test with specification in xUnit format</p>
|
|
2077
2111
|
|
|
2078
2112
|
<pre>
|
|
2079
2113
|
$ ruby-vpi generate counter.v --xUnit
|
|
@@ -2098,7 +2132,7 @@ $ ruby-vpi generate counter.v --xUnit
|
|
|
2098
2132
|
|
|
2099
2133
|
<div id="usage.tutorial.specification" class="section">
|
|
2100
2134
|
<h3 class="title">
|
|
2101
|
-
<a href="#a-
|
|
2135
|
+
<a href="#a-607131808">5.6.3</a>
|
|
2102
2136
|
|
|
2103
2137
|
|
|
2104
2138
|
|
|
@@ -2126,7 +2160,7 @@ Here are some reasonable expectations for our simple counter:
|
|
|
2126
2160
|
<div class="example" id="fig:RSpec_counter_spec.rb">
|
|
2127
2161
|
|
|
2128
2162
|
|
|
2129
|
-
<p class="title"><a href="#a-
|
|
2163
|
+
<p class="title"><a href="#a-607124618">Example 6</a>. Specification implemented in RSpec format</p>
|
|
2130
2164
|
|
|
2131
2165
|
<pre class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">spec</span><span style="color:#710">'</span></span>
|
|
2132
2166
|
|
|
@@ -2178,7 +2212,7 @@ describe <span style="background-color:#fff0f0"><span style="color:#710">"<
|
|
|
2178
2212
|
<div class="example" id="fig:xUnit_counter_spec.rb">
|
|
2179
2213
|
|
|
2180
2214
|
|
|
2181
|
-
<p class="title"><a href="#a-
|
|
2215
|
+
<p class="title"><a href="#a-607126978">Example 7</a>. Specification implemented in xUnit format</p>
|
|
2182
2216
|
|
|
2183
2217
|
<pre class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">test/unit</span><span style="color:#710">'</span></span>
|
|
2184
2218
|
|
|
@@ -2238,7 +2272,7 @@ Before we continue,
|
|
|
2238
2272
|
|
|
2239
2273
|
<div id="usage.tutorial.implement-proto" class="section">
|
|
2240
2274
|
<h3 class="title">
|
|
2241
|
-
<a href="#a-
|
|
2275
|
+
<a href="#a-607137798">5.6.4</a>
|
|
2242
2276
|
|
|
2243
2277
|
|
|
2244
2278
|
|
|
@@ -2255,7 +2289,7 @@ Before we continue,
|
|
|
2255
2289
|
<div class="example" id="fig:counter_proto.rb">
|
|
2256
2290
|
|
|
2257
2291
|
|
|
2258
|
-
<p class="title"><a href="#a-
|
|
2292
|
+
<p class="title"><a href="#a-607134398">Example 8</a>. Ruby prototype of our Verilog design</p>
|
|
2259
2293
|
|
|
2260
2294
|
<pre class="code"><span style="color:#888"># Ruby prototype of the design under test's Verilog implementation.</span>
|
|
2261
2295
|
<span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">feign!</span>
|
|
@@ -2282,7 +2316,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter_pr
|
|
|
2282
2316
|
|
|
2283
2317
|
<div id="usage.tutorial.test-proto" class="section">
|
|
2284
2318
|
<h3 class="title">
|
|
2285
|
-
<a href="#a-
|
|
2319
|
+
<a href="#a-607151048">5.6.5</a>
|
|
2286
2320
|
|
|
2287
2321
|
|
|
2288
2322
|
|
|
@@ -2302,7 +2336,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter_pr
|
|
|
2302
2336
|
<div class="example" id="fig:test-proto.RSpec">
|
|
2303
2337
|
|
|
2304
2338
|
|
|
2305
|
-
<p class="title"><a href="#a-
|
|
2339
|
+
<p class="title"><a href="#a-607140918">Example 9</a>. Running a test with specification in RSpec format</p>
|
|
2306
2340
|
|
|
2307
2341
|
<pre>
|
|
2308
2342
|
$ cd RSpec
|
|
@@ -2326,7 +2360,7 @@ cd -
|
|
|
2326
2360
|
<div class="example" id="fig:test-proto.unit-test">
|
|
2327
2361
|
|
|
2328
2362
|
|
|
2329
|
-
<p class="title"><a href="#a-
|
|
2363
|
+
<p class="title"><a href="#a-607143418">Example 10</a>. Running a test with specification in xUnit format</p>
|
|
2330
2364
|
|
|
2331
2365
|
<pre>
|
|
2332
2366
|
$ cd xUnit
|
|
@@ -2350,7 +2384,7 @@ Finished in 0.043859 seconds.
|
|
|
2350
2384
|
<div class="tip" id="What_can_the_test_runner_do_">
|
|
2351
2385
|
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
|
2352
2386
|
|
|
2353
|
-
<p class="title"><a href="#a-
|
|
2387
|
+
<p class="title"><a href="#a-607145688">Tip 4</a>. What can the test runner do?</p>
|
|
2354
2388
|
|
|
2355
2389
|
If you invoke the test runner (1) without any arguments or (2) with the <tt>--tasks</tt> option, it will show you a list of tasks that it can perform for you.
|
|
2356
2390
|
</div>
|
|
@@ -2366,7 +2400,7 @@ Finished in 0.043859 seconds.
|
|
|
2366
2400
|
|
|
2367
2401
|
<div id="usage.tutorial.implement-design" class="section">
|
|
2368
2402
|
<h3 class="title">
|
|
2369
|
-
<a href="#a-
|
|
2403
|
+
<a href="#a-607157038">5.6.6</a>
|
|
2370
2404
|
|
|
2371
2405
|
|
|
2372
2406
|
|
|
@@ -2383,7 +2417,7 @@ Finished in 0.043859 seconds.
|
|
|
2383
2417
|
<div class="example" id="fig:counter.v_impl">
|
|
2384
2418
|
|
|
2385
2419
|
|
|
2386
|
-
<p class="title"><a href="#a-
|
|
2420
|
+
<p class="title"><a href="#a-607153638">Example 11</a>. Implementation of a simple up-counter with synchronous reset</p>
|
|
2387
2421
|
|
|
2388
2422
|
<pre class="code" lang="verilog">/**
|
|
2389
2423
|
A simple up-counter with synchronous reset.
|
|
@@ -2420,7 +2454,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter.v<
|
|
|
2420
2454
|
|
|
2421
2455
|
<div id="usage.tutorial.test-design" class="section">
|
|
2422
2456
|
<h3 class="title">
|
|
2423
|
-
<a href="#a-
|
|
2457
|
+
<a href="#a-606917698">5.6.7</a>
|
|
2424
2458
|
|
|
2425
2459
|
|
|
2426
2460
|
|
|
@@ -2440,7 +2474,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter.v<
|
|
|
2440
2474
|
<div class="example" id="fig:test-design.RSpec">
|
|
2441
2475
|
|
|
2442
2476
|
|
|
2443
|
-
<p class="title"><a href="#a-
|
|
2477
|
+
<p class="title"><a href="#a-607159998">Example 12</a>. Running a test with specification in RSpec format</p>
|
|
2444
2478
|
|
|
2445
2479
|
<pre>
|
|
2446
2480
|
$ cd RSpec
|
|
@@ -2462,7 +2496,7 @@ Finished in 0.041198 seconds
|
|
|
2462
2496
|
<div class="example" id="fig:test-design.unit-test">
|
|
2463
2497
|
|
|
2464
2498
|
|
|
2465
|
-
<p class="title"><a href="#a-
|
|
2499
|
+
<p class="title"><a href="#a-606910818">Example 13</a>. Running a test with specification in xUnit format</p>
|
|
2466
2500
|
|
|
2467
2501
|
<pre>
|
|
2468
2502
|
$ cd xUnit
|
|
@@ -2491,7 +2525,7 @@ Finished in 0.040262 seconds.
|
|
|
2491
2525
|
|
|
2492
2526
|
<div id="hacking" class="chapter">
|
|
2493
2527
|
<h1 class="title">
|
|
2494
|
-
Chapter <a href="#a-
|
|
2528
|
+
Chapter <a href="#a-607168058">6</a>
|
|
2495
2529
|
|
|
2496
2530
|
<br/><br/>
|
|
2497
2531
|
|
|
@@ -2503,7 +2537,7 @@ Finished in 0.040262 seconds.
|
|
|
2503
2537
|
|
|
2504
2538
|
<div id="hacking.scm" class="section">
|
|
2505
2539
|
<h2 class="title">
|
|
2506
|
-
<a href="#a-
|
|
2540
|
+
<a href="#a-607153878">6.1</a>
|
|
2507
2541
|
|
|
2508
2542
|
|
|
2509
2543
|
|
|
@@ -2524,7 +2558,7 @@ Finished in 0.040262 seconds.
|
|
|
2524
2558
|
|
|
2525
2559
|
<div id="hacking.release-packages" class="section">
|
|
2526
2560
|
<h2 class="title">
|
|
2527
|
-
<a href="#a-
|
|
2561
|
+
<a href="#a-607161228">6.2</a>
|
|
2528
2562
|
|
|
2529
2563
|
|
|
2530
2564
|
|
|
@@ -2552,7 +2586,7 @@ Finished in 0.040262 seconds.
|
|
|
2552
2586
|
|
|
2553
2587
|
<div id="hacking.manual" class="section">
|
|
2554
2588
|
<h2 class="title">
|
|
2555
|
-
<a href="#a-
|
|
2589
|
+
<a href="#a-607163458">6.3</a>
|
|
2556
2590
|
|
|
2557
2591
|
|
|
2558
2592
|
|
|
@@ -2570,7 +2604,7 @@ Finished in 0.040262 seconds.
|
|
|
2570
2604
|
|
|
2571
2605
|
<div id="problems" class="chapter">
|
|
2572
2606
|
<h1 class="title">
|
|
2573
|
-
Chapter <a href="#a-
|
|
2607
|
+
Chapter <a href="#a-607224248">7</a>
|
|
2574
2608
|
|
|
2575
2609
|
<br/><br/>
|
|
2576
2610
|
|
|
@@ -2585,7 +2619,7 @@ Finished in 0.040262 seconds.
|
|
|
2585
2619
|
|
|
2586
2620
|
<div id="problem.ivl" class="section">
|
|
2587
2621
|
<h2 class="title">
|
|
2588
|
-
<a href="#a-
|
|
2622
|
+
<a href="#a-607196648">7.1</a>
|
|
2589
2623
|
|
|
2590
2624
|
|
|
2591
2625
|
|
|
@@ -2600,7 +2634,7 @@ Finished in 0.040262 seconds.
|
|
|
2600
2634
|
|
|
2601
2635
|
<div id="problems.ivl.vpi_handle_by_name.absolute-paths" class="section">
|
|
2602
2636
|
<h3 class="title">
|
|
2603
|
-
<a href="#a-
|
|
2637
|
+
<a href="#a-607174028">7.1.1</a>
|
|
2604
2638
|
|
|
2605
2639
|
|
|
2606
2640
|
|
|
@@ -2620,7 +2654,7 @@ Finished in 0.040262 seconds.
|
|
|
2620
2654
|
<div class="example" id="ex:TestFoo">
|
|
2621
2655
|
|
|
2622
2656
|
|
|
2623
|
-
<p class="title"><a href="#a-
|
|
2657
|
+
<p class="title"><a href="#a-607170868">Example 14</a>. Part of a bench which instantiates a Verilog design</p>
|
|
2624
2658
|
|
|
2625
2659
|
<pre class="code" lang="verilog">
|
|
2626
2660
|
module TestFoo;
|
|
@@ -2639,7 +2673,7 @@ endmodule
|
|
|
2639
2673
|
|
|
2640
2674
|
<div id="problems.ivl.vpi_handle_by_name.connect-registers" class="section">
|
|
2641
2675
|
<h3 class="title">
|
|
2642
|
-
<a href="#a-
|
|
2676
|
+
<a href="#a-607183718">7.1.2</a>
|
|
2643
2677
|
|
|
2644
2678
|
|
|
2645
2679
|
|
|
@@ -2662,7 +2696,7 @@ endmodule
|
|
|
2662
2696
|
<div class="example" id="ex:TestFoo_bad">
|
|
2663
2697
|
|
|
2664
2698
|
|
|
2665
|
-
<p class="title"><a href="#a-
|
|
2699
|
+
<p class="title"><a href="#a-607176928">Example 15</a>. Bad design with unconnected registers</p>
|
|
2666
2700
|
|
|
2667
2701
|
Here the <code class="code">clk_reg</code> register is not connected to anything.
|
|
2668
2702
|
|
|
@@ -2682,7 +2716,7 @@ endmodule
|
|
|
2682
2716
|
<div class="example" id="ex:TestFoo_fix">
|
|
2683
2717
|
|
|
2684
2718
|
|
|
2685
|
-
<p class="title"><a href="#a-
|
|
2719
|
+
<p class="title"><a href="#a-607179368">Example 16</a>. Fixed design with wired registers</p>
|
|
2686
2720
|
|
|
2687
2721
|
Here the <code class="code">clk_reg</code> register is connected to the <code class="code">clk_wire</code> wire.
|
|
2688
2722
|
|
|
@@ -2705,7 +2739,7 @@ endmodule
|
|
|
2705
2739
|
|
|
2706
2740
|
<div id="problems.ivl.vpi_reset" class="section">
|
|
2707
2741
|
<h3 class="title">
|
|
2708
|
-
<a href="#a-
|
|
2742
|
+
<a href="#a-607185968">7.1.3</a>
|
|
2709
2743
|
|
|
2710
2744
|
|
|
2711
2745
|
|
|
@@ -2724,7 +2758,7 @@ endmodule
|
|
|
2724
2758
|
|
|
2725
2759
|
<div id="problem.ncsim" class="section">
|
|
2726
2760
|
<h2 class="title">
|
|
2727
|
-
<a href="#a-
|
|
2761
|
+
<a href="#a-607202038">7.2</a>
|
|
2728
2762
|
|
|
2729
2763
|
|
|
2730
2764
|
|
|
@@ -2739,7 +2773,7 @@ endmodule
|
|
|
2739
2773
|
|
|
2740
2774
|
<div id="problem.ncsim.vpiForceFlag" class="section">
|
|
2741
2775
|
<h3 class="title">
|
|
2742
|
-
<a href="#a-
|
|
2776
|
+
<a href="#a-607199078">7.2.1</a>
|
|
2743
2777
|
|
|
2744
2778
|
|
|
2745
2779
|
|
|
@@ -2766,7 +2800,7 @@ endmodule
|
|
|
2766
2800
|
|
|
2767
2801
|
<div id="glossary" class="chapter">
|
|
2768
2802
|
<h1 class="title">
|
|
2769
|
-
Chapter <a href="#a-
|
|
2803
|
+
Chapter <a href="#a-607256698">8</a>
|
|
2770
2804
|
|
|
2771
2805
|
<br/><br/>
|
|
2772
2806
|
|
|
@@ -2778,7 +2812,7 @@ endmodule
|
|
|
2778
2812
|
|
|
2779
2813
|
<div id="glossary.test" class="section">
|
|
2780
2814
|
<h2 class="title">
|
|
2781
|
-
<a href="#a-
|
|
2815
|
+
<a href="#a-607227078">8.1</a>
|
|
2782
2816
|
|
|
2783
2817
|
|
|
2784
2818
|
|
|
@@ -2794,7 +2828,7 @@ endmodule
|
|
|
2794
2828
|
|
|
2795
2829
|
<div id="glossary.design" class="section">
|
|
2796
2830
|
<h2 class="title">
|
|
2797
|
-
<a href="#a-
|
|
2831
|
+
<a href="#a-607229578">8.2</a>
|
|
2798
2832
|
|
|
2799
2833
|
|
|
2800
2834
|
|
|
@@ -2810,7 +2844,7 @@ endmodule
|
|
|
2810
2844
|
|
|
2811
2845
|
<div id="glossary.specification" class="section">
|
|
2812
2846
|
<h2 class="title">
|
|
2813
|
-
<a href="#a-
|
|
2847
|
+
<a href="#a-607232338">8.3</a>
|
|
2814
2848
|
|
|
2815
2849
|
|
|
2816
2850
|
|
|
@@ -2826,7 +2860,7 @@ endmodule
|
|
|
2826
2860
|
|
|
2827
2861
|
<div id="glossary.expectation" class="section">
|
|
2828
2862
|
<h2 class="title">
|
|
2829
|
-
<a href="#a-
|
|
2863
|
+
<a href="#a-607234558">8.4</a>
|
|
2830
2864
|
|
|
2831
2865
|
|
|
2832
2866
|
|
|
@@ -2842,7 +2876,7 @@ endmodule
|
|
|
2842
2876
|
|
|
2843
2877
|
<div id="glossary.handle" class="section">
|
|
2844
2878
|
<h2 class="title">
|
|
2845
|
-
<a href="#a-
|
|
2879
|
+
<a href="#a-607237038">8.5</a>
|
|
2846
2880
|
|
|
2847
2881
|
|
|
2848
2882
|
|
|
@@ -2858,7 +2892,7 @@ endmodule
|
|
|
2858
2892
|
|
|
2859
2893
|
<div id="glossary.rake" class="section">
|
|
2860
2894
|
<h2 class="title">
|
|
2861
|
-
<a href="#a-
|
|
2895
|
+
<a href="#a-607239298">8.6</a>
|
|
2862
2896
|
|
|
2863
2897
|
|
|
2864
2898
|
|
|
@@ -2879,7 +2913,7 @@ endmodule
|
|
|
2879
2913
|
|
|
2880
2914
|
<div id="glossary.RSpec" class="section">
|
|
2881
2915
|
<h2 class="title">
|
|
2882
|
-
<a href="#a-
|
|
2916
|
+
<a href="#a-607241838">8.7</a>
|
|
2883
2917
|
|
|
2884
2918
|
|
|
2885
2919
|
|
|
@@ -2898,7 +2932,7 @@ endmodule
|
|
|
2898
2932
|
|
|
2899
2933
|
<div id="glossary.TDD" class="section">
|
|
2900
2934
|
<h2 class="title">
|
|
2901
|
-
<a href="#a-
|
|
2935
|
+
<a href="#a-607244098">8.8</a>
|
|
2902
2936
|
|
|
2903
2937
|
|
|
2904
2938
|
|
|
@@ -2917,7 +2951,7 @@ endmodule
|
|
|
2917
2951
|
|
|
2918
2952
|
<div id="glossary.BDD" class="section">
|
|
2919
2953
|
<h2 class="title">
|
|
2920
|
-
<a href="#a-
|
|
2954
|
+
<a href="#a-607246358">8.9</a>
|
|
2921
2955
|
|
|
2922
2956
|
|
|
2923
2957
|
|
|
@@ -2937,49 +2971,49 @@ endmodule
|
|
|
2937
2971
|
<hr style="display: none"/>
|
|
2938
2972
|
<div id="toc">
|
|
2939
2973
|
<h1 id="toc:contents">Contents</h1>
|
|
2940
|
-
<ul><li><span class="hide">1 </span><a id="a-
|
|
2974
|
+
<ul><li><span class="hide">1 </span><a id="a-605815698" href="#Ruby-VPI_18.0.1_user_manual">Ruby-VPI 18.0.1 user manual</a><ul><li><span class="hide">1.1 </span><a id="a-605717698" href="#About_this_manual">About this manual</a></li><li><span class="hide">1.2 </span><a id="a-605744638" href="#Legal_notice">Legal notice</a></li></ul></li><li><span class="hide">2 </span><a id="a-606978988" href="#intro">Welcome</a><ul><li><span class="hide">2.1 </span><a id="a-606913148" href="#resources">Resources</a><ul><li><span class="hide">2.1.1 </span><a id="a-605838518" href="#Records">Records</a></li><li><span class="hide">2.1.2 </span><a id="a-605610268" href="#Documentation">Documentation</a></li><li><span class="hide">2.1.3 </span><a id="a-606907548" href="#Facilities">Facilities</a></li></ul></li><li><span class="hide">2.2 </span><a id="a-606925458" href="#intro.features">Features</a><ul><li><span class="hide">2.2.1 </span><a id="a-606915788" href="#Portable">Portable</a></li><li><span class="hide">2.2.2 </span><a id="a-606918188" href="#Agile">Agile</a></li><li><span class="hide">2.2.3 </span><a id="a-606920588" href="#Powerful">Powerful</a></li></ul></li><li><span class="hide">2.3 </span><a id="a-606937688" href="#intro.reqs">Requirements</a><ul><li><span class="hide">2.3.1 </span><a id="a-606928098" href="#Verilog_simulator">Verilog simulator</a></li><li><span class="hide">2.3.2 </span><a id="a-606930538" href="#Compilers">Compilers</a></li><li><span class="hide">2.3.3 </span><a id="a-606932858" href="#Libraries">Libraries</a></li></ul></li><li><span class="hide">2.4 </span><a id="a-606940248" href="#intro.applications">Applications</a></li><li><span class="hide">2.5 </span><a id="a-606942848" href="#intro.appetizers">Appetizers</a></li><li><span class="hide">2.6 </span><a id="a-606945718" href="#intro.license">License</a></li><li><span class="hide">2.7 </span><a id="a-606951108" href="#intro.related-works">Related works</a><ul><li><span class="hide">2.7.1 </span><a id="a-606948168" href="#intro.related-works.pli">Ye olde PLI</a></li></ul></li></ul></li><li><span class="hide">3 </span><a id="a-607019648" href="#setup">Setup</a><ul><li><span class="hide">3.1 </span><a id="a-606982178" href="#setup.manifest">Manifest</a></li><li><span class="hide">3.2 </span><a id="a-606987618" href="#setup.reqs">Requirements</a></li><li><span class="hide">3.3 </span><a id="a-606993788" href="#setup.recom">Recommendations</a><ul><li><span class="hide">3.3.1 </span><a id="a-606990448" href="#setup.recom.merger">Text merging tool</a></li></ul></li><li><span class="hide">3.4 </span><a id="a-607002928" href="#setup.inst">Installation</a><ul><li><span class="hide">3.4.1 </span><a id="a-606998868" href="#setup.inst.windows">Installing on Windows</a></li></ul></li><li><span class="hide">3.5 </span><a id="a-607005208" href="#setup.maintenance">Maintenance</a></li></ul></li><li><span class="hide">4 </span><a id="a-607025428" href="#organization">Organization</a><ul><li><span class="hide">4.1 </span><a id="a-607028538" href="#overview.relay">Ruby/Verilog interaction</a></li><li><span class="hide">4.2 </span><a id="a-607034108" href="#organization.tests">Tests</a></li><li><span class="hide">4.3 </span><a id="a-606948098" href="#VPI_in_Ruby">VPI in Ruby</a><ul><li><span class="hide">4.3.1 </span><a id="a-607043028" href="#Deviations_from_the_VPI_standard">Deviations from the VPI standard</a><ul><li><span class="hide">4.3.1.1 </span><a id="a-607036598" href="#Names_are_capitalized">Names are capitalized</a></li><li><span class="hide">4.3.1.2 </span><a id="a-607039098" href="#a_vprintf__is__printf_"><code class="code">vprintf</code> is <code class="code">printf</code></a></li></ul></li><li><span class="hide">4.3.2 </span><a id="a-607068568" href="#vpi.handles">Handles</a><ul><li><span class="hide">4.3.2.1 </span><a id="a-607045688" href="#Shortcuts_for_productivity">Shortcuts for productivity</a></li><li><span class="hide">4.3.2.2 </span><a id="a-607048248" href="#Accessing_a_handle_s_relatives">Accessing a handle’s relatives</a></li><li><span class="hide">4.3.2.3 </span><a id="a-607051188" href="#Accessing_a_handle_s_properties">Accessing a handle’s properties</a></li></ul></li><li><span class="hide">4.3.3 </span><a id="a-607076998" href="#vpi.callbacks">Callbacks</a></li></ul></li></ul></li><li><span class="hide">5 </span><a id="a-607149688" href="#usage">Usage</a><ul><li><span class="hide">5.1 </span><a id="a-607049328" href="#usage.prototyping">Prototyping</a><ul><li><span class="hide">5.1.1 </span><a id="a-607035478" href="#Getting_started">Getting started</a></li><li><span class="hide">5.1.2 </span><a id="a-607039268" href="#How_does_prototyping_work_">How does prototyping work?</a></li></ul></li><li><span class="hide">5.2 </span><a id="a-607058778" href="#usage.debugger">Debugging</a><ul><li><span class="hide">5.2.1 </span><a id="a-607053478" href="#usage.debugger.init">Advanced initialization</a></li></ul></li><li><span class="hide">5.3 </span><a id="a-607082308" href="#usage.test-runner">Test runner</a><ul><li><span class="hide">5.3.1 </span><a id="a-607072228" href="#usage.test-runner.env-vars">Environment variables</a><ul><li><span class="hide">5.3.1.1 </span><a id="a-607063028" href="#Variables_as_command-line_arguments">Variables as command-line arguments</a></li></ul></li></ul></li><li><span class="hide">5.4 </span><a id="a-607101458" href="#usage.tools">Tools</a><ul><li><span class="hide">5.4.1 </span><a id="a-607091638" href="#usage.tools.generate">Automated test generation</a></li><li><span class="hide">5.4.2 </span><a id="a-607093928" href="#usage.tools.convert">Verilog to Ruby conversion</a></li></ul></li><li><span class="hide">5.5 </span><a id="a-607103698" href="#usage.examples">Sample tests</a></li><li><span class="hide">5.6 </span><a id="a-606970248" href="#usage.tutorial">Tutorial</a><ul><li><span class="hide">5.6.1 </span><a id="a-607111108" href="#usage.tutorial.declare-design">Start with a Verilog design</a></li><li><span class="hide">5.6.2 </span><a id="a-607121708" href="#usage.tutorial.generate-test">Generate a test</a></li><li><span class="hide">5.6.3 </span><a id="a-607131808" href="#usage.tutorial.specification">Specify your expectations</a></li><li><span class="hide">5.6.4 </span><a id="a-607137798" href="#usage.tutorial.implement-proto">Implement the prototype</a></li><li><span class="hide">5.6.5 </span><a id="a-607151048" href="#usage.tutorial.test-proto">Verify the prototype</a></li><li><span class="hide">5.6.6 </span><a id="a-607157038" href="#usage.tutorial.implement-design">Implement the design</a></li><li><span class="hide">5.6.7 </span><a id="a-606917698" href="#usage.tutorial.test-design">Verify the design</a></li></ul></li></ul></li><li><span class="hide">6 </span><a id="a-607168058" href="#hacking">Hacking</a><ul><li><span class="hide">6.1 </span><a id="a-607153878" href="#hacking.scm">Getting the source code</a></li><li><span class="hide">6.2 </span><a id="a-607161228" href="#hacking.release-packages">Building release packages</a></li><li><span class="hide">6.3 </span><a id="a-607163458" href="#hacking.manual">Editing this manual</a></li></ul></li><li><span class="hide">7 </span><a id="a-607224248" href="#problems">Known problems</a><ul><li><span class="hide">7.1 </span><a id="a-607196648" href="#problem.ivl">Icarus Verilog</a><ul><li><span class="hide">7.1.1 </span><a id="a-607174028" href="#problems.ivl.vpi_handle_by_name.absolute-paths">Give full paths to Verilog objects</a></li><li><span class="hide">7.1.2 </span><a id="a-607183718" href="#problems.ivl.vpi_handle_by_name.connect-registers">Registers must be connected</a></li><li><span class="hide">7.1.3 </span><a id="a-607185968" href="#problems.ivl.vpi_reset">Vpi::reset</a></li></ul></li><li><span class="hide">7.2 </span><a id="a-607202038" href="#problem.ncsim">Cadence NC-Sim</a><ul><li><span class="hide">7.2.1 </span><a id="a-607199078" href="#problem.ncsim.vpiForceFlag">Cannot force values onto handles</a></li></ul></li></ul></li><li><span class="hide">8 </span><a id="a-607256698" href="#glossary">Glossary</a><ul><li><span class="hide">8.1 </span><a id="a-607227078" href="#glossary.test">Test</a></li><li><span class="hide">8.2 </span><a id="a-607229578" href="#glossary.design">Design</a></li><li><span class="hide">8.3 </span><a id="a-607232338" href="#glossary.specification">Specification</a></li><li><span class="hide">8.4 </span><a id="a-607234558" href="#glossary.expectation">Expectation</a></li><li><span class="hide">8.5 </span><a id="a-607237038" href="#glossary.handle">Handle</a></li><li><span class="hide">8.6 </span><a id="a-607239298" href="#glossary.rake">Rake</a></li><li><span class="hide">8.7 </span><a id="a-607241838" href="#glossary.RSpec">RSpec</a></li><li><span class="hide">8.8 </span><a id="a-607244098" href="#glossary.TDD">Test driven development</a></li><li><span class="hide">8.9 </span><a id="a-607246358" href="#glossary.BDD">Behavior driven development</a></li></ul></li></ul>
|
|
2941
2975
|
|
|
2942
2976
|
<h1 id="toc:tip">Tips</h1>
|
|
2943
2977
|
<ol>
|
|
2944
|
-
<li><a href="#Add_support_for_your_Verilog_simulator" id="a-
|
|
2945
|
-
<li><a href="#Tuning_for_maximum_performance" id="a-
|
|
2946
|
-
<li><a href="#Using__kdiff3__with_the_automated_test_generator." id="a-
|
|
2947
|
-
<li><a href="#What_can_the_test_runner_do_" id="a-
|
|
2978
|
+
<li><a href="#Add_support_for_your_Verilog_simulator" id="a-606984648">Add support for your Verilog simulator</a></li>
|
|
2979
|
+
<li><a href="#Tuning_for_maximum_performance" id="a-606996338">Tuning for maximum performance</a></li>
|
|
2980
|
+
<li><a href="#Using__kdiff3__with_the_automated_test_generator." id="a-607087558">Using <strong>kdiff3</strong> with the automated test generator.</a></li>
|
|
2981
|
+
<li><a href="#What_can_the_test_runner_do_" id="a-607145688">What can the test runner do?</a></li>
|
|
2948
2982
|
</ol>
|
|
2949
2983
|
<h1 id="toc:caution">Cautions</h1>
|
|
2950
2984
|
<ol>
|
|
2951
|
-
<li><a href="#Do_not_rename_generated_files" id="a-
|
|
2985
|
+
<li><a href="#Do_not_rename_generated_files" id="a-607085068">Do not rename generated files</a></li>
|
|
2952
2986
|
</ol>
|
|
2953
2987
|
<h1 id="toc:figure">Figures</h1>
|
|
2954
2988
|
<ol>
|
|
2955
|
-
<li><a href="#fig:organization.detail" id="a-
|
|
2956
|
-
<li><a href="#fig:ruby_relay" id="a-
|
|
2957
|
-
<li><a href="#fig:organization" id="a-
|
|
2958
|
-
<li><a href="#fig:method_naming_format" id="a-
|
|
2989
|
+
<li><a href="#fig:organization.detail" id="a-607022248">Where does Ruby-VPI fit in?</a></li>
|
|
2990
|
+
<li><a href="#fig:ruby_relay" id="a-607025058">Interaction between Ruby and Verilog</a></li>
|
|
2991
|
+
<li><a href="#fig:organization" id="a-607031008">Organization of a test in Ruby-VPI</a></li>
|
|
2992
|
+
<li><a href="#fig:method_naming_format" id="a-607053988">Method naming format for accessing a handle’s properties</a></li>
|
|
2959
2993
|
</ol>
|
|
2960
2994
|
<h1 id="toc:table">Tables</h1>
|
|
2961
2995
|
<ol>
|
|
2962
|
-
<li><a href="#tbl:accessors" id="a-
|
|
2963
|
-
<li><a href="#ex:properties" id="a-
|
|
2996
|
+
<li><a href="#tbl:accessors" id="a-607056418">Possible accessors and their implications</a></li>
|
|
2997
|
+
<li><a href="#ex:properties" id="a-607059358">Examples of accessing a handle’s properties</a></li>
|
|
2964
2998
|
</ol>
|
|
2965
2999
|
<h1 id="toc:example">Examples</h1>
|
|
2966
3000
|
<ol>
|
|
2967
|
-
<li><a href="#ex:callback" id="a-
|
|
2968
|
-
<li><a href="#Running_a_test_with_environment_variables" id="a-
|
|
2969
|
-
<li><a href="#fig:counter.v_decl" id="a-
|
|
2970
|
-
<li><a href="#fig:generate-test.RSpec" id="a-
|
|
2971
|
-
<li><a href="#fig:generate-test.xUnit" id="a-
|
|
2972
|
-
<li><a href="#fig:RSpec_counter_spec.rb" id="a-
|
|
2973
|
-
<li><a href="#fig:xUnit_counter_spec.rb" id="a-
|
|
2974
|
-
<li><a href="#fig:counter_proto.rb" id="a-
|
|
2975
|
-
<li><a href="#fig:test-proto.RSpec" id="a-
|
|
2976
|
-
<li><a href="#fig:test-proto.unit-test" id="a-
|
|
2977
|
-
<li><a href="#fig:counter.v_impl" id="a-
|
|
2978
|
-
<li><a href="#fig:test-design.RSpec" id="a-
|
|
2979
|
-
<li><a href="#fig:test-design.unit-test" id="a-
|
|
2980
|
-
<li><a href="#ex:TestFoo" id="a-
|
|
2981
|
-
<li><a href="#ex:TestFoo_bad" id="a-
|
|
2982
|
-
<li><a href="#ex:TestFoo_fix" id="a-
|
|
3001
|
+
<li><a href="#ex:callback" id="a-607072518">Using a callback for value change notification</a></li>
|
|
3002
|
+
<li><a href="#Running_a_test_with_environment_variables" id="a-607065588">Running a test with environment variables</a></li>
|
|
3003
|
+
<li><a href="#fig:counter.v_decl" id="a-607107598">Declaration of a simple up-counter with synchronous reset</a></li>
|
|
3004
|
+
<li><a href="#fig:generate-test.RSpec" id="a-607114448">Generating a test with specification in RSpec format</a></li>
|
|
3005
|
+
<li><a href="#fig:generate-test.xUnit" id="a-607116908">Generating a test with specification in xUnit format</a></li>
|
|
3006
|
+
<li><a href="#fig:RSpec_counter_spec.rb" id="a-607124618">Specification implemented in RSpec format</a></li>
|
|
3007
|
+
<li><a href="#fig:xUnit_counter_spec.rb" id="a-607126978">Specification implemented in xUnit format</a></li>
|
|
3008
|
+
<li><a href="#fig:counter_proto.rb" id="a-607134398">Ruby prototype of our Verilog design</a></li>
|
|
3009
|
+
<li><a href="#fig:test-proto.RSpec" id="a-607140918">Running a test with specification in RSpec format</a></li>
|
|
3010
|
+
<li><a href="#fig:test-proto.unit-test" id="a-607143418">Running a test with specification in xUnit format</a></li>
|
|
3011
|
+
<li><a href="#fig:counter.v_impl" id="a-607153638">Implementation of a simple up-counter with synchronous reset</a></li>
|
|
3012
|
+
<li><a href="#fig:test-design.RSpec" id="a-607159998">Running a test with specification in RSpec format</a></li>
|
|
3013
|
+
<li><a href="#fig:test-design.unit-test" id="a-606910818">Running a test with specification in xUnit format</a></li>
|
|
3014
|
+
<li><a href="#ex:TestFoo" id="a-607170868">Part of a bench which instantiates a Verilog design</a></li>
|
|
3015
|
+
<li><a href="#ex:TestFoo_bad" id="a-607176928">Bad design with unconnected registers</a></li>
|
|
3016
|
+
<li><a href="#ex:TestFoo_fix" id="a-607179368">Fixed design with wired registers</a></li>
|
|
2983
3017
|
</ol>
|
|
2984
3018
|
</div>
|
|
2985
3019
|
</body>
|