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.
Files changed (126) hide show
  1. data/LICENSE +8 -6
  2. data/Rakefile +4 -4
  3. data/doc/common.css +6 -9
  4. data/doc/common.inc +3 -3
  5. data/doc/common.tpl +14 -6
  6. data/doc/history.html +152 -44
  7. data/doc/history.inc +55 -3
  8. data/doc/history.yaml +62 -2
  9. data/doc/intro.inc +20 -16
  10. data/doc/manual.doc +23 -9
  11. data/doc/manual.html +232 -200
  12. data/doc/memo.doc +7 -6
  13. data/doc/memo.html +28 -17
  14. data/doc/readme.doc +1 -1
  15. data/doc/readme.html +51 -35
  16. data/doc/rss.xml +96 -70
  17. data/ext/Rakefile +24 -11
  18. data/ext/swig_vpi.h +1 -1
  19. data/ext/swig_wrap.cin +17 -42
  20. data/lib/ruby-vpi/pli.tab +1 -0
  21. data/lib/ruby-vpi/runner.rb +34 -10
  22. data/lib/ruby-vpi/vpi.rb +483 -438
  23. data/ref/c/annotated.html +1 -1
  24. data/ref/c/common_8h.html +1 -1
  25. data/ref/c/files.html +1 -1
  26. data/ref/c/functions.html +1 -1
  27. data/ref/c/functions_vars.html +1 -1
  28. data/ref/c/globals.html +1 -1
  29. data/ref/c/globals_0x63.html +1 -1
  30. data/ref/c/globals_0x65.html +1 -1
  31. data/ref/c/globals_0x66.html +1 -1
  32. data/ref/c/globals_0x6d.html +1 -1
  33. data/ref/c/globals_0x70.html +1 -1
  34. data/ref/c/globals_0x72.html +1 -1
  35. data/ref/c/globals_0x73.html +1 -1
  36. data/ref/c/globals_0x74.html +1 -1
  37. data/ref/c/globals_0x76.html +1 -1
  38. data/ref/c/globals_0x78.html +1 -1
  39. data/ref/c/globals_defs.html +1 -1
  40. data/ref/c/globals_defs_0x65.html +1 -1
  41. data/ref/c/globals_defs_0x70.html +1 -1
  42. data/ref/c/globals_defs_0x76.html +1 -1
  43. data/ref/c/globals_defs_0x78.html +1 -1
  44. data/ref/c/globals_enum.html +1 -1
  45. data/ref/c/globals_eval.html +1 -1
  46. data/ref/c/globals_func.html +1 -1
  47. data/ref/c/globals_type.html +1 -1
  48. data/ref/c/globals_vars.html +1 -1
  49. data/ref/c/index.html +1 -1
  50. data/ref/c/main_8c.html +1 -1
  51. data/ref/c/main_8h.html +1 -1
  52. data/ref/c/relay_8c.html +1 -1
  53. data/ref/c/relay_8h.html +1 -1
  54. data/ref/c/structt__cb__data.html +1 -1
  55. data/ref/c/structt__vpi__delay.html +1 -1
  56. data/ref/c/structt__vpi__error__info.html +1 -1
  57. data/ref/c/structt__vpi__strengthval.html +1 -1
  58. data/ref/c/structt__vpi__systf__data.html +1 -1
  59. data/ref/c/structt__vpi__time.html +1 -1
  60. data/ref/c/structt__vpi__value.html +1 -1
  61. data/ref/c/structt__vpi__vecval.html +1 -1
  62. data/ref/c/structt__vpi__vlog__info.html +1 -1
  63. data/ref/c/verilog_8h.html +1 -1
  64. data/ref/c/vlog_8c.html +1 -1
  65. data/ref/c/vlog_8h.html +1 -1
  66. data/ref/c/vpi__user_8h.html +1 -1
  67. data/ref/ruby/classes/RDoc.html +5 -5
  68. data/ref/ruby/classes/RDoc.src/{M000058.html → M000061.html} +0 -0
  69. data/ref/ruby/classes/String.html +24 -24
  70. data/ref/ruby/classes/String.src/M000022.html +23 -5
  71. data/ref/ruby/classes/String.src/M000023.html +28 -5
  72. data/ref/ruby/classes/String.src/M000024.html +5 -23
  73. data/ref/ruby/classes/String.src/M000025.html +5 -28
  74. data/ref/ruby/classes/Vpi/Handle.html +94 -49
  75. data/ref/ruby/classes/Vpi/Handle.src/M000035.html +4 -4
  76. data/ref/ruby/classes/Vpi/Handle.src/M000036.html +4 -4
  77. data/ref/ruby/classes/Vpi/Handle.src/M000037.html +4 -4
  78. data/ref/ruby/classes/Vpi/Handle.src/M000038.html +4 -4
  79. data/ref/ruby/classes/Vpi/Handle.src/M000039.html +4 -4
  80. data/ref/ruby/classes/Vpi/Handle.src/M000040.html +4 -4
  81. data/ref/ruby/classes/Vpi/Handle.src/M000041.html +4 -4
  82. data/ref/ruby/classes/Vpi/Handle.src/M000042.html +4 -4
  83. data/ref/ruby/classes/Vpi/Handle.src/M000043.html +7 -7
  84. data/ref/ruby/classes/Vpi/Handle.src/M000044.html +7 -7
  85. data/ref/ruby/classes/Vpi/Handle.src/M000045.html +8 -8
  86. data/ref/ruby/classes/Vpi/Handle.src/M000046.html +36 -30
  87. data/ref/ruby/classes/Vpi/Handle.src/M000047.html +72 -67
  88. data/ref/ruby/classes/Vpi/Handle.src/M000048.html +6 -17
  89. data/ref/ruby/classes/Vpi/Handle.src/M000049.html +19 -0
  90. data/ref/ruby/classes/Vpi/Handle.src/M000050.html +5 -5
  91. data/ref/ruby/classes/Vpi/Handle.src/M000051.html +16 -10
  92. data/ref/ruby/classes/Vpi/Handle.src/M000053.html +5 -18
  93. data/ref/ruby/classes/Vpi/Handle.src/M000054.html +11 -76
  94. data/ref/ruby/classes/Vpi/Handle.src/M000056.html +31 -0
  95. data/ref/ruby/classes/Vpi/Handle.src/M000057.html +40 -0
  96. data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
  97. data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000055.html → M000058.html} +4 -4
  98. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +19 -0
  99. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +4 -4
  100. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +4 -4
  101. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +4 -4
  102. data/ref/ruby/classes/Vpi.html +0 -7
  103. data/ref/ruby/classes/Vpi.src/M000029.html +14 -14
  104. data/ref/ruby/classes/Vpi.src/M000030.html +25 -24
  105. data/ref/ruby/classes/Vpi.src/M000031.html +6 -6
  106. data/ref/ruby/created.rid +1 -1
  107. data/ref/ruby/files/bin/convert_rb.html +1 -1
  108. data/ref/ruby/files/bin/generate_rb.html +1 -1
  109. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  110. data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
  111. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  112. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  113. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  114. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  115. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +1 -1
  116. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  117. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
  118. data/ref/ruby/files/lib/ruby-vpi/util_rb.html +1 -1
  119. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
  120. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +8 -1
  121. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  122. data/ref/ruby/fr_method_index.html +19 -16
  123. data/samp/register_file/register_file.v +1 -1
  124. data/samp/register_file/register_file_spec.rb +9 -5
  125. metadata +42 -38
  126. 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 17.0.0 user manual</title>
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
+ &middot; <a href="manual.html">Manual</a>
14
+ &middot; <a href="memo.html">Memo</a>
15
+ &middot; <a href="history.html">History</a>
16
+ <hr style="display: none"/>
17
+ </div>
18
+
11
19
  <div id="toc-links">
12
- <a href="#toc:contents">Contents</a> &middot;
13
- <a href="#toc:tip">Tips</a> &middot;
14
- <a href="#toc:note">Notes</a> &middot;
15
- <a href="#toc:caution">Cautions</a> &middot;
16
- <a href="#toc:figure">Figures</a> &middot;
17
- <a href="#toc:table">Tables</a> &middot;
18
- <a href="#toc:example">Examples</a> &middot;
19
-
20
- <a href="readme.html" style="color: green; font-size: larger;">Home page</a>
20
+ <a href="#toc:contents">Contents</a> &middot; <a href="#toc:tip">Tips</a> &middot; <a href="#toc:caution">Cautions</a> &middot; <a href="#toc:figure">Figures</a> &middot; <a href="#toc:table">Tables</a> &middot; <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-VPI_17.0.0_user_manual" class="front_cover">
27
- <h1 class="title"><big>Ruby-VPI 17.0.0 user manual</big></h1>
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">22 July 2007</h3>
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&#8217;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-607687748">2</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-607624238">2.1</a>
93
+ <a href="#a-605996598">2.1</a>
94
94
 
95
95
  &nbsp;
96
96
 
@@ -100,20 +100,22 @@
100
100
 
101
101
  <div id="Records" class="paragraph">
102
102
  <p class="title">Records</p>
103
- <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 notifications" style="float: right"/></a>
104
-
105
-
103
+ <ul>
104
+ <li><a href="history.html#a18.0.0">What&#8217;s new</a>
105
+ &#8211; release notes for version 18.0.0.
106
106
  <ul>
107
- <li><a href="history.html">What&#8217;s new</a>
108
- &#8211; a history of all release notes.</li>
107
+ <li><a href="history.html">History</a>
108
+ &#8211; 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
+ &#8211; keep track of new releases at your leisure.</li>
111
+ </ul>
112
+ </li>
109
113
  <li><a href="memo.html">Plans</a>
110
114
  &#8211; pending tasks for future releases.</li>
111
115
  <li><a href="http://ruby-vpi.rubyforge.org/talks/">Talks</a>
112
116
  &#8211; materials from presentations and seminars.</li>
113
117
  <li><a href="http://ruby-vpi.rubyforge.org/papers/">Papers</a>
114
118
  &#8211; research publications.</li>
115
- <li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a>
116
- &#8211; 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="manual.html">User manual</a>
125
- &#8211; complete documentation for users. <em>Start here!</em>
126
+ <li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a>
127
+ &#8211; why was Ruby-VPI developed?</li>
128
+ <li><a href="manual.html">User manual</a>
129
+ &#8211; complete documentation for users.
126
130
  <ul>
127
131
  <li><a href="manual.html#usage.tutorial">Tutorial</a>
128
132
  &#8211; 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
  &#8211; 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
  &#8211; 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
  &#8211; discuss things and ask questions.</li>
@@ -149,7 +153,7 @@
149
153
  &#8211; submit patches to source code.</li>
150
154
  <li><a href="http://rubyforge.org/tracker/?group_id=1339">Requests</a>
151
155
  &#8211; 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
  &#8211; 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-607636548">2.2</a>
171
+ <a href="#a-605842608">2.2</a>
168
172
 
169
173
  &nbsp;
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.installation">installation</a> and used forever!</li>
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-test">automated test generator</a> helps you accomodate design changes with <em>minimal</em> effort.</li>
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-607648378">2.3</a>
242
+ <a href="#a-607160758">2.3</a>
239
243
 
240
244
  &nbsp;
241
245
 
@@ -256,12 +260,12 @@
256
260
  &#8211; 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
  &#8211; 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 / NC-Verilog</a>
260
- &#8211; any version that supports the <tt>+loadvpi</tt> option is acceptable.</li>
263
+ <li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a>
264
+ &#8211; 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
  &#8211; version 2.11a or newer is acceptable.</li>
263
- <li><a href="http://www.icarus.com/eda/Verilog/">Icarus Verilog</a>
264
- &#8211; version 0.8 is <em>mostly</em> acceptable&#8212;you <strong>will not</strong> be able to <a href="manual.html#background.org.vpi.util">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>
267
+ <li><a href="http://www.geda.seul.org/tools/icarus/index.html">Icarus Verilog</a>
268
+ &#8211; 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
  &#8211; any flavor should be acceptable.</li>
274
278
  <li>C compiler
275
279
  &#8211; 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.ruby-lang.org">Ruby</a>
277
- &#8211; 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.rubygarden.org/faq/section/show/3">these instructions</a>.</li>
280
+ <li><a href="http://www.swig.org/download.html">SWIG</a>
281
+ &#8211; version 1.3.29 or newer is necessary.</li>
282
+ <li><a href="http://www.ruby-lang.org/en/downloads/">Ruby</a>
283
+ &#8211; 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-607650938">2.4</a>
308
+ <a href="#a-607163318">2.4</a>
303
309
 
304
310
  &nbsp;
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-607653538">2.5</a>
354
+ <a href="#a-607165918">2.5</a>
349
355
 
350
356
  &nbsp;
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-607656258">2.6</a>
422
+ <a href="#a-607168788">2.6</a>
417
423
 
418
424
  &nbsp;
419
425
 
420
426
  License
421
427
  </h2>
422
428
 
423
- <p>Copyright 2006 Suraj N. Kurapati &lt;snk@gna.org&gt;</p>
429
+ <p>Copyright 2006 Suraj N. Kurapati &lt;SNK at GNA dot ORG&gt;<br/>
430
+ Copyright 1999 Kazuhiro HIWADA &lt;HIWADA at KUEE dot KYOTO-U dot AC dot JP&gt;<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 modified and unmodified copies and substantial portions of the Software
435
- (the &quot;Derivatives&quot;) and their corresponding machine-readable source code (the
436
- &quot;Code&quot;) must include the above copyright notice and this permission notice.</p>
441
+ <p>1. All copies and substantial portions of the Software, whether modified or
442
+ unmodified, (the &quot;Derivatives&quot;) and their corresponding machine-readable
443
+ source code (the &quot;Code&quot;) must include the above copyright notice and this
444
+ permission notice.</p>
437
445
 
438
446
 
439
- <p>2. Upon distribution, the Derivatives must be accompanied either by the Code or,
440
- if the Code is obtainable for no more than the cost of distribution plus a
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-607661648">2.7</a>
468
+ <a href="#a-607174178">2.7</a>
461
469
 
462
470
  &nbsp;
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-607658708">2.7.1</a>
489
+ <a href="#a-607171238">2.7.1</a>
482
490
 
483
491
  &nbsp;
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-607728418">3</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-607690938">3.1</a>
528
+ <a href="#a-607204808">3.1</a>
521
529
 
522
530
  &nbsp;
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-607696378">3.2</a>
554
+ <a href="#a-607210248">3.2</a>
547
555
 
548
556
  &nbsp;
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-607693408">Tip 1</a>. &nbsp; Add support for your Verilog simulator</p>
571
+ <p class="title"><a href="#a-607207278">Tip 1</a>. &nbsp; 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-607702548">3.3</a>
585
+ <a href="#a-607216418">3.3</a>
578
586
 
579
587
  &nbsp;
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-607699208">3.3.1</a>
600
+ <a href="#a-607213078">3.3.1</a>
593
601
 
594
602
  &nbsp;
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-607711698">3.4</a>
644
+ <a href="#a-607225558">3.4</a>
637
645
 
638
646
  &nbsp;
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 /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
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="note" id="Tuning_for_maximum_performance">
660
- <img src="images/tango/note.png" alt="note" class="icon"/>
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-607705108">Note 1</a>. &nbsp; Tuning for maximum performance</p>
670
+ <p class="title"><a href="#a-607218968">Tip 2</a>. &nbsp; 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&#8217;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-607707638">3.4.1</a>
681
+ <a href="#a-607221498">3.4.1</a>
674
682
 
675
683
  &nbsp;
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-607713978">3.5</a>
732
+ <a href="#a-607227838">3.5</a>
725
733
 
726
734
  &nbsp;
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-607211338">4</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-607731018">Figure 1</a>. &nbsp; Where does Ruby-VPI fit in?</p>
776
+ <p class="title"><a href="#a-607244878">Figure 1</a>. &nbsp; 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-607737308">4.1</a>
790
+ <a href="#a-607251168">4.1</a>
783
791
 
784
792
  &nbsp;
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-607733828">Figure 2</a>. &nbsp; Interaction between Ruby and Verilog</p>
813
+ <p class="title"><a href="#a-607247688">Figure 2</a>. &nbsp; 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-607073988">4.2</a>
839
+ <a href="#a-607256738">4.2</a>
832
840
 
833
841
  &nbsp;
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-607070888">Figure 3</a>. &nbsp; Organization of a test in Ruby-VPI</p>
856
+ <p class="title"><a href="#a-607253638">Figure 3</a>. &nbsp; 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-607153008">4.3</a>
879
+ <a href="#a-607326178">4.3</a>
872
880
 
873
881
  &nbsp;
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-607082938">4.3.1</a>
891
+ <a href="#a-607265658">4.3.1</a>
884
892
 
885
893
  &nbsp;
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-607076508">4.3.1.1</a>
906
+ <a href="#a-607259228">4.3.1.1</a>
899
907
 
900
908
  &nbsp;
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-607079008">4.3.1.2</a>
927
+ <a href="#a-607261728">4.3.1.2</a>
920
928
 
921
929
  &nbsp;
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://www.rubycentral.com/book/tut_methods.html#UA">variable argument lists as arrays</a> instead of defining a special datatype, such as <code class="code">va_list</code>, for them.</li>
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-607114548">4.3.2</a>
964
+ <a href="#a-607291198">4.3.2</a>
957
965
 
958
966
  &nbsp;
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-607088158">4.3.2.2</a>
993
+ <a href="#a-607270878">4.3.2.2</a>
986
994
 
987
995
  &nbsp;
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-607091098">4.3.2.3</a>
1030
+ <a href="#a-607273818">4.3.2.3</a>
1023
1031
 
1024
1032
  &nbsp;
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-607093898">Figure 4</a>. &nbsp; Method naming format for accessing a handle&#8217;s properties</p>
1073
+ <p class="title"><a href="#a-607276618">Figure 4</a>. &nbsp; Method naming format for accessing a handle&#8217;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-607096328">Table 1</a>. &nbsp; Possible accessors and their implications</p>
1126
+ <p class="title"><a href="#a-607279048">Table 1</a>. &nbsp; 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-607099288">Table 2</a>. &nbsp; Examples of accessing a handle&#8217;s properties</p>
1180
+ <p class="title"><a href="#a-607281988">Table 2</a>. &nbsp; Examples of accessing a handle&#8217;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-607126458">4.3.3</a>
1505
+ <a href="#a-607299628">4.3.3</a>
1498
1506
 
1499
1507
  &nbsp;
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-607121788">Example 1</a>. &nbsp; Using a callback for value change notification</p>
1525
+ <p class="title"><a href="#a-607295148">Example 1</a>. &nbsp; 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&#8217;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-607321458">5</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-607223668">5.1</a>
1586
+ <a href="#a-607215298">5.1</a>
1579
1587
 
1580
1588
  &nbsp;
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-607218048">5.1.2</a>
1628
+ <a href="#a-607205498">5.1.2</a>
1621
1629
 
1622
1630
  &nbsp;
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-607229298">5.2</a>
1650
+ <a href="#a-607224358">5.2</a>
1643
1651
 
1644
1652
  &nbsp;
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-607226228">5.2.1</a>
1671
+ <a href="#a-607219398">5.2.1</a>
1664
1672
 
1665
1673
  &nbsp;
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-607246068">5.3</a>
1696
+ <a href="#a-607246938">5.3</a>
1689
1697
 
1690
1698
  &nbsp;
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/tmp/ruby-vpi/doc)
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-607238958">5.3.1</a>
1726
+ <a href="#a-607236808">5.3.1</a>
1719
1727
 
1720
1728
  &nbsp;
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-607234788">Example 2</a>. &nbsp; Running a test with environment variables</p>
1773
+ <p class="title"><a href="#a-607232388">Example 2</a>. &nbsp; 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-607265218">5.4</a>
1797
+ <a href="#a-607278778">5.4</a>
1790
1798
 
1791
1799
  &nbsp;
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-607255398">5.4.1</a>
1833
+ <a href="#a-607262938">5.4.1</a>
1826
1834
 
1827
1835
  &nbsp;
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-607248828">Caution 1</a>. &nbsp; Do not rename generated files</p>
1863
+ <p class="title"><a href="#a-607250958">Caution 1</a>. &nbsp; 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-607251318">Tip 2</a>. &nbsp; Using <strong>kdiff3</strong> with the automated test generator.</p>
1882
+ <p class="title"><a href="#a-607255718">Tip 3</a>. &nbsp; 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-607257688">5.4.2</a>
1908
+ <a href="#a-607265448">5.4.2</a>
1901
1909
 
1902
1910
  &nbsp;
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-607267438">5.5</a>
1930
+ <a href="#a-607282618">5.5</a>
1923
1931
 
1924
1932
  &nbsp;
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-607188458">5.6</a>
1946
+ <a href="#a-607395798">5.6</a>
1939
1947
 
1940
1948
  &nbsp;
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-607274848">5.6.1</a>
1969
+ <a href="#a-607290888">5.6.1</a>
1962
1970
 
1963
1971
  &nbsp;
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-607271338">Example 3</a>. &nbsp; Declaration of a simple up-counter with synchronous reset</p>
1994
+ <p class="title"><a href="#a-607287308">Example 3</a>. &nbsp; 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-607081228">5.6.2</a>
2018
+ <a href="#a-607305468">5.6.2</a>
2011
2019
 
2012
2020
  &nbsp;
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-607278188">Example 4</a>. &nbsp; Generating a test with specification in RSpec format</p>
2054
+ <p class="title"><a href="#a-607296778">Example 4</a>. &nbsp; 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-607073088">Example 5</a>. &nbsp; Generating a test with specification in xUnit format</p>
2076
+ <p class="title"><a href="#a-607299658">Example 5</a>. &nbsp; 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-607098358">5.6.3</a>
2101
+ <a href="#a-607315968">5.6.3</a>
2094
2102
 
2095
2103
  &nbsp;
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-607085368">Example 6</a>. &nbsp; Specification implemented in RSpec format</p>
2129
+ <p class="title"><a href="#a-607308538">Example 6</a>. &nbsp; 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">&quot;<
2170
2178
  <div class="example" id="fig:xUnit_counter_spec.rb">
2171
2179
 
2172
2180
 
2173
- <p class="title"><a href="#a-607089898">Example 7</a>. &nbsp; Specification implemented in xUnit format</p>
2181
+ <p class="title"><a href="#a-607310978">Example 7</a>. &nbsp; 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-607106078">5.6.4</a>
2241
+ <a href="#a-607322378">5.6.4</a>
2250
2242
 
2251
2243
  &nbsp;
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-607102138">Example 8</a>. &nbsp; Ruby prototype of our Verilog design</p>
2258
+ <p class="title"><a href="#a-607318638">Example 8</a>. &nbsp; 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-607132558">5.6.5</a>
2285
+ <a href="#a-607341078">5.6.5</a>
2294
2286
 
2295
2287
  &nbsp;
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-607119008">Example 9</a>. &nbsp; Running a test with specification in RSpec format</p>
2305
+ <p class="title"><a href="#a-607325878">Example 9</a>. &nbsp; 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-607123158">Example 10</a>. &nbsp; Running a test with specification in xUnit format</p>
2329
+ <p class="title"><a href="#a-607330448">Example 10</a>. &nbsp; 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-607126068">Tip 3</a>. &nbsp; What can the test runner do?</p>
2353
+ <p class="title"><a href="#a-607335018">Tip 4</a>. &nbsp; 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-607138718">5.6.6</a>
2369
+ <a href="#a-607349478">5.6.6</a>
2378
2370
 
2379
2371
  &nbsp;
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-607135238">Example 11</a>. &nbsp; Implementation of a simple up-counter with synchronous reset</p>
2386
+ <p class="title"><a href="#a-607343828">Example 11</a>. &nbsp; 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-607149178">5.6.7</a>
2423
+ <a href="#a-607359608">5.6.7</a>
2432
2424
 
2433
2425
  &nbsp;
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-607141778">Example 12</a>. &nbsp; Running a test with specification in RSpec format</p>
2443
+ <p class="title"><a href="#a-607352688">Example 12</a>. &nbsp; 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-607144398">Example 13</a>. &nbsp; Running a test with specification in xUnit format</p>
2465
+ <p class="title"><a href="#a-607355168">Example 13</a>. &nbsp; 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-607333248">6</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-607323788">6.1</a>
2506
+ <a href="#a-607337768">6.1</a>
2515
2507
 
2516
2508
  &nbsp;
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-607326418">6.2</a>
2527
+ <a href="#a-607340498">6.2</a>
2536
2528
 
2537
2529
  &nbsp;
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-607328648">6.3</a>
2555
+ <a href="#a-607344628">6.3</a>
2564
2556
 
2565
2557
  &nbsp;
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-607380138">7</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-607358828">7.1</a>
2588
+ <a href="#a-607385318">7.1</a>
2597
2589
 
2598
2590
  &nbsp;
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
- &nbsp;
2598
+ <p>
2599
+ <hr style="display: none"/>
2611
2600
 
2612
- Give full paths to Verilog objects
2613
- </h3>
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
+ &nbsp;
2614
2606
 
2615
- <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>
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">&quot;</span><span style="color:#D20">TestFoo.my_foo.clk</span><span style="color:#710">&quot;</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">&quot;</span><span style="color:#D20">my_foo.clk</span><span style="color:#710">&quot;</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-607336038">Example 14</a>. &nbsp; Part of a bench which instantiates a Verilog design</p>
2623
+ <p class="title"><a href="#a-607355728">Example 14</a>. &nbsp; 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-607348888">7.1.2</a>
2642
+ <a href="#a-607371468">7.1.2</a>
2648
2643
 
2649
2644
  &nbsp;
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-607342098">Example 15</a>. &nbsp; Bad design with unconnected registers</p>
2665
+ <p class="title"><a href="#a-607364178">Example 15</a>. &nbsp; 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-607344538">Example 16</a>. &nbsp; Fixed design with wired registers</p>
2685
+ <p class="title"><a href="#a-607366888">Example 16</a>. &nbsp; 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
+ &nbsp;
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="problems.ivl.vpi_reset" class="section">
2725
+ <div id="problem.ncsim" class="section">
2715
2726
  <h2 class="title">
2716
- <a href="#a-607361048">7.2</a>
2727
+ <a href="#a-607390998">7.2</a>
2717
2728
 
2718
2729
  &nbsp;
2719
2730
 
2720
- Vpi::reset
2731
+ Cadence NC-Sim
2721
2732
  </h2>
2722
2733
 
2723
- 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.
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
+ &nbsp;
2745
+
2746
+ Cannot force values onto handles
2747
+ </h3>
2748
+
2749
+ <p>When you write to a handle&#8217;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 &#8220;register_file&#8221; 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 &#8220;+access+rwc&#8221; command-line option for NC-Sim, I&#8217;m thinking that the force/release capability is not really enabled. However, it&#8217;s more likely that there&#8217;s a bug in the &#8220;register_file&#8221; 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-607138038">8</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-607382968">8.1</a>
2781
+ <a href="#a-607420598">8.1</a>
2747
2782
 
2748
2783
  &nbsp;
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-607385468">8.2</a>
2797
+ <a href="#a-607423098">8.2</a>
2763
2798
 
2764
2799
  &nbsp;
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-607076108">8.3</a>
2813
+ <a href="#a-607425858">8.3</a>
2779
2814
 
2780
2815
  &nbsp;
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-607080598">8.4</a>
2829
+ <a href="#a-607428078">8.4</a>
2795
2830
 
2796
2831
  &nbsp;
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-607087288">8.5</a>
2845
+ <a href="#a-607430558">8.5</a>
2811
2846
 
2812
2847
  &nbsp;
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-607093708">8.6</a>
2861
+ <a href="#a-607432818">8.6</a>
2827
2862
 
2828
2863
  &nbsp;
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-607099278">8.7</a>
2882
+ <a href="#a-607435358">8.7</a>
2848
2883
 
2849
2884
  &nbsp;
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/tutorials/index.html">tutorial</a> for more information.</p>
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-607104428">8.8</a>
2901
+ <a href="#a-607437618">8.8</a>
2867
2902
 
2868
2903
  &nbsp;
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-607113088">8.9</a>
2920
+ <a href="#a-607439878">8.9</a>
2886
2921
 
2887
2922
  &nbsp;
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-607611558" href="#Ruby-VPI_17.0.0_user_manual">Ruby-VPI 17.0.0 user manual</a><ul><li><span class="hide">1.1 </span><a id="a-607604718" href="#About_this_manual">About this manual</a></li><li><span class="hide">1.2 </span><a id="a-607607248" href="#Legal_notice">Legal notice</a></li></ul></li><li><span class="hide">2 </span><a id="a-607687748" href="#intro">Welcome</a><ul><li><span class="hide">2.1 </span><a id="a-607624238" href="#resources">Resources</a><ul><li><span class="hide">2.1.1 </span><a id="a-607614278" href="#Records">Records</a></li><li><span class="hide">2.1.2 </span><a id="a-607616618" href="#Documentation">Documentation</a></li><li><span class="hide">2.1.3 </span><a id="a-607619258" href="#Facilities">Facilities</a></li></ul></li><li><span class="hide">2.2 </span><a id="a-607636548" href="#intro.features">Features</a><ul><li><span class="hide">2.2.1 </span><a id="a-607626878" href="#Portable">Portable</a></li><li><span class="hide">2.2.2 </span><a id="a-607629278" href="#Agile">Agile</a></li><li><span class="hide">2.2.3 </span><a id="a-607631678" href="#Powerful">Powerful</a></li></ul></li><li><span class="hide">2.3 </span><a id="a-607648378" href="#intro.reqs">Requirements</a><ul><li><span class="hide">2.3.1 </span><a id="a-607639108" href="#Verilog_simulator">Verilog simulator</a></li><li><span class="hide">2.3.2 </span><a id="a-607641448" href="#Compilers">Compilers</a></li><li><span class="hide">2.3.3 </span><a id="a-607643748" href="#Libraries">Libraries</a></li></ul></li><li><span class="hide">2.4 </span><a id="a-607650938" href="#intro.applications">Applications</a></li><li><span class="hide">2.5 </span><a id="a-607653538" href="#intro.appetizers">Appetizers</a></li><li><span class="hide">2.6 </span><a id="a-607656258" href="#intro.license">License</a></li><li><span class="hide">2.7 </span><a id="a-607661648" href="#intro.related-works">Related works</a><ul><li><span class="hide">2.7.1 </span><a id="a-607658708" href="#intro.related-works.pli">Ye olde PLI</a></li></ul></li></ul></li><li><span class="hide">3 </span><a id="a-607728418" href="#setup">Setup</a><ul><li><span class="hide">3.1 </span><a id="a-607690938" href="#setup.manifest">Manifest</a></li><li><span class="hide">3.2 </span><a id="a-607696378" href="#setup.reqs">Requirements</a></li><li><span class="hide">3.3 </span><a id="a-607702548" href="#setup.recom">Recommendations</a><ul><li><span class="hide">3.3.1 </span><a id="a-607699208" href="#setup.recom.merger">Text merging tool</a></li></ul></li><li><span class="hide">3.4 </span><a id="a-607711698" href="#setup.inst">Installation</a><ul><li><span class="hide">3.4.1 </span><a id="a-607707638" href="#setup.inst.windows">Installing on Windows</a></li></ul></li><li><span class="hide">3.5 </span><a id="a-607713978" href="#setup.maintenance">Maintenance</a></li></ul></li><li><span class="hide">4 </span><a id="a-607211338" href="#organization">Organization</a><ul><li><span class="hide">4.1 </span><a id="a-607737308" href="#overview.relay">Ruby/Verilog interaction</a></li><li><span class="hide">4.2 </span><a id="a-607073988" href="#organization.tests">Tests</a></li><li><span class="hide">4.3 </span><a id="a-607153008" href="#VPI_in_Ruby">VPI in Ruby</a><ul><li><span class="hide">4.3.1 </span><a id="a-607082938" 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-607076508" href="#Names_are_capitalized">Names are capitalized</a></li><li><span class="hide">4.3.1.2 </span><a id="a-607079008" 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-607114548" href="#vpi.handles">Handles</a><ul><li><span class="hide">4.3.2.1 </span><a id="a-607085598" href="#Shortcuts_for_productivity">Shortcuts for productivity</a></li><li><span class="hide">4.3.2.2 </span><a id="a-607088158" href="#Accessing_a_handle_s_relatives">Accessing a handle&#8217;s relatives</a></li><li><span class="hide">4.3.2.3 </span><a id="a-607091098" href="#Accessing_a_handle_s_properties">Accessing a handle&#8217;s properties</a></li></ul></li><li><span class="hide">4.3.3 </span><a id="a-607126458" href="#vpi.callbacks">Callbacks</a></li></ul></li></ul></li><li><span class="hide">5 </span><a id="a-607321458" href="#usage">Usage</a><ul><li><span class="hide">5.1 </span><a id="a-607223668" href="#usage.prototyping">Prototyping</a><ul><li><span class="hide">5.1.1 </span><a id="a-607215768" href="#Getting_started">Getting started</a></li><li><span class="hide">5.1.2 </span><a id="a-607218048" href="#How_does_prototyping_work_">How does prototyping work?</a></li></ul></li><li><span class="hide">5.2 </span><a id="a-607229298" href="#usage.debugger">Debugging</a><ul><li><span class="hide">5.2.1 </span><a id="a-607226228" href="#usage.debugger.init">Advanced initialization</a></li></ul></li><li><span class="hide">5.3 </span><a id="a-607246068" href="#usage.test-runner">Test runner</a><ul><li><span class="hide">5.3.1 </span><a id="a-607238958" href="#usage.test-runner.env-vars">Environment variables</a><ul><li><span class="hide">5.3.1.1 </span><a id="a-607232388" 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-607265218" href="#usage.tools">Tools</a><ul><li><span class="hide">5.4.1 </span><a id="a-607255398" href="#usage.tools.generate">Automated test generation</a></li><li><span class="hide">5.4.2 </span><a id="a-607257688" href="#usage.tools.convert">Verilog to Ruby conversion</a></li></ul></li><li><span class="hide">5.5 </span><a id="a-607267438" href="#usage.examples">Sample tests</a></li><li><span class="hide">5.6 </span><a id="a-607188458" href="#usage.tutorial">Tutorial</a><ul><li><span class="hide">5.6.1 </span><a id="a-607274848" href="#usage.tutorial.declare-design">Start with a Verilog design</a></li><li><span class="hide">5.6.2 </span><a id="a-607081228" href="#usage.tutorial.generate-test">Generate a test</a></li><li><span class="hide">5.6.3 </span><a id="a-607098358" href="#usage.tutorial.specification">Specify your expectations</a></li><li><span class="hide">5.6.4 </span><a id="a-607106078" href="#usage.tutorial.implement-proto">Implement the prototype</a></li><li><span class="hide">5.6.5 </span><a id="a-607132558" href="#usage.tutorial.test-proto">Verify the prototype</a></li><li><span class="hide">5.6.6 </span><a id="a-607138718" href="#usage.tutorial.implement-design">Implement the design</a></li><li><span class="hide">5.6.7 </span><a id="a-607149178" href="#usage.tutorial.test-design">Verify the design</a></li></ul></li></ul></li><li><span class="hide">6 </span><a id="a-607333248" href="#hacking">Hacking</a><ul><li><span class="hide">6.1 </span><a id="a-607323788" href="#hacking.scm">Getting the source code</a></li><li><span class="hide">6.2 </span><a id="a-607326418" href="#hacking.release-packages">Building release packages</a></li><li><span class="hide">6.3 </span><a id="a-607328648" href="#hacking.manual">Editing this manual</a></li></ul></li><li><span class="hide">7 </span><a id="a-607380138" href="#problems">Known problems</a><ul><li><span class="hide">7.1 </span><a id="a-607358828" href="#problem.ivl">Icarus Verilog</a><ul><li><span class="hide">7.1.1 </span><a id="a-607339198" 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-607348888" href="#problems.ivl.vpi_handle_by_name.connect-registers">Registers must be connected</a></li></ul></li><li><span class="hide">7.2 </span><a id="a-607361048" href="#problems.ivl.vpi_reset">Vpi::reset</a></li></ul></li><li><span class="hide">8 </span><a id="a-607138038" href="#glossary">Glossary</a><ul><li><span class="hide">8.1 </span><a id="a-607382968" href="#glossary.test">Test</a></li><li><span class="hide">8.2 </span><a id="a-607385468" href="#glossary.design">Design</a></li><li><span class="hide">8.3 </span><a id="a-607076108" href="#glossary.specification">Specification</a></li><li><span class="hide">8.4 </span><a id="a-607080598" href="#glossary.expectation">Expectation</a></li><li><span class="hide">8.5 </span><a id="a-607087288" href="#glossary.handle">Handle</a></li><li><span class="hide">8.6 </span><a id="a-607093708" href="#glossary.rake">Rake</a></li><li><span class="hide">8.7 </span><a id="a-607099278" href="#glossary.RSpec">RSpec</a></li><li><span class="hide">8.8 </span><a id="a-607104428" href="#glossary.TDD">Test driven development</a></li><li><span class="hide">8.9 </span><a id="a-607113088" href="#glossary.BDD">Behavior driven development</a></li></ul></li></ul>
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&#8217;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&#8217;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-607693408">Add support for your Verilog simulator</a></li>
2910
- <li><a href="#Using__kdiff3__with_the_automated_test_generator." id="a-607251318">Using <strong>kdiff3</strong> with the automated test generator.</a></li>
2911
- <li><a href="#What_can_the_test_runner_do_" id="a-607126068">What can the test runner do?</a></li>
2912
- </ol>
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-607248828">Do not rename generated files</a></li>
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-607731018">Where does Ruby-VPI fit in?</a></li>
2924
- <li><a href="#fig:ruby_relay" id="a-607733828">Interaction between Ruby and Verilog</a></li>
2925
- <li><a href="#fig:organization" id="a-607070888">Organization of a test in Ruby-VPI</a></li>
2926
- <li><a href="#fig:method_naming_format" id="a-607093898">Method naming format for accessing a handle&#8217;s properties</a></li>
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&#8217;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-607096328">Possible accessors and their implications</a></li>
2931
- <li><a href="#ex:properties" id="a-607099288">Examples of accessing a handle&#8217;s properties</a></li>
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&#8217;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-607121788">Using a callback for value change notification</a></li>
2936
- <li><a href="#Running_a_test_with_environment_variables" id="a-607234788">Running a test with environment variables</a></li>
2937
- <li><a href="#fig:counter.v_decl" id="a-607271338">Declaration of a simple up-counter with synchronous reset</a></li>
2938
- <li><a href="#fig:generate-test.RSpec" id="a-607278188">Generating a test with specification in RSpec format</a></li>
2939
- <li><a href="#fig:generate-test.xUnit" id="a-607073088">Generating a test with specification in xUnit format</a></li>
2940
- <li><a href="#fig:RSpec_counter_spec.rb" id="a-607085368">Specification implemented in RSpec format</a></li>
2941
- <li><a href="#fig:xUnit_counter_spec.rb" id="a-607089898">Specification implemented in xUnit format</a></li>
2942
- <li><a href="#fig:counter_proto.rb" id="a-607102138">Ruby prototype of our Verilog design</a></li>
2943
- <li><a href="#fig:test-proto.RSpec" id="a-607119008">Running a test with specification in RSpec format</a></li>
2944
- <li><a href="#fig:test-proto.unit-test" id="a-607123158">Running a test with specification in xUnit format</a></li>
2945
- <li><a href="#fig:counter.v_impl" id="a-607135238">Implementation of a simple up-counter with synchronous reset</a></li>
2946
- <li><a href="#fig:test-design.RSpec" id="a-607141778">Running a test with specification in RSpec format</a></li>
2947
- <li><a href="#fig:test-design.unit-test" id="a-607144398">Running a test with specification in xUnit format</a></li>
2948
- <li><a href="#ex:TestFoo" id="a-607336038">Part of a bench which instantiates a Verilog design</a></li>
2949
- <li><a href="#ex:TestFoo_bad" id="a-607342098">Bad design with unconnected registers</a></li>
2950
- <li><a href="#ex:TestFoo_fix" id="a-607344538">Fixed design with wired registers</a></li>
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>