ruby-vpi 17.0.0 → 18.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +8 -6
- data/Rakefile +4 -4
- data/doc/common.css +6 -9
- data/doc/common.inc +3 -3
- data/doc/common.tpl +14 -6
- data/doc/history.html +152 -44
- data/doc/history.inc +55 -3
- data/doc/history.yaml +62 -2
- data/doc/intro.inc +20 -16
- data/doc/manual.doc +23 -9
- data/doc/manual.html +232 -200
- data/doc/memo.doc +7 -6
- data/doc/memo.html +28 -17
- data/doc/readme.doc +1 -1
- data/doc/readme.html +51 -35
- data/doc/rss.xml +96 -70
- data/ext/Rakefile +24 -11
- data/ext/swig_vpi.h +1 -1
- data/ext/swig_wrap.cin +17 -42
- data/lib/ruby-vpi/pli.tab +1 -0
- data/lib/ruby-vpi/runner.rb +34 -10
- data/lib/ruby-vpi/vpi.rb +483 -438
- 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/RDoc.html +5 -5
- data/ref/ruby/classes/RDoc.src/{M000058.html → M000061.html} +0 -0
- data/ref/ruby/classes/String.html +24 -24
- data/ref/ruby/classes/String.src/M000022.html +23 -5
- data/ref/ruby/classes/String.src/M000023.html +28 -5
- data/ref/ruby/classes/String.src/M000024.html +5 -23
- data/ref/ruby/classes/String.src/M000025.html +5 -28
- data/ref/ruby/classes/Vpi/Handle.html +94 -49
- data/ref/ruby/classes/Vpi/Handle.src/M000035.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000036.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000037.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000038.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000039.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000040.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000041.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000042.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000043.html +7 -7
- data/ref/ruby/classes/Vpi/Handle.src/M000044.html +7 -7
- data/ref/ruby/classes/Vpi/Handle.src/M000045.html +8 -8
- data/ref/ruby/classes/Vpi/Handle.src/M000046.html +36 -30
- data/ref/ruby/classes/Vpi/Handle.src/M000047.html +72 -67
- data/ref/ruby/classes/Vpi/Handle.src/M000048.html +6 -17
- data/ref/ruby/classes/Vpi/Handle.src/M000049.html +19 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000050.html +5 -5
- data/ref/ruby/classes/Vpi/Handle.src/M000051.html +16 -10
- data/ref/ruby/classes/Vpi/Handle.src/M000053.html +5 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000054.html +11 -76
- data/ref/ruby/classes/Vpi/Handle.src/M000056.html +31 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000057.html +40 -0
- data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
- data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000055.html → M000058.html} +4 -4
- data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +19 -0
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +4 -4
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +4 -4
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +4 -4
- data/ref/ruby/classes/Vpi.html +0 -7
- data/ref/ruby/classes/Vpi.src/M000029.html +14 -14
- data/ref/ruby/classes/Vpi.src/M000030.html +25 -24
- data/ref/ruby/classes/Vpi.src/M000031.html +6 -6
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/convert_rb.html +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/rdoc_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_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 +1 -1
- data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +8 -1
- data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
- data/ref/ruby/fr_method_index.html +19 -16
- data/samp/register_file/register_file.v +1 -1
- data/samp/register_file/register_file_spec.rb +9 -5
- metadata +42 -38
- data/ref/ruby/classes/Vpi/S_vpi_time.src/M000056.html +0 -19
data/doc/manual.html
CHANGED
@@ -5,31 +5,31 @@
|
|
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
|
8
|
+
<title>Ruby-VPI 18.0.0 user manual</title>
|
9
9
|
</head>
|
10
10
|
<body>
|
11
|
+
<div id="site-links">
|
12
|
+
<a href="readme.html">Home</a>
|
13
|
+
· <a href="manual.html">Manual</a>
|
14
|
+
· <a href="memo.html">Memo</a>
|
15
|
+
· <a href="history.html">History</a>
|
16
|
+
<hr style="display: none"/>
|
17
|
+
</div>
|
18
|
+
|
11
19
|
<div id="toc-links">
|
12
|
-
|
13
|
-
<a href="#toc:tip">Tips</a> ·
|
14
|
-
<a href="#toc:note">Notes</a> ·
|
15
|
-
<a href="#toc:caution">Cautions</a> ·
|
16
|
-
<a href="#toc:figure">Figures</a> ·
|
17
|
-
<a href="#toc:table">Tables</a> ·
|
18
|
-
<a href="#toc:example">Examples</a> ·
|
19
|
-
|
20
|
-
<a href="readme.html" style="color: green; font-size: larger;">Home page</a>
|
20
|
+
<a href="#toc:contents">Contents</a> · <a href="#toc:tip">Tips</a> · <a href="#toc:caution">Cautions</a> · <a href="#toc:figure">Figures</a> · <a href="#toc:table">Tables</a> · <a href="#toc:example">Examples</a>
|
21
21
|
</div>
|
22
22
|
|
23
23
|
<div id="body">
|
24
24
|
<hr style="display: none"/>
|
25
25
|
|
26
|
-
<div id="Ruby-
|
27
|
-
<h1 class="title"><big>Ruby-VPI
|
26
|
+
<div id="Ruby-VPI_18.0.0_user_manual" class="front_cover">
|
27
|
+
<h1 class="title"><big>Ruby-VPI 18.0.0 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">31 July 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/?group_id=1339">project forums</a>. Furthermore, you can <a href="#hacking.manual">edit this manual</a> and contribute your improvements to the <a href="http://rubyforge.org/tracker/?group_id=1339">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>
|
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/?group_id=1339">project forums</a>. Furthermore, you can <a href="#hacking.manual">edit this manual</a> and contribute your improvements to the <a href="http://rubyforge.org/tracker/?group_id=1339">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
|
|
@@ -53,7 +53,7 @@
|
|
53
53
|
<p>This manual is distributed under <a href="#intro.license">the same license as Ruby-VPI</a>.</p>
|
54
54
|
|
55
55
|
|
56
|
-
<p>The admonition graphics used in this manual are Copyright 2005, 2006 <a href="http://tango.freedesktop.org">Tango Desktop Project</a> and are distributed under <a href="./images/tango/LICENSE">these terms</a>.</p>
|
56
|
+
<p>The admonition graphics used in this manual are Copyright 2005, 2006 <a href="http://tango.freedesktop.org/Tango_Desktop_Project">Tango Desktop Project</a> and are distributed under <a href="./images/tango/LICENSE">these terms</a>.</p>
|
57
57
|
</div>
|
58
58
|
</p>
|
59
59
|
|
@@ -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-607201618">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-605996598">2.1</a>
|
94
94
|
|
95
95
|
|
96
96
|
|
@@ -100,20 +100,22 @@
|
|
100
100
|
|
101
101
|
<div id="Records" class="paragraph">
|
102
102
|
<p class="title">Records</p>
|
103
|
-
<
|
104
|
-
|
105
|
-
|
103
|
+
<ul>
|
104
|
+
<li><a href="history.html#a18.0.0">What’s new</a>
|
105
|
+
– release notes for version 18.0.0.
|
106
106
|
<ul>
|
107
|
-
<li><a href="history.html">
|
108
|
-
– a
|
107
|
+
<li><a href="history.html">History</a>
|
108
|
+
– a record of all release notes.</li>
|
109
|
+
<li><a type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml"><img src="images/feed-icon-28x28.png" alt="RSS feed for release announcements" style="float: right"/></a> <a href="http://ruby-vpi.rubyforge.org/doc/rss.xml">RSS feed</a>
|
110
|
+
– keep track of new releases at your leisure.</li>
|
111
|
+
</ul>
|
112
|
+
</li>
|
109
113
|
<li><a href="memo.html">Plans</a>
|
110
114
|
– pending tasks for future releases.</li>
|
111
115
|
<li><a href="http://ruby-vpi.rubyforge.org/talks/">Talks</a>
|
112
116
|
– materials from presentations and seminars.</li>
|
113
117
|
<li><a href="http://ruby-vpi.rubyforge.org/papers/">Papers</a>
|
114
118
|
– research publications.</li>
|
115
|
-
<li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a>
|
116
|
-
– why does Ruby-VPI exist?</li>
|
117
119
|
</ul>
|
118
120
|
</div>
|
119
121
|
|
@@ -121,8 +123,10 @@
|
|
121
123
|
<div id="Documentation" class="paragraph">
|
122
124
|
<p class="title">Documentation</p>
|
123
125
|
<ul>
|
124
|
-
<li><a href="
|
125
|
-
–
|
126
|
+
<li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a>
|
127
|
+
– why was Ruby-VPI developed?</li>
|
128
|
+
<li><a href="manual.html">User manual</a>
|
129
|
+
– complete documentation for users.
|
126
130
|
<ul>
|
127
131
|
<li><a href="manual.html#usage.tutorial">Tutorial</a>
|
128
132
|
– learn how to use Ruby-VPI quickly.</li>
|
@@ -139,7 +143,7 @@
|
|
139
143
|
<ul>
|
140
144
|
<li><a href="http://rubyforge.org/frs/?group_id=1339">Downloads</a>
|
141
145
|
– obtain release packages</li>
|
142
|
-
<li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Source code</a>
|
146
|
+
<li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi/">Source code</a>
|
143
147
|
– browse online or obtain with <a href="http://darcs.net">Darcs</a>.</li>
|
144
148
|
<li><a href="http://rubyforge.org/forum/?group_id=1339">Forums</a>
|
145
149
|
– discuss things and ask questions.</li>
|
@@ -149,7 +153,7 @@
|
|
149
153
|
– submit patches to source code.</li>
|
150
154
|
<li><a href="http://rubyforge.org/tracker/?group_id=1339">Requests</a>
|
151
155
|
– request new features or get support.</li>
|
152
|
-
<li><a href="http://rubyforge.org/projects/ruby-vpi">Project portal</a>
|
156
|
+
<li><a href="http://rubyforge.org/projects/ruby-vpi/">Project portal</a>
|
153
157
|
– hosted generously by <a href="http://rubyforge.org">RubyForge</a>.</li>
|
154
158
|
</ul>
|
155
159
|
</div>
|
@@ -164,7 +168,7 @@
|
|
164
168
|
|
165
169
|
<div id="intro.features" class="section">
|
166
170
|
<h2 class="title">
|
167
|
-
<a href="#a-
|
171
|
+
<a href="#a-605842608">2.2</a>
|
168
172
|
|
169
173
|
|
170
174
|
|
@@ -177,7 +181,7 @@
|
|
177
181
|
<ul>
|
178
182
|
<li>Supports the <em>entire</em> <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945"><span class="caps">IEEE 1364</span>-2005 Verilog VPI</a> standard.</li>
|
179
183
|
<li>Works with all <a href="#intro.reqs">major Verilog simulators</a> available today.</li>
|
180
|
-
<li>Compiled <em>just once</em> during <a href="manual.html#setup.
|
184
|
+
<li>Compiled <em>just once</em> during <a href="manual.html#setup.inst">installation</a> and used forever!</li>
|
181
185
|
</ul>
|
182
186
|
</div>
|
183
187
|
|
@@ -198,7 +202,7 @@
|
|
198
202
|
<li>Eliminates unneccesary work:
|
199
203
|
<ul>
|
200
204
|
<li><a href="manual.html#usage.tutorial.specification">Specifications</a> are readable, portable, and <em>executable</em>.</li>
|
201
|
-
<li>The <a href="manual.html#usage.tools.generate
|
205
|
+
<li>The <a href="manual.html#usage.tools.generate">automated test generator</a> helps you accomodate design changes with <em>minimal</em> effort.</li>
|
202
206
|
<li>There is absolutely <em>no compiling</em>!</li>
|
203
207
|
</ul></li>
|
204
208
|
</ul>
|
@@ -235,7 +239,7 @@
|
|
235
239
|
|
236
240
|
<div id="intro.reqs" class="section">
|
237
241
|
<h2 class="title">
|
238
|
-
<a href="#a-
|
242
|
+
<a href="#a-607160758">2.3</a>
|
239
243
|
|
240
244
|
|
241
245
|
|
@@ -256,12 +260,12 @@
|
|
256
260
|
– any version that supports the <tt>-load</tt> option is acceptable.</li>
|
257
261
|
<li><a href="http://www.model.com">Mentor Modelsim</a>
|
258
262
|
– any version that supports the <tt>-pli</tt> option is acceptable.</li>
|
259
|
-
<li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim
|
260
|
-
– any version that supports the <tt>+loadvpi</tt> option is acceptable
|
263
|
+
<li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a>
|
264
|
+
– any version that supports the <tt>+loadvpi</tt> option 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>
|
261
265
|
<li><a href="http://www.pragmatic-c.com/gpl-cver/">GPL Cver</a>
|
262
266
|
– version 2.11a or newer is acceptable.</li>
|
263
|
-
<li><a href="http://www.
|
264
|
-
– version 0.8 is <em>mostly</em> acceptable
|
267
|
+
<li><a href="http://www.geda.seul.org/tools/icarus/index.html">Icarus Verilog</a>
|
268
|
+
– 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>
|
265
269
|
</ul>
|
266
270
|
</div>
|
267
271
|
|
@@ -273,8 +277,10 @@
|
|
273
277
|
– any flavor should be acceptable.</li>
|
274
278
|
<li>C compiler
|
275
279
|
– 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>
|
276
|
-
<li><a href="http://www.
|
277
|
-
– version 1.
|
280
|
+
<li><a href="http://www.swig.org/download.html">SWIG</a>
|
281
|
+
– version 1.3.29 or newer is necessary.</li>
|
282
|
+
<li><a href="http://www.ruby-lang.org/en/downloads/">Ruby</a>
|
283
|
+
– 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>
|
278
284
|
</ul>
|
279
285
|
</div>
|
280
286
|
|
@@ -299,7 +305,7 @@
|
|
299
305
|
|
300
306
|
<div id="intro.applications" class="section">
|
301
307
|
<h2 class="title">
|
302
|
-
<a href="#a-
|
308
|
+
<a href="#a-607163318">2.4</a>
|
303
309
|
|
304
310
|
|
305
311
|
|
@@ -345,7 +351,7 @@
|
|
345
351
|
|
346
352
|
<div id="intro.appetizers" class="section">
|
347
353
|
<h2 class="title">
|
348
|
-
<a href="#a-
|
354
|
+
<a href="#a-607165918">2.5</a>
|
349
355
|
|
350
356
|
|
351
357
|
|
@@ -413,14 +419,15 @@
|
|
413
419
|
|
414
420
|
<div id="intro.license" class="section">
|
415
421
|
<h2 class="title">
|
416
|
-
<a href="#a-
|
422
|
+
<a href="#a-607168788">2.6</a>
|
417
423
|
|
418
424
|
|
419
425
|
|
420
426
|
License
|
421
427
|
</h2>
|
422
428
|
|
423
|
-
<p>Copyright 2006 Suraj N. Kurapati <
|
429
|
+
<p>Copyright 2006 Suraj N. Kurapati <SNK at GNA dot ORG><br/>
|
430
|
+
Copyright 1999 Kazuhiro HIWADA <HIWADA at KUEE dot KYOTO-U dot AC dot JP><br/></p>
|
424
431
|
|
425
432
|
|
426
433
|
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of
|
@@ -431,13 +438,14 @@ the Software, and to permit persons to whom the Software is furnished to do so,
|
|
431
438
|
subject to the following conditions:</p>
|
432
439
|
|
433
440
|
|
434
|
-
<p>1. All
|
435
|
-
(the "Derivatives") and their corresponding machine-readable
|
436
|
-
"Code") must include the above copyright notice and this
|
441
|
+
<p>1. All copies and substantial portions of the Software, whether modified or
|
442
|
+
unmodified, (the "Derivatives") and their corresponding machine-readable
|
443
|
+
source code (the "Code") must include the above copyright notice and this
|
444
|
+
permission notice.</p>
|
437
445
|
|
438
446
|
|
439
|
-
<p>2.
|
440
|
-
|
447
|
+
<p>2. The Derivatives, upon distribution, must be accompanied by the Code or, if
|
448
|
+
the Code is obtainable for no more than the cost of distribution plus a
|
441
449
|
nominal fee, by information on how to obtain the Code.</p>
|
442
450
|
|
443
451
|
|
@@ -457,7 +465,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
457
465
|
|
458
466
|
<div id="intro.related-works" class="section">
|
459
467
|
<h2 class="title">
|
460
|
-
<a href="#a-
|
468
|
+
<a href="#a-607174178">2.7</a>
|
461
469
|
|
462
470
|
|
463
471
|
|
@@ -478,7 +486,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
478
486
|
|
479
487
|
<div id="intro.related-works.pli" class="section">
|
480
488
|
<h3 class="title">
|
481
|
-
<a href="#a-
|
489
|
+
<a href="#a-607171238">2.7.1</a>
|
482
490
|
|
483
491
|
|
484
492
|
|
@@ -505,7 +513,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
505
513
|
|
506
514
|
<div id="setup" class="chapter">
|
507
515
|
<h1 class="title">
|
508
|
-
Chapter <a href="#a-
|
516
|
+
Chapter <a href="#a-607242278">3</a>
|
509
517
|
|
510
518
|
<br/><br/>
|
511
519
|
|
@@ -517,7 +525,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
517
525
|
|
518
526
|
<div id="setup.manifest" class="section">
|
519
527
|
<h2 class="title">
|
520
|
-
<a href="#a-
|
528
|
+
<a href="#a-607204808">3.1</a>
|
521
529
|
|
522
530
|
|
523
531
|
|
@@ -543,7 +551,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
543
551
|
|
544
552
|
<div id="setup.reqs" class="section">
|
545
553
|
<h2 class="title">
|
546
|
-
<a href="#a-
|
554
|
+
<a href="#a-607210248">3.2</a>
|
547
555
|
|
548
556
|
|
549
557
|
|
@@ -560,7 +568,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
560
568
|
<div class="tip" id="Add_support_for_your_Verilog_simulator">
|
561
569
|
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
562
570
|
|
563
|
-
<p class="title"><a href="#a-
|
571
|
+
<p class="title"><a href="#a-607207278">Tip 1</a>. Add support for your Verilog simulator</p>
|
564
572
|
|
565
573
|
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!
|
566
574
|
</div>
|
@@ -574,7 +582,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
574
582
|
|
575
583
|
<div id="setup.recom" class="section">
|
576
584
|
<h2 class="title">
|
577
|
-
<a href="#a-
|
585
|
+
<a href="#a-607216418">3.3</a>
|
578
586
|
|
579
587
|
|
580
588
|
|
@@ -589,7 +597,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
589
597
|
|
590
598
|
<div id="setup.recom.merger" class="section">
|
591
599
|
<h3 class="title">
|
592
|
-
<a href="#a-
|
600
|
+
<a href="#a-607213078">3.3.1</a>
|
593
601
|
|
594
602
|
|
595
603
|
|
@@ -633,7 +641,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
633
641
|
|
634
642
|
<div id="setup.inst" class="section">
|
635
643
|
<h2 class="title">
|
636
|
-
<a href="#a-
|
644
|
+
<a href="#a-607225558">3.4</a>
|
637
645
|
|
638
646
|
|
639
647
|
|
@@ -647,7 +655,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
|
|
647
655
|
$ gem env gemdir
|
648
656
|
/usr/lib/ruby/gems/1.8
|
649
657
|
|
650
|
-
$ ls -d
|
658
|
+
$ ls -d `gem env gemdir`/gems/ruby-vpi*
|
651
659
|
/usr/lib/ruby/gems/1.8/gems/ruby-vpi-7.0.0/
|
652
660
|
</pre>
|
653
661
|
|
@@ -656,10 +664,10 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
|
|
656
664
|
<hr style="display: none"/>
|
657
665
|
|
658
666
|
<div class="admonition">
|
659
|
-
<div class="
|
660
|
-
<img src="images/tango/
|
667
|
+
<div class="tip" id="Tuning_for_maximum_performance">
|
668
|
+
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
661
669
|
|
662
|
-
<p class="title"><a href="#a-
|
670
|
+
<p class="title"><a href="#a-607218968">Tip 2</a>. Tuning for maximum performance</p>
|
663
671
|
|
664
672
|
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.
|
665
673
|
</div>
|
@@ -670,7 +678,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
|
|
670
678
|
|
671
679
|
<div id="setup.inst.windows" class="section">
|
672
680
|
<h3 class="title">
|
673
|
-
<a href="#a-
|
681
|
+
<a href="#a-607221498">3.4.1</a>
|
674
682
|
|
675
683
|
|
676
684
|
|
@@ -721,7 +729,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
|
|
721
729
|
|
722
730
|
<div id="setup.maintenance" class="section">
|
723
731
|
<h2 class="title">
|
724
|
-
<a href="#a-
|
732
|
+
<a href="#a-607227838">3.5</a>
|
725
733
|
|
726
734
|
|
727
735
|
|
@@ -745,7 +753,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
|
|
745
753
|
|
746
754
|
<div id="organization" class="chapter">
|
747
755
|
<h1 class="title">
|
748
|
-
Chapter <a href="#a-
|
756
|
+
Chapter <a href="#a-607196488">4</a>
|
749
757
|
|
750
758
|
<br/><br/>
|
751
759
|
|
@@ -765,7 +773,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
|
|
765
773
|
<div class="figure" id="fig:organization.detail">
|
766
774
|
|
767
775
|
|
768
|
-
<p class="title"><a href="#a-
|
776
|
+
<p class="title"><a href="#a-607244878">Figure 1</a>. Where does Ruby-VPI fit in?</p>
|
769
777
|
|
770
778
|
<img src="figures/organization_detailed.png" alt="" />
|
771
779
|
</div>
|
@@ -779,7 +787,7 @@ As <a href="#fig:organization.detail">Figure 1</a> shows, Ruby-VPI is composed o
|
|
779
787
|
|
780
788
|
<div id="overview.relay" class="section">
|
781
789
|
<h2 class="title">
|
782
|
-
<a href="#a-
|
790
|
+
<a href="#a-607251168">4.1</a>
|
783
791
|
|
784
792
|
|
785
793
|
|
@@ -802,7 +810,7 @@ As <a href="#fig:organization.detail">Figure 1</a> shows, Ruby-VPI is composed o
|
|
802
810
|
<div class="figure" id="fig:ruby_relay">
|
803
811
|
|
804
812
|
|
805
|
-
<p class="title"><a href="#a-
|
813
|
+
<p class="title"><a href="#a-607247688">Figure 2</a>. Interaction between Ruby and Verilog</p>
|
806
814
|
|
807
815
|
<img src="figures/ruby_relay.png" alt="" />
|
808
816
|
|
@@ -828,7 +836,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
828
836
|
|
829
837
|
<div id="organization.tests" class="section">
|
830
838
|
<h2 class="title">
|
831
|
-
<a href="#a-
|
839
|
+
<a href="#a-607256738">4.2</a>
|
832
840
|
|
833
841
|
|
834
842
|
|
@@ -845,7 +853,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
845
853
|
<div class="figure" id="fig:organization">
|
846
854
|
|
847
855
|
|
848
|
-
<p class="title"><a href="#a-
|
856
|
+
<p class="title"><a href="#a-607253638">Figure 3</a>. Organization of a test in Ruby-VPI</p>
|
849
857
|
|
850
858
|
<img src="figures/organization.png" alt="" />
|
851
859
|
</div>
|
@@ -868,7 +876,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
868
876
|
|
869
877
|
<div id="VPI_in_Ruby" class="section">
|
870
878
|
<h2 class="title">
|
871
|
-
<a href="#a-
|
879
|
+
<a href="#a-607326178">4.3</a>
|
872
880
|
|
873
881
|
|
874
882
|
|
@@ -880,7 +888,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
880
888
|
|
881
889
|
<div id="Deviations_from_the_VPI_standard" class="section">
|
882
890
|
<h3 class="title">
|
883
|
-
<a href="#a-
|
891
|
+
<a href="#a-607265658">4.3.1</a>
|
884
892
|
|
885
893
|
|
886
894
|
|
@@ -895,7 +903,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
895
903
|
|
896
904
|
<div id="Names_are_capitalized" class="section">
|
897
905
|
<h4 class="title">
|
898
|
-
<a href="#a-
|
906
|
+
<a href="#a-607259228">4.3.1.1</a>
|
899
907
|
|
900
908
|
|
901
909
|
|
@@ -916,7 +924,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
916
924
|
|
917
925
|
<div id="a_vprintf__is__printf_" class="section">
|
918
926
|
<h4 class="title">
|
919
|
-
<a href="#a-
|
927
|
+
<a href="#a-607261728">4.3.1.2</a>
|
920
928
|
|
921
929
|
|
922
930
|
|
@@ -927,7 +935,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
927
935
|
|
928
936
|
|
929
937
|
<ul>
|
930
|
-
<li>Ruby represents <a href="http://
|
938
|
+
<li>Ruby represents <a href="http://phrogz.net/ProgrammingRuby/tut_methods.html#variablelengthargumentlists">variable argument lists as arrays</a> instead of defining a special datatype, such as <code class="code">va_list</code>, for them.</li>
|
931
939
|
</ul>
|
932
940
|
|
933
941
|
|
@@ -953,7 +961,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
953
961
|
|
954
962
|
<div id="vpi.handles" class="section">
|
955
963
|
<h3 class="title">
|
956
|
-
<a href="#a-
|
964
|
+
<a href="#a-607291198">4.3.2</a>
|
957
965
|
|
958
966
|
|
959
967
|
|
@@ -982,7 +990,7 @@ Another means of transferring control from the specification to the Verilog simu
|
|
982
990
|
|
983
991
|
<div id="Accessing_a_handle_s_relatives" class="section">
|
984
992
|
<h4 class="title">
|
985
|
-
<a href="#a-
|
993
|
+
<a href="#a-607270878">4.3.2.2</a>
|
986
994
|
|
987
995
|
|
988
996
|
|
@@ -1019,7 +1027,7 @@ baz = vpi_handle_by_name( <span style="background-color:#fff0f0"><span style="co
|
|
1019
1027
|
|
1020
1028
|
<div id="Accessing_a_handle_s_properties" class="section">
|
1021
1029
|
<h4 class="title">
|
1022
|
-
<a href="#a-
|
1030
|
+
<a href="#a-607273818">4.3.2.3</a>
|
1023
1031
|
|
1024
1032
|
|
1025
1033
|
|
@@ -1062,7 +1070,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
1062
1070
|
<div class="figure" id="fig:method_naming_format">
|
1063
1071
|
|
1064
1072
|
|
1065
|
-
<p class="title"><a href="#a-
|
1073
|
+
<p class="title"><a href="#a-607276618">Figure 4</a>. Method naming format for accessing a handle’s properties</p>
|
1066
1074
|
|
1067
1075
|
<table>
|
1068
1076
|
<tr>
|
@@ -1115,7 +1123,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
1115
1123
|
<div class="table" id="tbl:accessors">
|
1116
1124
|
|
1117
1125
|
|
1118
|
-
<p class="title"><a href="#a-
|
1126
|
+
<p class="title"><a href="#a-607279048">Table 1</a>. Possible accessors and their implications</p>
|
1119
1127
|
|
1120
1128
|
<table>
|
1121
1129
|
<tr>
|
@@ -1169,7 +1177,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
1169
1177
|
<div class="table" id="ex:properties">
|
1170
1178
|
|
1171
1179
|
|
1172
|
-
<p class="title"><a href="#a-
|
1180
|
+
<p class="title"><a href="#a-607281988">Table 2</a>. Examples of accessing a handle’s properties</p>
|
1173
1181
|
|
1174
1182
|
<table>
|
1175
1183
|
<tr>
|
@@ -1494,7 +1502,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
1494
1502
|
|
1495
1503
|
<div id="vpi.callbacks" class="section">
|
1496
1504
|
<h3 class="title">
|
1497
|
-
<a href="#a-
|
1505
|
+
<a href="#a-607299628">4.3.3</a>
|
1498
1506
|
|
1499
1507
|
|
1500
1508
|
|
@@ -1514,7 +1522,7 @@ result = wrapper.value.str.to_i( <span style="color:#00D; font-weight:bold">16</
|
|
1514
1522
|
<div class="example" id="ex:callback">
|
1515
1523
|
|
1516
1524
|
|
1517
|
-
<p class="title"><a href="#a-
|
1525
|
+
<p class="title"><a href="#a-607295148">Example 1</a>. Using a callback for value change notification</p>
|
1518
1526
|
|
1519
1527
|
<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>
|
1520
1528
|
|
@@ -1563,7 +1571,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
1563
1571
|
|
1564
1572
|
<div id="usage" class="chapter">
|
1565
1573
|
<h1 class="title">
|
1566
|
-
Chapter <a href="#a-
|
1574
|
+
Chapter <a href="#a-607334198">5</a>
|
1567
1575
|
|
1568
1576
|
<br/><br/>
|
1569
1577
|
|
@@ -1575,7 +1583,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
1575
1583
|
|
1576
1584
|
<div id="usage.prototyping" class="section">
|
1577
1585
|
<h2 class="title">
|
1578
|
-
<a href="#a-
|
1586
|
+
<a href="#a-607215298">5.1</a>
|
1579
1587
|
|
1580
1588
|
|
1581
1589
|
|
@@ -1617,7 +1625,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
1617
1625
|
|
1618
1626
|
<div id="How_does_prototyping_work_" class="section">
|
1619
1627
|
<h3 class="title">
|
1620
|
-
<a href="#a-
|
1628
|
+
<a href="#a-607205498">5.1.2</a>
|
1621
1629
|
|
1622
1630
|
|
1623
1631
|
|
@@ -1639,7 +1647,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
1639
1647
|
|
1640
1648
|
<div id="usage.debugger" class="section">
|
1641
1649
|
<h2 class="title">
|
1642
|
-
<a href="#a-
|
1650
|
+
<a href="#a-607224358">5.2</a>
|
1643
1651
|
|
1644
1652
|
|
1645
1653
|
|
@@ -1660,7 +1668,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
1660
1668
|
|
1661
1669
|
<div id="usage.debugger.init" class="section">
|
1662
1670
|
<h3 class="title">
|
1663
|
-
<a href="#a-
|
1671
|
+
<a href="#a-607219398">5.2.1</a>
|
1664
1672
|
|
1665
1673
|
|
1666
1674
|
|
@@ -1685,7 +1693,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
1685
1693
|
|
1686
1694
|
<div id="usage.test-runner" class="section">
|
1687
1695
|
<h2 class="title">
|
1688
|
-
<a href="#a-
|
1696
|
+
<a href="#a-607246938">5.3</a>
|
1689
1697
|
|
1690
1698
|
|
1691
1699
|
|
@@ -1698,7 +1706,7 @@ cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do
|
|
1698
1706
|
<p>When you invoke a test runner without any arguments, it will show you a list of available tasks:
|
1699
1707
|
<pre>$ rake -f your_test_runner.rake
|
1700
1708
|
|
1701
|
-
(in /home/sun/
|
1709
|
+
(in /home/sun/src/ruby-vpi/doc)
|
1702
1710
|
rake clean # Remove any temporary products.
|
1703
1711
|
rake clobber # Remove any generated file.
|
1704
1712
|
rake cver # Simulate with GPL Cver.
|
@@ -1715,7 +1723,7 @@ rake vsim # Simulate with Mentor Modelsim.
|
|
1715
1723
|
|
1716
1724
|
<div id="usage.test-runner.env-vars" class="section">
|
1717
1725
|
<h3 class="title">
|
1718
|
-
<a href="#a-
|
1726
|
+
<a href="#a-607236808">5.3.1</a>
|
1719
1727
|
|
1720
1728
|
|
1721
1729
|
|
@@ -1762,7 +1770,7 @@ rake
|
|
1762
1770
|
<div class="example" id="Running_a_test_with_environment_variables">
|
1763
1771
|
|
1764
1772
|
|
1765
|
-
<p class="title"><a href="#a-
|
1773
|
+
<p class="title"><a href="#a-607232388">Example 2</a>. Running a test with environment variables</p>
|
1766
1774
|
|
1767
1775
|
<p>Below, we enable the prototype and code coverage analysis:
|
1768
1776
|
<pre>rake -f your_test_runner.rake PROTOTYPE=1 COVERAGE=1</pre></p>
|
@@ -1786,7 +1794,7 @@ rake
|
|
1786
1794
|
|
1787
1795
|
<div id="usage.tools" class="section">
|
1788
1796
|
<h2 class="title">
|
1789
|
-
<a href="#a-
|
1797
|
+
<a href="#a-607278778">5.4</a>
|
1790
1798
|
|
1791
1799
|
|
1792
1800
|
|
@@ -1822,7 +1830,7 @@ Simulators:
|
|
1822
1830
|
|
1823
1831
|
<div id="usage.tools.generate" class="section">
|
1824
1832
|
<h3 class="title">
|
1825
|
-
<a href="#a-
|
1833
|
+
<a href="#a-607262938">5.4.1</a>
|
1826
1834
|
|
1827
1835
|
|
1828
1836
|
|
@@ -1852,7 +1860,7 @@ A Ruby-VPI test is composed of the following files:
|
|
1852
1860
|
<div class="caution" id="Do_not_rename_generated_files">
|
1853
1861
|
<img src="images/tango/caution.png" alt="caution" class="icon"/>
|
1854
1862
|
|
1855
|
-
<p class="title"><a href="#a-
|
1863
|
+
<p class="title"><a href="#a-607250958">Caution 1</a>. Do not rename generated files</p>
|
1856
1864
|
|
1857
1865
|
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.
|
1858
1866
|
</div>
|
@@ -1871,7 +1879,7 @@ By producing multiple files, the automated test generator physically decouples t
|
|
1871
1879
|
<div class="tip" id="Using__kdiff3__with_the_automated_test_generator.">
|
1872
1880
|
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
1873
1881
|
|
1874
|
-
<p class="title"><a href="#a-
|
1882
|
+
<p class="title"><a href="#a-607255718">Tip 3</a>. Using <strong>kdiff3</strong> with the automated test generator.</p>
|
1875
1883
|
|
1876
1884
|
<ol>
|
1877
1885
|
<li>Create a file named <tt>merge2</tt> with the following content: <pre class="code">
|
@@ -1897,7 +1905,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
1897
1905
|
|
1898
1906
|
<div id="usage.tools.convert" class="section">
|
1899
1907
|
<h3 class="title">
|
1900
|
-
<a href="#a-
|
1908
|
+
<a href="#a-607265448">5.4.2</a>
|
1901
1909
|
|
1902
1910
|
|
1903
1911
|
|
@@ -1919,14 +1927,14 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
1919
1927
|
|
1920
1928
|
<div id="usage.examples" class="section">
|
1921
1929
|
<h2 class="title">
|
1922
|
-
<a href="#a-
|
1930
|
+
<a href="#a-607282618">5.5</a>
|
1923
1931
|
|
1924
1932
|
|
1925
1933
|
|
1926
1934
|
Sample tests
|
1927
1935
|
</h2>
|
1928
1936
|
|
1929
|
-
The <tt>samp</tt> directory 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.
|
1937
|
+
The <tt>samp</tt> directory (<a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi//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.
|
1930
1938
|
|
1931
1939
|
</div>
|
1932
1940
|
|
@@ -1935,7 +1943,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
1935
1943
|
|
1936
1944
|
<div id="usage.tutorial" class="section">
|
1937
1945
|
<h2 class="title">
|
1938
|
-
<a href="#a-
|
1946
|
+
<a href="#a-607395798">5.6</a>
|
1939
1947
|
|
1940
1948
|
|
1941
1949
|
|
@@ -1958,7 +1966,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
1958
1966
|
|
1959
1967
|
<div id="usage.tutorial.declare-design" class="section">
|
1960
1968
|
<h3 class="title">
|
1961
|
-
<a href="#a-
|
1969
|
+
<a href="#a-607290888">5.6.1</a>
|
1962
1970
|
|
1963
1971
|
|
1964
1972
|
|
@@ -1983,7 +1991,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
|
|
1983
1991
|
<div class="example" id="fig:counter.v_decl">
|
1984
1992
|
|
1985
1993
|
|
1986
|
-
<p class="title"><a href="#a-
|
1994
|
+
<p class="title"><a href="#a-607287308">Example 3</a>. Declaration of a simple up-counter with synchronous reset</p>
|
1987
1995
|
|
1988
1996
|
<pre class="code" lang="verilog">
|
1989
1997
|
module counter #(parameter Size = 5) (
|
@@ -2007,7 +2015,7 @@ Before we continue, save the source code shown in <a href="#fig:counter.v_decl">
|
|
2007
2015
|
|
2008
2016
|
<div id="usage.tutorial.generate-test" class="section">
|
2009
2017
|
<h3 class="title">
|
2010
|
-
<a href="#a-
|
2018
|
+
<a href="#a-607305468">5.6.2</a>
|
2011
2019
|
|
2012
2020
|
|
2013
2021
|
|
@@ -2043,7 +2051,7 @@ $ cp counter.v xUnit
|
|
2043
2051
|
<div class="example" id="fig:generate-test.RSpec">
|
2044
2052
|
|
2045
2053
|
|
2046
|
-
<p class="title"><a href="#a-
|
2054
|
+
<p class="title"><a href="#a-607296778">Example 4</a>. Generating a test with specification in RSpec format</p>
|
2047
2055
|
|
2048
2056
|
<pre>
|
2049
2057
|
$ ruby-vpi generate counter.v --RSpec
|
@@ -2065,7 +2073,7 @@ $ ruby-vpi generate counter.v --RSpec
|
|
2065
2073
|
<div class="example" id="fig:generate-test.xUnit">
|
2066
2074
|
|
2067
2075
|
|
2068
|
-
<p class="title"><a href="#a-
|
2076
|
+
<p class="title"><a href="#a-607299658">Example 5</a>. Generating a test with specification in xUnit format</p>
|
2069
2077
|
|
2070
2078
|
<pre>
|
2071
2079
|
$ ruby-vpi generate counter.v --xUnit
|
@@ -2090,7 +2098,7 @@ $ ruby-vpi generate counter.v --xUnit
|
|
2090
2098
|
|
2091
2099
|
<div id="usage.tutorial.specification" class="section">
|
2092
2100
|
<h3 class="title">
|
2093
|
-
<a href="#a-
|
2101
|
+
<a href="#a-607315968">5.6.3</a>
|
2094
2102
|
|
2095
2103
|
|
2096
2104
|
|
@@ -2118,7 +2126,7 @@ Here are some reasonable expectations for our simple counter:
|
|
2118
2126
|
<div class="example" id="fig:RSpec_counter_spec.rb">
|
2119
2127
|
|
2120
2128
|
|
2121
|
-
<p class="title"><a href="#a-
|
2129
|
+
<p class="title"><a href="#a-607308538">Example 6</a>. Specification implemented in RSpec format</p>
|
2122
2130
|
|
2123
2131
|
<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>
|
2124
2132
|
|
@@ -2170,7 +2178,7 @@ describe <span style="background-color:#fff0f0"><span style="color:#710">"<
|
|
2170
2178
|
<div class="example" id="fig:xUnit_counter_spec.rb">
|
2171
2179
|
|
2172
2180
|
|
2173
|
-
<p class="title"><a href="#a-
|
2181
|
+
<p class="title"><a href="#a-607310978">Example 7</a>. Specification implemented in xUnit format</p>
|
2174
2182
|
|
2175
2183
|
<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>
|
2176
2184
|
|
@@ -2219,22 +2227,6 @@ Before we continue,
|
|
2219
2227
|
<ol>
|
2220
2228
|
<li>Replace the contents of the file named <tt>RSpec/counter_spec.rb</tt> with the source code shown in <a href="#fig:RSpec_counter_spec.rb">Example 6</a>.</li>
|
2221
2229
|
<li>Replace the contents of the file named <tt>xUnit/counter_spec.rb</tt> with the source code shown in <a href="#fig:xUnit_counter_spec.rb">Example 7</a>.</li>
|
2222
|
-
<li>Replace the contents of the files named <tt>RSpec/counter_design.rb</tt> and <tt>xUnit/counter_design.rb</tt> with the following code. <pre class="code">
|
2223
|
-
<span style="color:#888"># Simulates the design under test for one clock cycle.</span>
|
2224
|
-
<span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">cycle!</span>
|
2225
|
-
clock.high!
|
2226
|
-
advance_time
|
2227
|
-
clock.low!
|
2228
|
-
advance_time
|
2229
|
-
<span style="color:#080; font-weight:bold">end</span>
|
2230
|
-
|
2231
|
-
<span style="color:#888"># Brings the design under test into a blank state.</span>
|
2232
|
-
<span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">reset!</span>
|
2233
|
-
reset.high!
|
2234
|
-
cycle!
|
2235
|
-
reset.low!
|
2236
|
-
<span style="color:#080; font-weight:bold">end</span>
|
2237
|
-
</pre></li>
|
2238
2230
|
</ol>
|
2239
2231
|
|
2240
2232
|
</div>
|
@@ -2246,7 +2238,7 @@ Before we continue,
|
|
2246
2238
|
|
2247
2239
|
<div id="usage.tutorial.implement-proto" class="section">
|
2248
2240
|
<h3 class="title">
|
2249
|
-
<a href="#a-
|
2241
|
+
<a href="#a-607322378">5.6.4</a>
|
2250
2242
|
|
2251
2243
|
|
2252
2244
|
|
@@ -2263,7 +2255,7 @@ Before we continue,
|
|
2263
2255
|
<div class="example" id="fig:counter_proto.rb">
|
2264
2256
|
|
2265
2257
|
|
2266
|
-
<p class="title"><a href="#a-
|
2258
|
+
<p class="title"><a href="#a-607318638">Example 8</a>. Ruby prototype of our Verilog design</p>
|
2267
2259
|
|
2268
2260
|
<pre class="code"><span style="color:#888"># Ruby prototype of the design under test's Verilog implementation.</span>
|
2269
2261
|
<span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">feign!</span>
|
@@ -2290,7 +2282,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter_pr
|
|
2290
2282
|
|
2291
2283
|
<div id="usage.tutorial.test-proto" class="section">
|
2292
2284
|
<h3 class="title">
|
2293
|
-
<a href="#a-
|
2285
|
+
<a href="#a-607341078">5.6.5</a>
|
2294
2286
|
|
2295
2287
|
|
2296
2288
|
|
@@ -2310,7 +2302,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter_pr
|
|
2310
2302
|
<div class="example" id="fig:test-proto.RSpec">
|
2311
2303
|
|
2312
2304
|
|
2313
|
-
<p class="title"><a href="#a-
|
2305
|
+
<p class="title"><a href="#a-607325878">Example 9</a>. Running a test with specification in RSpec format</p>
|
2314
2306
|
|
2315
2307
|
<pre>
|
2316
2308
|
$ cd RSpec
|
@@ -2334,7 +2326,7 @@ cd -
|
|
2334
2326
|
<div class="example" id="fig:test-proto.unit-test">
|
2335
2327
|
|
2336
2328
|
|
2337
|
-
<p class="title"><a href="#a-
|
2329
|
+
<p class="title"><a href="#a-607330448">Example 10</a>. Running a test with specification in xUnit format</p>
|
2338
2330
|
|
2339
2331
|
<pre>
|
2340
2332
|
$ cd xUnit
|
@@ -2358,7 +2350,7 @@ Finished in 0.043859 seconds.
|
|
2358
2350
|
<div class="tip" id="What_can_the_test_runner_do_">
|
2359
2351
|
<img src="images/tango/tip.png" alt="tip" class="icon"/>
|
2360
2352
|
|
2361
|
-
<p class="title"><a href="#a-
|
2353
|
+
<p class="title"><a href="#a-607335018">Tip 4</a>. What can the test runner do?</p>
|
2362
2354
|
|
2363
2355
|
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.
|
2364
2356
|
</div>
|
@@ -2374,7 +2366,7 @@ Finished in 0.043859 seconds.
|
|
2374
2366
|
|
2375
2367
|
<div id="usage.tutorial.implement-design" class="section">
|
2376
2368
|
<h3 class="title">
|
2377
|
-
<a href="#a-
|
2369
|
+
<a href="#a-607349478">5.6.6</a>
|
2378
2370
|
|
2379
2371
|
|
2380
2372
|
|
@@ -2391,7 +2383,7 @@ Finished in 0.043859 seconds.
|
|
2391
2383
|
<div class="example" id="fig:counter.v_impl">
|
2392
2384
|
|
2393
2385
|
|
2394
|
-
<p class="title"><a href="#a-
|
2386
|
+
<p class="title"><a href="#a-607343828">Example 11</a>. Implementation of a simple up-counter with synchronous reset</p>
|
2395
2387
|
|
2396
2388
|
<pre class="code" lang="verilog">/**
|
2397
2389
|
A simple up-counter with synchronous reset.
|
@@ -2428,7 +2420,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter.v<
|
|
2428
2420
|
|
2429
2421
|
<div id="usage.tutorial.test-design" class="section">
|
2430
2422
|
<h3 class="title">
|
2431
|
-
<a href="#a-
|
2423
|
+
<a href="#a-607359608">5.6.7</a>
|
2432
2424
|
|
2433
2425
|
|
2434
2426
|
|
@@ -2448,7 +2440,7 @@ Before we continue, replace the contents of the files named <tt>RSpec/counter.v<
|
|
2448
2440
|
<div class="example" id="fig:test-design.RSpec">
|
2449
2441
|
|
2450
2442
|
|
2451
|
-
<p class="title"><a href="#a-
|
2443
|
+
<p class="title"><a href="#a-607352688">Example 12</a>. Running a test with specification in RSpec format</p>
|
2452
2444
|
|
2453
2445
|
<pre>
|
2454
2446
|
$ cd RSpec
|
@@ -2470,7 +2462,7 @@ Finished in 0.041198 seconds
|
|
2470
2462
|
<div class="example" id="fig:test-design.unit-test">
|
2471
2463
|
|
2472
2464
|
|
2473
|
-
<p class="title"><a href="#a-
|
2465
|
+
<p class="title"><a href="#a-607355168">Example 13</a>. Running a test with specification in xUnit format</p>
|
2474
2466
|
|
2475
2467
|
<pre>
|
2476
2468
|
$ cd xUnit
|
@@ -2499,7 +2491,7 @@ Finished in 0.040262 seconds.
|
|
2499
2491
|
|
2500
2492
|
<div id="hacking" class="chapter">
|
2501
2493
|
<h1 class="title">
|
2502
|
-
Chapter <a href="#a-
|
2494
|
+
Chapter <a href="#a-607351098">6</a>
|
2503
2495
|
|
2504
2496
|
<br/><br/>
|
2505
2497
|
|
@@ -2511,7 +2503,7 @@ Finished in 0.040262 seconds.
|
|
2511
2503
|
|
2512
2504
|
<div id="hacking.scm" class="section">
|
2513
2505
|
<h2 class="title">
|
2514
|
-
<a href="#a-
|
2506
|
+
<a href="#a-607337768">6.1</a>
|
2515
2507
|
|
2516
2508
|
|
2517
2509
|
|
@@ -2532,7 +2524,7 @@ Finished in 0.040262 seconds.
|
|
2532
2524
|
|
2533
2525
|
<div id="hacking.release-packages" class="section">
|
2534
2526
|
<h2 class="title">
|
2535
|
-
<a href="#a-
|
2527
|
+
<a href="#a-607340498">6.2</a>
|
2536
2528
|
|
2537
2529
|
|
2538
2530
|
|
@@ -2560,7 +2552,7 @@ Finished in 0.040262 seconds.
|
|
2560
2552
|
|
2561
2553
|
<div id="hacking.manual" class="section">
|
2562
2554
|
<h2 class="title">
|
2563
|
-
<a href="#a-
|
2555
|
+
<a href="#a-607344628">6.3</a>
|
2564
2556
|
|
2565
2557
|
|
2566
2558
|
|
@@ -2578,7 +2570,7 @@ Finished in 0.040262 seconds.
|
|
2578
2570
|
|
2579
2571
|
<div id="problems" class="chapter">
|
2580
2572
|
<h1 class="title">
|
2581
|
-
Chapter <a href="#a-
|
2573
|
+
Chapter <a href="#a-607417768">7</a>
|
2582
2574
|
|
2583
2575
|
<br/><br/>
|
2584
2576
|
|
@@ -2593,26 +2585,29 @@ Finished in 0.040262 seconds.
|
|
2593
2585
|
|
2594
2586
|
<div id="problem.ivl" class="section">
|
2595
2587
|
<h2 class="title">
|
2596
|
-
<a href="#a-
|
2588
|
+
<a href="#a-607385318">7.1</a>
|
2597
2589
|
|
2598
2590
|
|
2599
2591
|
|
2600
2592
|
Icarus Verilog
|
2601
2593
|
</h2>
|
2602
2594
|
|
2603
|
-
|
2604
|
-
<hr style="display: none"/>
|
2595
|
+
<p>The following sections describe problems that occur when Icarus Verilog is used with Ruby-VPI.</p>
|
2605
2596
|
|
2606
|
-
<div id="problems.ivl.vpi_handle_by_name.absolute-paths" class="section">
|
2607
|
-
<h3 class="title">
|
2608
|
-
<a href="#a-607339198">7.1.1</a>
|
2609
2597
|
|
2610
|
-
|
2598
|
+
<p>
|
2599
|
+
<hr style="display: none"/>
|
2611
2600
|
|
2612
|
-
|
2613
|
-
|
2601
|
+
<div id="problems.ivl.vpi_handle_by_name.absolute-paths" class="section">
|
2602
|
+
<h3 class="title">
|
2603
|
+
<a href="#a-607359978">7.1.1</a>
|
2604
|
+
|
2605
|
+
|
2614
2606
|
|
2615
|
-
|
2607
|
+
Give full paths to Verilog objects
|
2608
|
+
</h3>
|
2609
|
+
|
2610
|
+
<p>In version 0.8 and snapshot 20061009 of Icarus Verilog, the <code class="code">vpi_handle_by_name</code> function requires an <em>absolute</em> path (including the name of the bench which instantiates the design) to a Verilog object. In addition, <code class="code">vpi_handle_by_name</code> always returns <code class="code"><span style="color:#038; font-weight:bold">nil</span></code> when its second parameter is specified.</p>
|
2616
2611
|
|
2617
2612
|
|
2618
2613
|
<p>For example, consider <a href="#ex:TestFoo">Example 14</a>. Here, one must write <code class="code">vpi_handle_by_name(<span style="background-color:#fff0f0"><span style="color:#710">"</span><span style="color:#D20">TestFoo.my_foo.clk</span><span style="color:#710">"</span></span>, <span style="color:#038; font-weight:bold">nil</span>)</code> instead of <code class="code">vpi_handle_by_name(<span style="background-color:#fff0f0"><span style="color:#710">"</span><span style="color:#D20">my_foo.clk</span><span style="color:#710">"</span></span>, <span style="color:#036; font-weight:bold">TestFoo</span>)</code> in order to access the <code class="code">clk</code> input of the <code class="code">my_foo</code> module instance.</p>
|
@@ -2625,7 +2620,7 @@ Finished in 0.040262 seconds.
|
|
2625
2620
|
<div class="example" id="ex:TestFoo">
|
2626
2621
|
|
2627
2622
|
|
2628
|
-
<p class="title"><a href="#a-
|
2623
|
+
<p class="title"><a href="#a-607355728">Example 14</a>. Part of a bench which instantiates a Verilog design</p>
|
2629
2624
|
|
2630
2625
|
<pre class="code" lang="verilog">
|
2631
2626
|
module TestFoo;
|
@@ -2637,14 +2632,14 @@ endmodule
|
|
2637
2632
|
</div>
|
2638
2633
|
</p>
|
2639
2634
|
|
2640
|
-
</div>
|
2641
|
-
|
2635
|
+
</div>
|
2636
|
+
|
2642
2637
|
|
2643
2638
|
<hr style="display: none"/>
|
2644
2639
|
|
2645
2640
|
<div id="problems.ivl.vpi_handle_by_name.connect-registers" class="section">
|
2646
2641
|
<h3 class="title">
|
2647
|
-
<a href="#a-
|
2642
|
+
<a href="#a-607371468">7.1.2</a>
|
2648
2643
|
|
2649
2644
|
|
2650
2645
|
|
@@ -2667,7 +2662,7 @@ endmodule
|
|
2667
2662
|
<div class="example" id="ex:TestFoo_bad">
|
2668
2663
|
|
2669
2664
|
|
2670
|
-
<p class="title"><a href="#a-
|
2665
|
+
<p class="title"><a href="#a-607364178">Example 15</a>. Bad design with unconnected registers</p>
|
2671
2666
|
|
2672
2667
|
Here the <code class="code">clk_reg</code> register is not connected to anything.
|
2673
2668
|
|
@@ -2687,7 +2682,7 @@ endmodule
|
|
2687
2682
|
<div class="example" id="ex:TestFoo_fix">
|
2688
2683
|
|
2689
2684
|
|
2690
|
-
<p class="title"><a href="#a-
|
2685
|
+
<p class="title"><a href="#a-607366888">Example 16</a>. Fixed design with wired registers</p>
|
2691
2686
|
|
2692
2687
|
Here the <code class="code">clk_reg</code> register is connected to the <code class="code">clk_wire</code> wire.
|
2693
2688
|
|
@@ -2706,21 +2701,61 @@ endmodule
|
|
2706
2701
|
</div>
|
2707
2702
|
|
2708
2703
|
|
2704
|
+
<hr style="display: none"/>
|
2705
|
+
|
2706
|
+
<div id="problems.ivl.vpi_reset" class="section">
|
2707
|
+
<h3 class="title">
|
2708
|
+
<a href="#a-607373948">7.1.3</a>
|
2709
|
+
|
2710
|
+
|
2711
|
+
|
2712
|
+
Vpi::reset
|
2713
|
+
</h3>
|
2714
|
+
|
2715
|
+
In version 0.8 of Icarus Verilog, the <code class="code">vpi_control(vpiReset)</code> VPI function causes an assertion to fail inside the simulator. As a result, the simulation terminates and a core dump is produced.
|
2716
|
+
|
2717
|
+
</div>
|
2718
|
+
</p>
|
2719
|
+
|
2709
2720
|
</div>
|
2710
2721
|
|
2711
2722
|
|
2712
2723
|
<hr style="display: none"/>
|
2713
2724
|
|
2714
|
-
<div id="
|
2725
|
+
<div id="problem.ncsim" class="section">
|
2715
2726
|
<h2 class="title">
|
2716
|
-
<a href="#a-
|
2727
|
+
<a href="#a-607390998">7.2</a>
|
2717
2728
|
|
2718
2729
|
|
2719
2730
|
|
2720
|
-
|
2731
|
+
Cadence NC-Sim
|
2721
2732
|
</h2>
|
2722
2733
|
|
2723
|
-
|
2734
|
+
<p>The following sections describe problems that occur when Cadence NC-Sim (version 05.83-s003) is used with Ruby-VPI.</p>
|
2735
|
+
|
2736
|
+
|
2737
|
+
<p>
|
2738
|
+
<hr style="display: none"/>
|
2739
|
+
|
2740
|
+
<div id="problem.ncsim.vpiForceFlag" class="section">
|
2741
|
+
<h3 class="title">
|
2742
|
+
<a href="#a-607387788">7.2.1</a>
|
2743
|
+
|
2744
|
+
|
2745
|
+
|
2746
|
+
Cannot force values onto handles
|
2747
|
+
</h3>
|
2748
|
+
|
2749
|
+
<p>When you write to a handle’s value using <code class="code">vpi_put_value()</code> with the <code class="code"><span style="color:#036; font-weight:bold">VpiForceFlag</span></code> propagation parameter, it does not have any effect. As a result, the “register_file” sample test fails when you run it with NC-Sim.</p>
|
2750
|
+
|
2751
|
+
|
2752
|
+
<p>This might be a bug in NC-Sim itself: even though I specified the “+access+rwc” command-line option for NC-Sim, I’m thinking that the force/release capability is not really enabled. However, it’s more likely that there’s a bug in the “register_file” sample test.</p>
|
2753
|
+
|
2754
|
+
|
2755
|
+
<p>If you happen to know the solution, please tell me either on the project forums or via e-mail (see the LICENSE file for my e-mail address). Thanks.</p>
|
2756
|
+
|
2757
|
+
</div>
|
2758
|
+
</p>
|
2724
2759
|
|
2725
2760
|
</div>
|
2726
2761
|
</p>
|
@@ -2731,7 +2766,7 @@ endmodule
|
|
2731
2766
|
|
2732
2767
|
<div id="glossary" class="chapter">
|
2733
2768
|
<h1 class="title">
|
2734
|
-
Chapter <a href="#a-
|
2769
|
+
Chapter <a href="#a-607450218">8</a>
|
2735
2770
|
|
2736
2771
|
<br/><br/>
|
2737
2772
|
|
@@ -2743,7 +2778,7 @@ endmodule
|
|
2743
2778
|
|
2744
2779
|
<div id="glossary.test" class="section">
|
2745
2780
|
<h2 class="title">
|
2746
|
-
<a href="#a-
|
2781
|
+
<a href="#a-607420598">8.1</a>
|
2747
2782
|
|
2748
2783
|
|
2749
2784
|
|
@@ -2759,7 +2794,7 @@ endmodule
|
|
2759
2794
|
|
2760
2795
|
<div id="glossary.design" class="section">
|
2761
2796
|
<h2 class="title">
|
2762
|
-
<a href="#a-
|
2797
|
+
<a href="#a-607423098">8.2</a>
|
2763
2798
|
|
2764
2799
|
|
2765
2800
|
|
@@ -2775,7 +2810,7 @@ endmodule
|
|
2775
2810
|
|
2776
2811
|
<div id="glossary.specification" class="section">
|
2777
2812
|
<h2 class="title">
|
2778
|
-
<a href="#a-
|
2813
|
+
<a href="#a-607425858">8.3</a>
|
2779
2814
|
|
2780
2815
|
|
2781
2816
|
|
@@ -2791,7 +2826,7 @@ endmodule
|
|
2791
2826
|
|
2792
2827
|
<div id="glossary.expectation" class="section">
|
2793
2828
|
<h2 class="title">
|
2794
|
-
<a href="#a-
|
2829
|
+
<a href="#a-607428078">8.4</a>
|
2795
2830
|
|
2796
2831
|
|
2797
2832
|
|
@@ -2807,7 +2842,7 @@ endmodule
|
|
2807
2842
|
|
2808
2843
|
<div id="glossary.handle" class="section">
|
2809
2844
|
<h2 class="title">
|
2810
|
-
<a href="#a-
|
2845
|
+
<a href="#a-607430558">8.5</a>
|
2811
2846
|
|
2812
2847
|
|
2813
2848
|
|
@@ -2823,7 +2858,7 @@ endmodule
|
|
2823
2858
|
|
2824
2859
|
<div id="glossary.rake" class="section">
|
2825
2860
|
<h2 class="title">
|
2826
|
-
<a href="#a-
|
2861
|
+
<a href="#a-607432818">8.6</a>
|
2827
2862
|
|
2828
2863
|
|
2829
2864
|
|
@@ -2844,7 +2879,7 @@ endmodule
|
|
2844
2879
|
|
2845
2880
|
<div id="glossary.RSpec" class="section">
|
2846
2881
|
<h2 class="title">
|
2847
|
-
<a href="#a-
|
2882
|
+
<a href="#a-607435358">8.7</a>
|
2848
2883
|
|
2849
2884
|
|
2850
2885
|
|
@@ -2854,7 +2889,7 @@ endmodule
|
|
2854
2889
|
<p>The <a href="#glossary.BDD">BDD</a> framework for Ruby.</p>
|
2855
2890
|
|
2856
2891
|
|
2857
|
-
<p>See the <a href="http://rspec.rubyforge.org">RSpec website</a> and <a href="http://rspec.rubyforge.org/
|
2892
|
+
<p>See the <a href="http://rspec.rubyforge.org">RSpec website</a> and <a href="http://rspec.rubyforge.org/documentation/index.html">tutorial</a> for more information.</p>
|
2858
2893
|
|
2859
2894
|
</div>
|
2860
2895
|
|
@@ -2863,7 +2898,7 @@ endmodule
|
|
2863
2898
|
|
2864
2899
|
<div id="glossary.TDD" class="section">
|
2865
2900
|
<h2 class="title">
|
2866
|
-
<a href="#a-
|
2901
|
+
<a href="#a-607437618">8.8</a>
|
2867
2902
|
|
2868
2903
|
|
2869
2904
|
|
@@ -2882,7 +2917,7 @@ endmodule
|
|
2882
2917
|
|
2883
2918
|
<div id="glossary.BDD" class="section">
|
2884
2919
|
<h2 class="title">
|
2885
|
-
<a href="#a-
|
2920
|
+
<a href="#a-607439878">8.9</a>
|
2886
2921
|
|
2887
2922
|
|
2888
2923
|
|
@@ -2902,52 +2937,49 @@ endmodule
|
|
2902
2937
|
<hr style="display: none"/>
|
2903
2938
|
<div id="toc">
|
2904
2939
|
<h1 id="toc:contents">Contents</h1>
|
2905
|
-
<ul><li><span class="hide">1 </span><a id="a-
|
2940
|
+
<ul><li><span class="hide">1 </span><a id="a-606440488" href="#Ruby-VPI_18.0.0_user_manual">Ruby-VPI 18.0.0 user manual</a><ul><li><span class="hide">1.1 </span><a id="a-606415398" href="#About_this_manual">About this manual</a></li><li><span class="hide">1.2 </span><a id="a-606424618" href="#Legal_notice">Legal notice</a></li></ul></li><li><span class="hide">2 </span><a id="a-607201618" href="#intro">Welcome</a><ul><li><span class="hide">2.1 </span><a id="a-605996598" href="#resources">Resources</a><ul><li><span class="hide">2.1.1 </span><a id="a-606452258" href="#Records">Records</a></li><li><span class="hide">2.1.2 </span><a id="a-606462328" href="#Documentation">Documentation</a></li><li><span class="hide">2.1.3 </span><a id="a-605931928" href="#Facilities">Facilities</a></li></ul></li><li><span class="hide">2.2 </span><a id="a-605842608" href="#intro.features">Features</a><ul><li><span class="hide">2.2.1 </span><a id="a-606012168" href="#Portable">Portable</a></li><li><span class="hide">2.2.2 </span><a id="a-606021388" href="#Agile">Agile</a></li><li><span class="hide">2.2.3 </span><a id="a-606032478" href="#Powerful">Powerful</a></li></ul></li><li><span class="hide">2.3 </span><a id="a-607160758" href="#intro.reqs">Requirements</a><ul><li><span class="hide">2.3.1 </span><a id="a-605864868" href="#Verilog_simulator">Verilog simulator</a></li><li><span class="hide">2.3.2 </span><a id="a-607153788" href="#Compilers">Compilers</a></li><li><span class="hide">2.3.3 </span><a id="a-607156088" href="#Libraries">Libraries</a></li></ul></li><li><span class="hide">2.4 </span><a id="a-607163318" href="#intro.applications">Applications</a></li><li><span class="hide">2.5 </span><a id="a-607165918" href="#intro.appetizers">Appetizers</a></li><li><span class="hide">2.6 </span><a id="a-607168788" href="#intro.license">License</a></li><li><span class="hide">2.7 </span><a id="a-607174178" href="#intro.related-works">Related works</a><ul><li><span class="hide">2.7.1 </span><a id="a-607171238" href="#intro.related-works.pli">Ye olde PLI</a></li></ul></li></ul></li><li><span class="hide">3 </span><a id="a-607242278" href="#setup">Setup</a><ul><li><span class="hide">3.1 </span><a id="a-607204808" href="#setup.manifest">Manifest</a></li><li><span class="hide">3.2 </span><a id="a-607210248" href="#setup.reqs">Requirements</a></li><li><span class="hide">3.3 </span><a id="a-607216418" href="#setup.recom">Recommendations</a><ul><li><span class="hide">3.3.1 </span><a id="a-607213078" href="#setup.recom.merger">Text merging tool</a></li></ul></li><li><span class="hide">3.4 </span><a id="a-607225558" href="#setup.inst">Installation</a><ul><li><span class="hide">3.4.1 </span><a id="a-607221498" href="#setup.inst.windows">Installing on Windows</a></li></ul></li><li><span class="hide">3.5 </span><a id="a-607227838" href="#setup.maintenance">Maintenance</a></li></ul></li><li><span class="hide">4 </span><a id="a-607196488" href="#organization">Organization</a><ul><li><span class="hide">4.1 </span><a id="a-607251168" href="#overview.relay">Ruby/Verilog interaction</a></li><li><span class="hide">4.2 </span><a id="a-607256738" href="#organization.tests">Tests</a></li><li><span class="hide">4.3 </span><a id="a-607326178" href="#VPI_in_Ruby">VPI in Ruby</a><ul><li><span class="hide">4.3.1 </span><a id="a-607265658" 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-607259228" href="#Names_are_capitalized">Names are capitalized</a></li><li><span class="hide">4.3.1.2 </span><a id="a-607261728" 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-607291198" href="#vpi.handles">Handles</a><ul><li><span class="hide">4.3.2.1 </span><a id="a-607268318" href="#Shortcuts_for_productivity">Shortcuts for productivity</a></li><li><span class="hide">4.3.2.2 </span><a id="a-607270878" 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-607273818" 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-607299628" href="#vpi.callbacks">Callbacks</a></li></ul></li></ul></li><li><span class="hide">5 </span><a id="a-607334198" href="#usage">Usage</a><ul><li><span class="hide">5.1 </span><a id="a-607215298" href="#usage.prototyping">Prototyping</a><ul><li><span class="hide">5.1.1 </span><a id="a-607200928" href="#Getting_started">Getting started</a></li><li><span class="hide">5.1.2 </span><a id="a-607205498" href="#How_does_prototyping_work_">How does prototyping work?</a></li></ul></li><li><span class="hide">5.2 </span><a id="a-607224358" href="#usage.debugger">Debugging</a><ul><li><span class="hide">5.2.1 </span><a id="a-607219398" href="#usage.debugger.init">Advanced initialization</a></li></ul></li><li><span class="hide">5.3 </span><a id="a-607246938" href="#usage.test-runner">Test runner</a><ul><li><span class="hide">5.3.1 </span><a id="a-607236808" href="#usage.test-runner.env-vars">Environment variables</a><ul><li><span class="hide">5.3.1.1 </span><a id="a-607229738" 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-607278778" href="#usage.tools">Tools</a><ul><li><span class="hide">5.4.1 </span><a id="a-607262938" href="#usage.tools.generate">Automated test generation</a></li><li><span class="hide">5.4.2 </span><a id="a-607265448" href="#usage.tools.convert">Verilog to Ruby conversion</a></li></ul></li><li><span class="hide">5.5 </span><a id="a-607282618" href="#usage.examples">Sample tests</a></li><li><span class="hide">5.6 </span><a id="a-607395798" href="#usage.tutorial">Tutorial</a><ul><li><span class="hide">5.6.1 </span><a id="a-607290888" href="#usage.tutorial.declare-design">Start with a Verilog design</a></li><li><span class="hide">5.6.2 </span><a id="a-607305468" href="#usage.tutorial.generate-test">Generate a test</a></li><li><span class="hide">5.6.3 </span><a id="a-607315968" href="#usage.tutorial.specification">Specify your expectations</a></li><li><span class="hide">5.6.4 </span><a id="a-607322378" href="#usage.tutorial.implement-proto">Implement the prototype</a></li><li><span class="hide">5.6.5 </span><a id="a-607341078" href="#usage.tutorial.test-proto">Verify the prototype</a></li><li><span class="hide">5.6.6 </span><a id="a-607349478" href="#usage.tutorial.implement-design">Implement the design</a></li><li><span class="hide">5.6.7 </span><a id="a-607359608" href="#usage.tutorial.test-design">Verify the design</a></li></ul></li></ul></li><li><span class="hide">6 </span><a id="a-607351098" href="#hacking">Hacking</a><ul><li><span class="hide">6.1 </span><a id="a-607337768" href="#hacking.scm">Getting the source code</a></li><li><span class="hide">6.2 </span><a id="a-607340498" href="#hacking.release-packages">Building release packages</a></li><li><span class="hide">6.3 </span><a id="a-607344628" href="#hacking.manual">Editing this manual</a></li></ul></li><li><span class="hide">7 </span><a id="a-607417768" href="#problems">Known problems</a><ul><li><span class="hide">7.1 </span><a id="a-607385318" href="#problem.ivl">Icarus Verilog</a><ul><li><span class="hide">7.1.1 </span><a id="a-607359978" 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-607371468" 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-607373948" href="#problems.ivl.vpi_reset">Vpi::reset</a></li></ul></li><li><span class="hide">7.2 </span><a id="a-607390998" href="#problem.ncsim">Cadence NC-Sim</a><ul><li><span class="hide">7.2.1 </span><a id="a-607387788" href="#problem.ncsim.vpiForceFlag">Cannot force values onto handles</a></li></ul></li></ul></li><li><span class="hide">8 </span><a id="a-607450218" href="#glossary">Glossary</a><ul><li><span class="hide">8.1 </span><a id="a-607420598" href="#glossary.test">Test</a></li><li><span class="hide">8.2 </span><a id="a-607423098" href="#glossary.design">Design</a></li><li><span class="hide">8.3 </span><a id="a-607425858" href="#glossary.specification">Specification</a></li><li><span class="hide">8.4 </span><a id="a-607428078" href="#glossary.expectation">Expectation</a></li><li><span class="hide">8.5 </span><a id="a-607430558" href="#glossary.handle">Handle</a></li><li><span class="hide">8.6 </span><a id="a-607432818" href="#glossary.rake">Rake</a></li><li><span class="hide">8.7 </span><a id="a-607435358" href="#glossary.RSpec">RSpec</a></li><li><span class="hide">8.8 </span><a id="a-607437618" href="#glossary.TDD">Test driven development</a></li><li><span class="hide">8.9 </span><a id="a-607439878" href="#glossary.BDD">Behavior driven development</a></li></ul></li></ul>
|
2906
2941
|
|
2907
2942
|
<h1 id="toc:tip">Tips</h1>
|
2908
2943
|
<ol>
|
2909
|
-
<li><a href="#Add_support_for_your_Verilog_simulator" id="a-
|
2910
|
-
<li><a href="#
|
2911
|
-
<li><a href="#
|
2912
|
-
|
2913
|
-
<h1 id="toc:note">Notes</h1>
|
2914
|
-
<ol>
|
2915
|
-
<li><a href="#Tuning_for_maximum_performance" id="a-607705108">Tuning for maximum performance</a></li>
|
2944
|
+
<li><a href="#Add_support_for_your_Verilog_simulator" id="a-607207278">Add support for your Verilog simulator</a></li>
|
2945
|
+
<li><a href="#Tuning_for_maximum_performance" id="a-607218968">Tuning for maximum performance</a></li>
|
2946
|
+
<li><a href="#Using__kdiff3__with_the_automated_test_generator." id="a-607255718">Using <strong>kdiff3</strong> with the automated test generator.</a></li>
|
2947
|
+
<li><a href="#What_can_the_test_runner_do_" id="a-607335018">What can the test runner do?</a></li>
|
2916
2948
|
</ol>
|
2917
2949
|
<h1 id="toc:caution">Cautions</h1>
|
2918
2950
|
<ol>
|
2919
|
-
<li><a href="#Do_not_rename_generated_files" id="a-
|
2951
|
+
<li><a href="#Do_not_rename_generated_files" id="a-607250958">Do not rename generated files</a></li>
|
2920
2952
|
</ol>
|
2921
2953
|
<h1 id="toc:figure">Figures</h1>
|
2922
2954
|
<ol>
|
2923
|
-
<li><a href="#fig:organization.detail" id="a-
|
2924
|
-
<li><a href="#fig:ruby_relay" id="a-
|
2925
|
-
<li><a href="#fig:organization" id="a-
|
2926
|
-
<li><a href="#fig:method_naming_format" id="a-
|
2955
|
+
<li><a href="#fig:organization.detail" id="a-607244878">Where does Ruby-VPI fit in?</a></li>
|
2956
|
+
<li><a href="#fig:ruby_relay" id="a-607247688">Interaction between Ruby and Verilog</a></li>
|
2957
|
+
<li><a href="#fig:organization" id="a-607253638">Organization of a test in Ruby-VPI</a></li>
|
2958
|
+
<li><a href="#fig:method_naming_format" id="a-607276618">Method naming format for accessing a handle’s properties</a></li>
|
2927
2959
|
</ol>
|
2928
2960
|
<h1 id="toc:table">Tables</h1>
|
2929
2961
|
<ol>
|
2930
|
-
<li><a href="#tbl:accessors" id="a-
|
2931
|
-
<li><a href="#ex:properties" id="a-
|
2962
|
+
<li><a href="#tbl:accessors" id="a-607279048">Possible accessors and their implications</a></li>
|
2963
|
+
<li><a href="#ex:properties" id="a-607281988">Examples of accessing a handle’s properties</a></li>
|
2932
2964
|
</ol>
|
2933
2965
|
<h1 id="toc:example">Examples</h1>
|
2934
2966
|
<ol>
|
2935
|
-
<li><a href="#ex:callback" id="a-
|
2936
|
-
<li><a href="#Running_a_test_with_environment_variables" id="a-
|
2937
|
-
<li><a href="#fig:counter.v_decl" id="a-
|
2938
|
-
<li><a href="#fig:generate-test.RSpec" id="a-
|
2939
|
-
<li><a href="#fig:generate-test.xUnit" id="a-
|
2940
|
-
<li><a href="#fig:RSpec_counter_spec.rb" id="a-
|
2941
|
-
<li><a href="#fig:xUnit_counter_spec.rb" id="a-
|
2942
|
-
<li><a href="#fig:counter_proto.rb" id="a-
|
2943
|
-
<li><a href="#fig:test-proto.RSpec" id="a-
|
2944
|
-
<li><a href="#fig:test-proto.unit-test" id="a-
|
2945
|
-
<li><a href="#fig:counter.v_impl" id="a-
|
2946
|
-
<li><a href="#fig:test-design.RSpec" id="a-
|
2947
|
-
<li><a href="#fig:test-design.unit-test" id="a-
|
2948
|
-
<li><a href="#ex:TestFoo" id="a-
|
2949
|
-
<li><a href="#ex:TestFoo_bad" id="a-
|
2950
|
-
<li><a href="#ex:TestFoo_fix" id="a-
|
2967
|
+
<li><a href="#ex:callback" id="a-607295148">Using a callback for value change notification</a></li>
|
2968
|
+
<li><a href="#Running_a_test_with_environment_variables" id="a-607232388">Running a test with environment variables</a></li>
|
2969
|
+
<li><a href="#fig:counter.v_decl" id="a-607287308">Declaration of a simple up-counter with synchronous reset</a></li>
|
2970
|
+
<li><a href="#fig:generate-test.RSpec" id="a-607296778">Generating a test with specification in RSpec format</a></li>
|
2971
|
+
<li><a href="#fig:generate-test.xUnit" id="a-607299658">Generating a test with specification in xUnit format</a></li>
|
2972
|
+
<li><a href="#fig:RSpec_counter_spec.rb" id="a-607308538">Specification implemented in RSpec format</a></li>
|
2973
|
+
<li><a href="#fig:xUnit_counter_spec.rb" id="a-607310978">Specification implemented in xUnit format</a></li>
|
2974
|
+
<li><a href="#fig:counter_proto.rb" id="a-607318638">Ruby prototype of our Verilog design</a></li>
|
2975
|
+
<li><a href="#fig:test-proto.RSpec" id="a-607325878">Running a test with specification in RSpec format</a></li>
|
2976
|
+
<li><a href="#fig:test-proto.unit-test" id="a-607330448">Running a test with specification in xUnit format</a></li>
|
2977
|
+
<li><a href="#fig:counter.v_impl" id="a-607343828">Implementation of a simple up-counter with synchronous reset</a></li>
|
2978
|
+
<li><a href="#fig:test-design.RSpec" id="a-607352688">Running a test with specification in RSpec format</a></li>
|
2979
|
+
<li><a href="#fig:test-design.unit-test" id="a-607355168">Running a test with specification in xUnit format</a></li>
|
2980
|
+
<li><a href="#ex:TestFoo" id="a-607355728">Part of a bench which instantiates a Verilog design</a></li>
|
2981
|
+
<li><a href="#ex:TestFoo_bad" id="a-607364178">Bad design with unconnected registers</a></li>
|
2982
|
+
<li><a href="#ex:TestFoo_fix" id="a-607366888">Fixed design with wired registers</a></li>
|
2951
2983
|
</ol>
|
2952
2984
|
</div>
|
2953
2985
|
</body>
|