ruby-vpi 16.0.0 → 16.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/Rakefile +2 -4
  2. data/doc/history.html +147 -126
  3. data/doc/history.yaml +17 -0
  4. data/doc/manual.html +76 -76
  5. data/doc/memo.html +4 -4
  6. data/doc/readme.html +9 -9
  7. data/doc/rss.xml +25 -0
  8. data/ext/Rakefile +1 -1
  9. data/ext/swig_wrap.cin +198 -220
  10. data/lib/ruby-vpi/rake.rb +1 -1
  11. data/lib/ruby-vpi/runner.rb +1 -1
  12. data/ref/c/annotated.html +3 -3
  13. data/ref/c/common_8h.html +12 -12
  14. data/ref/c/doxygen.css +1 -1
  15. data/ref/c/files.html +3 -3
  16. data/ref/c/functions.html +97 -47
  17. data/ref/c/functions_vars.html +97 -47
  18. data/ref/c/globals.html +5 -4
  19. data/ref/c/globals_0x63.html +67 -35
  20. data/ref/c/globals_0x65.html +5 -4
  21. data/ref/c/globals_0x66.html +5 -4
  22. data/ref/c/globals_0x6d.html +12 -6
  23. data/ref/c/globals_0x70.html +37 -20
  24. data/ref/c/globals_0x72.html +20 -10
  25. data/ref/c/globals_0x73.html +21 -12
  26. data/ref/c/globals_0x74.html +5 -4
  27. data/ref/c/globals_0x76.html +851 -425
  28. data/ref/c/globals_0x78.html +5 -4
  29. data/ref/c/globals_defs.html +67 -35
  30. data/ref/c/globals_defs_0x65.html +5 -4
  31. data/ref/c/globals_defs_0x70.html +7 -5
  32. data/ref/c/globals_defs_0x76.html +837 -420
  33. data/ref/c/globals_defs_0x78.html +5 -4
  34. data/ref/c/globals_enum.html +5 -4
  35. data/ref/c/globals_eval.html +7 -5
  36. data/ref/c/globals_func.html +50 -15
  37. data/ref/c/globals_type.html +53 -28
  38. data/ref/c/globals_vars.html +14 -8
  39. data/ref/c/index.html +3 -3
  40. data/ref/c/main_8c.html +3 -3
  41. data/ref/c/main_8h.html +3 -3
  42. data/ref/c/relay_8c.html +3 -3
  43. data/ref/c/relay_8h.html +3 -3
  44. data/ref/c/structt__cb__data.html +15 -15
  45. data/ref/c/structt__vpi__delay.html +15 -15
  46. data/ref/c/structt__vpi__error__info.html +17 -17
  47. data/ref/c/structt__vpi__strengthval.html +3 -3
  48. data/ref/c/structt__vpi__systf__data.html +15 -15
  49. data/ref/c/structt__vpi__time.html +11 -11
  50. data/ref/c/structt__vpi__value.html +21 -21
  51. data/ref/c/structt__vpi__vecval.html +3 -3
  52. data/ref/c/structt__vpi__vlog__info.html +3 -3
  53. data/ref/c/verilog_8h.html +3 -3
  54. data/ref/c/vlog_8c.html +3 -3
  55. data/ref/c/vlog_8h.html +3 -3
  56. data/ref/c/vpi__user_8h.html +3 -3
  57. data/ref/ruby/classes/ERB.html +1 -1
  58. data/ref/ruby/classes/FileUtils.html +3 -2
  59. data/ref/ruby/classes/FileUtils.src/M000025.html +1 -1
  60. data/ref/ruby/classes/Float.html +2 -1
  61. data/ref/ruby/classes/Integer.html +12 -8
  62. data/ref/ruby/classes/RubyVpi/Config.html +1 -1
  63. data/ref/ruby/classes/Vpi.html +3 -3
  64. data/ref/ruby/classes/Vpi/Handle.html +1 -1
  65. data/ref/ruby/classes/Vpi/S_vpi_time.html +5 -3
  66. data/ref/ruby/created.rid +1 -1
  67. data/ref/ruby/files/bin/generate_test_rb.html +3 -3
  68. data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
  69. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  70. data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
  71. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  72. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  73. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  74. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  75. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  76. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
  77. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
  78. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
  79. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  80. metadata +24 -24
@@ -1,3 +1,20 @@
1
+ -
2
+ Version: 16.0.1
3
+
4
+ Date: 2007-05-27
5
+
6
+ Record: |
7
+ This release restores support for installation on Mac OS X.
8
+
9
+ h2. Thanks
10
+
11
+ * Mark Thompson "reported and solved":http://rubyforge.org/tracker/index.php?func=detail&aid=11125&group_id=1339&atid=5281 the problem.
12
+
13
+ h2. Repairs
14
+
15
+ * Shared-object files have a file extension of <tt>.so</tt> in Linux and <tt>.bundle</tt> on Mac OS X. Previously, only the Linux file extension was supported.
16
+
17
+
1
18
  -
2
19
  Version: 16.0.0
3
20
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  <div id="index">
20
20
  <h1>Contents</h1>
21
- <ul><li><a id="a-606992228" href="#Ruby-VPI_user_manual">Ruby-VPI user manual</a><ul><li><a id="a-606993518" href="#legal">Legalities</a></li></ul></li><li><a id="a-606994448" href="#intro">Introduction</a><ul><li><a id="a-606995298" href="#Resources">Resources</a></li><li><a id="a-606996238" href="#intro.features">Features</a></li><li><a id="a-606997278" href="#intro.reqs">Requirements</a></li><li><a id="a-606998228" href="#intro.applications">Applications</a></li><li><a id="a-606999338" href="#intro.appetizers">Appetizers</a></li><li><a id="a-607000438" href="#intro.license">License</a></li><li><a id="a-606014748" href="#intro.related-works">Related works</a><ul><li><a id="a-606035648" href="#intro.related-works.pli">Ye olde <span class="caps">PLI</span></a></li></ul></li></ul></li><li><a id="a-606053288" href="#background">Background</a><ul><li><a id="a-606069898" href="#background.methodology">Methodology</a></li><li><a id="a-606106808" href="#background.vocab">Terminology</a></li><li><a id="a-606127698" href="#background.org">Organization</a></li><li><a id="a-606150238" href="#background.relay">Ruby/Verilog interaction</a></li></ul></li><li><a id="a-606180548" href="#setup">Setup</a><ul><li><a id="a-606192588" href="#setup.manifest">Manifest</a></li><li><a id="a-606206048" href="#setup.reqs">Requirements</a></li><li><a id="a-606213438" href="#setup.recom">Recommendations</a><ul><li><a id="a-606235588" href="#setup.recom.merger">Text merging tool</a></li></ul></li><li><a id="a-606251368" href="#setup.installation">Installation</a><ul><li><a id="a-606273678" href="#setup.installation.windows">Installing on Windows</a></li></ul></li><li><a id="a-606278328" href="#setup.maintenance">Maintenance</a></li></ul></li><li><a id="a-606285848" href="#usage">Usage</a><ul><li><a id="a-606290248" href="#usage.vpi"><span class="caps">VPI</span> in Ruby</a><ul><li><a id="a-606294778" href="#usage.vpi.handles">Handles</a><ul><li><a id="a-606297428" href="#Accessing_a_handle__8217_s_relatives">Accessing a handle&#8217;s relatives</a></li><li><a id="a-606305088" href="#Accessing_a_handle__8217_s_properties">Accessing a handle&#8217;s properties</a></li></ul></li><li><a id="a-605776528" href="#usage.vpi.callbacks">Callbacks</a></li></ul></li><li><a id="a-605820298" href="#usage.prototyping">Prototyping</a></li><li><a id="a-605856998" href="#usage.debugger">Debugging</a><ul><li><a id="a-605861038" href="#usage.debugger.init">Advanced initialization</a></li></ul></li><li><a id="a-605886638" href="#usage.test-runner">Test runner</a><ul><li><a id="a-605692898" href="#usage.test-runner.env-vars">Environment variables</a></li></ul></li><li><a id="a-605713518" href="#usage.examples">Sample tests</a></li><li><a id="a-605735618" href="#usage.tools">Tools</a><ul><li><a id="a-606420358" href="#usage.tools.generate-test">Automated test generation</a></li><li><a id="a-606426458" href="#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></li></ul></li><li><a id="a-606430138" href="#usage.tutorial">Tutorial</a><ul><li><a id="a-606439718" href="#usage.tutorial.declare-design">Start with a design</a></li><li><a id="a-606447618" href="#usage.tutorial.generate-test">Generate a test</a></li><li><a id="a-606455858" href="#usage.tutorial.specification">Specify your expectations</a></li><li><a id="a-606466508" href="#usage.tutorial.implement-proto">Implement the prototype</a></li><li><a id="a-606469388" href="#usage.tutorial.test-proto">Verify the prototype</a></li><li><a id="a-606472858" href="#usage.tutorial.implement-design">Implement the design</a></li><li><a id="a-606480598" href="#usage.tutorial.test-design">Verify the design</a></li></ul></li></ul></li><li><a id="a-606487878" href="#hacking">Hacking</a><ul><li><a id="a-606495208" href="#hacking.scm">Getting the source code</a></li><li><a id="a-606502868" href="#hacking.release-packages">Building release packages</a></li></ul></li><li><a id="a-606510668" href="#problems">Known problems</a><ul><li><a id="a-606514648" href="#problems.ruby">Ruby</a><ul><li><a id="a-606529698" href="#problems.ruby.SystemStackError">SystemStackError</a></li><li><a id="a-606545738" href="#problems.ruby.xUnit">test/unit</a></li></ul></li><li><a id="a-606557578" href="#problem.ivl">Icarus Verilog</a><ul><li><a id="a-606563378" href="#problems.ivl.vpi_handle_by_name">Vpi::vpi_handle_by_name</a><ul><li><a id="a-606577748" href="#problems.ivl.vpi_handle_by_name.absolute-paths">Give full paths to Verilog objects</a></li><li><a id="a-606588618" href="#problems.ivl.vpi_handle_by_name.connect-registers">Registers must be connected</a></li></ul></li><li><a id="a-606593458" href="#problems.ivl.vpi_reset">Vpi::reset</a></li></ul></li><li><a id="a-606596948" href="#problems.vsim">Mentor Modelsim</a><ul><li><a id="a-606600738" href="#problems.vsim.ruby_run">ruby_run();</a></li></ul></li></ul></li><li><a id="a-606604778" href="#glossary">Glossary</a><ul><li><a id="a-606606678" href="#glossary.bench">Bench</a></li><li><a id="a-606613558" href="#glossary.BDD">Behavior driven development (BDD)</a></li><li><a id="a-606620958" href="#glossary.design">Design</a></li><li><a id="a-606623008" href="#glossary.expectation">Expectation</a></li><li><a id="a-606624858" href="#glossary.handle">Handle</a></li><li><a id="a-606628418" href="#glossary.rake">Rake</a></li><li><a id="a-606630878" href="#glossary.rspec">rSpec</a></li><li><a id="a-606636388" href="#glossary.specification">Specification</a></li><li><a id="a-606640878" href="#glossary.TDD">Test driven development (TDD)</a></li><li><a id="a-606643148" href="#glossary.test">Test</a></li><li><a id="a-606646838" href="#glossary.test_bench">Test bench</a></li></ul></li></ul>
21
+ <ul><li><a id="a-607892658" href="#Ruby-VPI_user_manual">Ruby-VPI user manual</a><ul><li><a id="a-607893938" href="#legal">Legalities</a></li></ul></li><li><a id="a-607894868" href="#intro">Introduction</a><ul><li><a id="a-607895718" href="#Resources">Resources</a></li><li><a id="a-607896658" href="#intro.features">Features</a></li><li><a id="a-607897688" href="#intro.reqs">Requirements</a></li><li><a id="a-607898638" href="#intro.applications">Applications</a></li><li><a id="a-607899748" href="#intro.appetizers">Appetizers</a></li><li><a id="a-607900808" href="#intro.license">License</a></li><li><a id="a-607901818" href="#intro.related-works">Related works</a><ul><li><a id="a-607903008" href="#intro.related-works.pli">Ye olde <span class="caps">PLI</span></a></li></ul></li></ul></li><li><a id="a-607904308" href="#background">Background</a><ul><li><a id="a-607905318" href="#background.methodology">Methodology</a></li><li><a id="a-607906508" href="#background.vocab">Terminology</a></li><li><a id="a-607907578" href="#background.org">Organization</a></li><li><a id="a-607908608" href="#background.relay">Ruby/Verilog interaction</a></li></ul></li><li><a id="a-607909748" href="#setup">Setup</a><ul><li><a id="a-607910668" href="#setup.manifest">Manifest</a></li><li><a id="a-607911698" href="#setup.reqs">Requirements</a></li><li><a id="a-607912638" href="#setup.recom">Recommendations</a><ul><li><a id="a-607913678" href="#setup.recom.merger">Text merging tool</a></li></ul></li><li><a id="a-607914868" href="#setup.installation">Installation</a><ul><li><a id="a-607916038" href="#setup.installation.windows">Installing on Windows</a></li></ul></li><li><a id="a-607917378" href="#setup.maintenance">Maintenance</a></li></ul></li><li><a id="a-607918548" href="#usage">Usage</a><ul><li><a id="a-607919458" href="#usage.vpi"><span class="caps">VPI</span> in Ruby</a><ul><li><a id="a-607920448" href="#usage.vpi.handles">Handles</a><ul><li><a id="a-607921548" href="#Accessing_a_handle__8217_s_relatives">Accessing a handle&#8217;s relatives</a></li><li><a id="a-607922938" href="#Accessing_a_handle__8217_s_properties">Accessing a handle&#8217;s properties</a></li></ul></li><li><a id="a-607924498" href="#usage.vpi.callbacks">Callbacks</a></li></ul></li><li><a id="a-607925708" href="#usage.prototyping">Prototyping</a></li><li><a id="a-607926808" href="#usage.debugger">Debugging</a><ul><li><a id="a-607927888" href="#usage.debugger.init">Advanced initialization</a></li></ul></li><li><a id="a-607929098" href="#usage.test-runner">Test runner</a><ul><li><a id="a-607930258" href="#usage.test-runner.env-vars">Environment variables</a></li></ul></li><li><a id="a-607931608" href="#usage.examples">Sample tests</a></li><li><a id="a-607932628" href="#usage.tools">Tools</a><ul><li><a id="a-607933658" href="#usage.tools.generate-test">Automated test generation</a></li><li><a id="a-607934908" href="#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></li></ul></li><li><a id="a-607936328" href="#usage.tutorial">Tutorial</a><ul><li><a id="a-607937408" href="#usage.tutorial.declare-design">Start with a design</a></li><li><a id="a-607938748" href="#usage.tutorial.generate-test">Generate a test</a></li><li><a id="a-607940058" href="#usage.tutorial.specification">Specify your expectations</a></li><li><a id="a-607941368" href="#usage.tutorial.implement-proto">Implement the prototype</a></li><li><a id="a-607942708" href="#usage.tutorial.test-proto">Verify the prototype</a></li><li><a id="a-607943958" href="#usage.tutorial.implement-design">Implement the design</a></li><li><a id="a-607945338" href="#usage.tutorial.test-design">Verify the design</a></li></ul></li></ul></li><li><a id="a-607946678" href="#hacking">Hacking</a><ul><li><a id="a-607947628" href="#hacking.scm">Getting the source code</a></li><li><a id="a-607948608" href="#hacking.release-packages">Building release packages</a></li></ul></li><li><a id="a-607949918" href="#problems">Known problems</a><ul><li><a id="a-607950878" href="#problems.ruby">Ruby</a><ul><li><a id="a-607951958" href="#problems.ruby.SystemStackError">SystemStackError</a></li><li><a id="a-607953298" href="#problems.ruby.xUnit">test/unit</a></li></ul></li><li><a id="a-607954508" href="#problem.ivl">Icarus Verilog</a><ul><li><a id="a-607955538" href="#problems.ivl.vpi_handle_by_name">Vpi::vpi_handle_by_name</a><ul><li><a id="a-607956978" href="#problems.ivl.vpi_handle_by_name.absolute-paths">Give full paths to Verilog objects</a></li><li><a id="a-607958638" href="#problems.ivl.vpi_handle_by_name.connect-registers">Registers must be connected</a></li></ul></li><li><a id="a-607960458" href="#problems.ivl.vpi_reset">Vpi::reset</a></li></ul></li><li><a id="a-607961718" href="#problems.vsim">Mentor Modelsim</a><ul><li><a id="a-607962798" href="#problems.vsim.ruby_run">ruby_run();</a></li></ul></li></ul></li><li><a id="a-607964068" href="#glossary">Glossary</a><ul><li><a id="a-607965038" href="#glossary.bench">Bench</a></li><li><a id="a-607966068" href="#glossary.BDD">Behavior driven development (BDD)</a></li><li><a id="a-607967048" href="#glossary.design">Design</a></li><li><a id="a-607968108" href="#glossary.expectation">Expectation</a></li><li><a id="a-607969248" href="#glossary.handle">Handle</a></li><li><a id="a-607970298" href="#glossary.rake">Rake</a></li><li><a id="a-607971318" href="#glossary.rspec">rSpec</a></li><li><a id="a-607972348" href="#glossary.specification">Specification</a></li><li><a id="a-607973538" href="#glossary.TDD">Test driven development (TDD)</a></li><li><a id="a-607974518" href="#glossary.test">Test</a></li><li><a id="a-607975528" href="#glossary.test_bench">Test bench</a></li></ul></li></ul>
22
22
 
23
23
  <h1>Formals</h1>
24
24
 
@@ -82,10 +82,10 @@
82
82
  <li><a href="#important4">Before we continue&#8230;</a></li>
83
83
  </ol>
84
84
  </div>
85
- <h1><a id="Ruby-VPI_user_manual" href="#a-606992228">1</a> &nbsp; Ruby-VPI user manual</h1>
85
+ <h1><a id="Ruby-VPI_user_manual" href="#a-607892658">1</a> &nbsp; Ruby-VPI user manual</h1>
86
86
 
87
87
 
88
- <p>This manual was last updated on Wed May 02 23:05:05 <span class="caps">PDT 2007</span>.</p>
88
+ <p>This manual was last updated on Sun May 27 14:47:38 -0700 2007.</p>
89
89
 
90
90
 
91
91
  <p>It is meant to be read in conjunction with the <a href="../ref/ruby/index.html">reference documentation for Ruby-VPI</a>. In addition, if you are new to <a href="http://www.ruby-lang.org">the Ruby language</a>, you are encouraged to <a href="http://www.ruby-lang.org/en/documentation/">explore its documentation</a> alongside this manual.</p>
@@ -97,7 +97,7 @@
97
97
  <p><em>Happy reading!</em></p>
98
98
 
99
99
 
100
- <h2 ><a id="legal" href="#a-606993518">1.1</a> &nbsp; Legalities</h2>
100
+ <h2 ><a id="legal" href="#a-607893938">1.1</a> &nbsp; Legalities</h2>
101
101
 
102
102
 
103
103
  <p>This manual is distributed under <a href="#intro.license">the same license as Ruby-VPI</a>.</p>
@@ -106,7 +106,7 @@
106
106
  <p>The admonition and navigation graphics used in this manual are Copyright&#169; 2005, 2006 <a href="http://tango.freedesktop.org">Tango Desktop Project</a> and are licensed under <a href="./images/tango/LICENSE">these terms</a>.</p>
107
107
 
108
108
 
109
- <h1 ><a id="intro" href="#a-606994448">2</a> &nbsp; Introduction</h1>
109
+ <h1 ><a id="intro" href="#a-607894868">2</a> &nbsp; Introduction</h1>
110
110
 
111
111
 
112
112
  <p>Ruby-VPI is a platform for unit testing, rapid prototyping, and systems integration of Verilog modules through the <a href="http://www.ruby-lang.org">Ruby programming language</a>. It lets you:</p>
@@ -125,7 +125,7 @@
125
125
 
126
126
  <div id="resources">
127
127
 
128
- <h2><a id="Resources" href="#a-606995298">2.1</a> &nbsp; Resources</h2>
128
+ <h2><a id="Resources" href="#a-607895718">2.1</a> &nbsp; Resources</h2>
129
129
 
130
130
 
131
131
  <p class="title">Records</p>
@@ -182,7 +182,7 @@
182
182
 
183
183
  </div>
184
184
 
185
- <h2 ><a id="intro.features" href="#a-606996238">2.2</a> &nbsp; Features</h2>
185
+ <h2 ><a id="intro.features" href="#a-607896658">2.2</a> &nbsp; Features</h2>
186
186
 
187
187
 
188
188
  <p class="title">Portable</p>
@@ -239,7 +239,7 @@
239
239
  </ul>
240
240
 
241
241
 
242
- <h2 ><a id="intro.reqs" href="#a-606997278">2.3</a> &nbsp; Requirements</h2>
242
+ <h2 ><a id="intro.reqs" href="#a-607897688">2.3</a> &nbsp; Requirements</h2>
243
243
 
244
244
 
245
245
  <p>The following software is necessary in order to use Ruby-VPI.</p>
@@ -317,7 +317,7 @@
317
317
  </ul>
318
318
 
319
319
 
320
- <h2 ><a id="intro.applications" href="#a-606998228">2.4</a> &nbsp; Applications</h2>
320
+ <h2 ><a id="intro.applications" href="#a-607898638">2.4</a> &nbsp; Applications</h2>
321
321
 
322
322
 
323
323
  <p>Examples of tasks that can be performed with Ruby-VPI are:</p>
@@ -351,7 +351,7 @@
351
351
  </ul>
352
352
 
353
353
 
354
- <h2 ><a id="intro.appetizers" href="#a-606999338">2.5</a> &nbsp; Appetizers</h2>
354
+ <h2 ><a id="intro.appetizers" href="#a-607899748">2.5</a> &nbsp; Appetizers</h2>
355
355
 
356
356
 
357
357
  <p>Here is a tiny sampling of code to whet your appetite. See <a href="manual.html#usage.tutorial">the tutorial</a> for more samples.</p>
@@ -397,7 +397,7 @@
397
397
  </blockquote>
398
398
 
399
399
 
400
- <h2 ><a id="intro.license" href="#a-607000438">2.6</a> &nbsp; License</h2>
400
+ <h2 ><a id="intro.license" href="#a-607900808">2.6</a> &nbsp; License</h2>
401
401
 
402
402
 
403
403
  <p>Copyright&#169; 2006-2007 Suraj N. Kurapati</p>
@@ -428,7 +428,7 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
428
428
  <span class="caps">THE SOFTWARE</span>.</p>
429
429
 
430
430
 
431
- <h2 ><a id="intro.related-works" href="#a-606014748">2.7</a> &nbsp; Related works</h2>
431
+ <h2 ><a id="intro.related-works" href="#a-607901818">2.7</a> &nbsp; Related works</h2>
432
432
 
433
433
 
434
434
  <ul>
@@ -440,7 +440,7 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
440
440
  </ul>
441
441
 
442
442
 
443
- <h3 ><a id="intro.related-works.pli" href="#a-606035648">2.7.1</a> &nbsp; Ye olde <span class="caps">PLI</span></h3>
443
+ <h3 ><a id="intro.related-works.pli" href="#a-607903008">2.7.1</a> &nbsp; Ye olde <span class="caps">PLI</span></h3>
444
444
 
445
445
 
446
446
  <p>The following projects utilize the archaic <strong>tf</strong> and <strong>acc</strong> PLI interfaces, which have been officially deprecated in <span class="caps">IEEE</span> Std 1364-2005.</p>
@@ -453,16 +453,16 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
453
453
  </ul>
454
454
 
455
455
 
456
- <h1 ><a id="background" href="#a-606053288">3</a> &nbsp; Background</h1>
456
+ <h1 ><a id="background" href="#a-607904308">3</a> &nbsp; Background</h1>
457
457
 
458
458
 
459
- <h2 ><a id="background.methodology" href="#a-606069898">3.1</a> &nbsp; Methodology</h2>
459
+ <h2 ><a id="background.methodology" href="#a-607905318">3.1</a> &nbsp; Methodology</h2>
460
460
 
461
461
 
462
462
  <p>Ruby-VPI presents an open-ended interface to <span class="caps">VPI</span>. Thus, you can use any methodology you wish when writing tests. However, being an agile language, Ruby makes it <em>very</em> easy to use agile development practies such as <a href="#glossary.TDD"><span class="caps">TDD</span></a> and <a href="#glossary.BDD"><span class="caps">BDD</span></a>.</p>
463
463
 
464
464
 
465
- <h2 ><a id="background.vocab" href="#a-606106808">3.2</a> &nbsp; Terminology</h2>
465
+ <h2 ><a id="background.vocab" href="#a-607906508">3.2</a> &nbsp; Terminology</h2>
466
466
 
467
467
 
468
468
  <div class="admonition">
@@ -494,7 +494,7 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
494
494
  <p>Alright, now I remember what a laboratory bench is, but how does that compare with the term test bench? Surely they cannot have the same meaning, because it doesn&#8217;t make sense to <em>run</em> a laboratory bench or to <em>write</em> one. Thus, to avoid propagating such confusion into this manual, I have attempted to clarify the terminology by <a href="#glossary">simplifying and reintroducing it in a new light</a>.</p>
495
495
 
496
496
 
497
- <h2 ><a id="background.org" href="#a-606127698">3.3</a> &nbsp; Organization</h2>
497
+ <h2 ><a id="background.org" href="#a-607907578">3.3</a> &nbsp; Organization</h2>
498
498
 
499
499
 
500
500
  <div class="formal">
@@ -537,7 +537,7 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
537
537
  <p>Notice that Ruby-VPI encapsulates all communication between the Ruby interpreter and <span class="caps">VPI</span>. This allows the specification, or any Ruby program in general, to access <span class="caps">VPI</span> using nothing more than the Ruby language! Thus, Ruby-VPI removes the burden of having to write C programs in order to use <span class="caps">VPI</span>.</p>
538
538
 
539
539
 
540
- <h2 ><a id="background.relay" href="#a-606150238">3.4</a> &nbsp; Ruby/Verilog interaction</h2>
540
+ <h2 ><a id="background.relay" href="#a-607908608">3.4</a> &nbsp; Ruby/Verilog interaction</h2>
541
541
 
542
542
 
543
543
  <p>In a typical <span class="caps">VPI</span> application written in C, the <em>Verilog simulator</em> is in charge. Verilog code temporarily transfers control to C by invoking C functions, which return control to Verilog when they finish.</p>
@@ -574,10 +574,10 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
574
574
 
575
575
  </div>
576
576
 
577
- <h1 ><a id="setup" href="#a-606180548">4</a> &nbsp; Setup</h1>
577
+ <h1 ><a id="setup" href="#a-607909748">4</a> &nbsp; Setup</h1>
578
578
 
579
579
 
580
- <h2 ><a id="setup.manifest" href="#a-606192588">4.1</a> &nbsp; Manifest</h2>
580
+ <h2 ><a id="setup.manifest" href="#a-607910668">4.1</a> &nbsp; Manifest</h2>
581
581
 
582
582
 
583
583
  <p>When you extract a release package, the following is what you would expect to find.</p>
@@ -593,7 +593,7 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
593
593
  </ul>
594
594
 
595
595
 
596
- <h2 ><a id="setup.reqs" href="#a-606206048">4.2</a> &nbsp; Requirements</h2>
596
+ <h2 ><a id="setup.reqs" href="#a-607911698">4.2</a> &nbsp; Requirements</h2>
597
597
 
598
598
 
599
599
  <p>See <a href="#intro.reqs">the section named &ldquo;Requirements&rdquo;</a> above.</p>
@@ -616,13 +616,13 @@ of distribution plus a nominal fee, with information on how to obtain the Code.<
616
616
 
617
617
  </div>
618
618
 
619
- <h2 ><a id="setup.recom" href="#a-606213438">4.3</a> &nbsp; Recommendations</h2>
619
+ <h2 ><a id="setup.recom" href="#a-607912638">4.3</a> &nbsp; Recommendations</h2>
620
620
 
621
621
 
622
622
  <p>The following software may make your interactions with Ruby-VPI more pleasant.</p>
623
623
 
624
624
 
625
- <h3 ><a id="setup.recom.merger" href="#a-606235588">4.3.1</a> &nbsp; Text merging tool</h3>
625
+ <h3 ><a id="setup.recom.merger" href="#a-607913678">4.3.1</a> &nbsp; Text merging tool</h3>
626
626
 
627
627
 
628
628
  An <em>interactive</em> text merging tool can greatly simplify the process of transferring wanted changes from one file to another. In particular, such tools are especially beneficial when using the <a href="#usage.tools.generate-test">automated test generator</a>. A handful of the currently available open-source text merging tools are listed below.
@@ -635,7 +635,7 @@ An <em>interactive</em> text merging tool can greatly simplify the process of tr
635
635
  </ul>
636
636
 
637
637
 
638
- <h2 ><a id="setup.installation" href="#a-606251368">4.4</a> &nbsp; Installation</h2>
638
+ <h2 ><a id="setup.installation" href="#a-607914868">4.4</a> &nbsp; Installation</h2>
639
639
 
640
640
 
641
641
  <p>Once you have satisfied the <a href="#setup.reqs">necessary requirements</a>, you can install Ruby-VPI by running the <pre>gem install -y ruby-vpi</pre> command. RubyGems will install Ruby-VPI into the system gem directory, whose path can be determined by running the <pre>gem env gemdir</pre> command. Within this directory, there is a <tt>gems/</tt> subdirectory which contains the Ruby-VPI installation, as illustrated below.</p>
@@ -649,7 +649,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
649
649
  /usr/lib/ruby/gems/1.8/gems/ruby-vpi-7.0.0/
650
650
  </pre>
651
651
 
652
- <h3 ><a id="setup.installation.windows" href="#a-606273678">4.4.1</a> &nbsp; Installing on Windows</h3>
652
+ <h3 ><a id="setup.installation.windows" href="#a-607916038">4.4.1</a> &nbsp; Installing on Windows</h3>
653
653
 
654
654
 
655
655
  <ul>
@@ -701,7 +701,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
701
701
  </ul>
702
702
 
703
703
 
704
- <h2 ><a id="setup.maintenance" href="#a-606278328">4.5</a> &nbsp; Maintenance</h2>
704
+ <h2 ><a id="setup.maintenance" href="#a-607917378">4.5</a> &nbsp; Maintenance</h2>
705
705
 
706
706
 
707
707
  <ul>
@@ -713,10 +713,10 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
713
713
  <p>Learn more about using and manipulating RubyGems in <a href="http://www.rubygems.org">the RubyGems user manual</a>.</p>
714
714
 
715
715
 
716
- <h1 ><a id="usage" href="#a-606285848">5</a> &nbsp; Usage</h1>
716
+ <h1 ><a id="usage" href="#a-607918548">5</a> &nbsp; Usage</h1>
717
717
 
718
718
 
719
- <h2 ><a id="usage.vpi" href="#a-606290248">5.1</a> &nbsp; <span class="caps">VPI</span> in Ruby</h2>
719
+ <h2 ><a id="usage.vpi" href="#a-607919458">5.1</a> &nbsp; <span class="caps">VPI</span> in Ruby</h2>
720
720
 
721
721
 
722
722
  <p>The <em>entire</em> IEEE Std 1364-2005 <span class="caps">VPI</span> interface is available in Ruby, but with a few minor differences.</p>
@@ -764,7 +764,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
764
764
  }
765
765
  </pre>
766
766
 
767
- <h3 ><a id="usage.vpi.handles" href="#a-606294778">5.1.1</a> &nbsp; Handles</h3>
767
+ <h3 ><a id="usage.vpi.handles" href="#a-607920448">5.1.1</a> &nbsp; Handles</h3>
768
768
 
769
769
 
770
770
  <p>A <em>handle</em> is a reference to an object, such as a module, register, wire, and so on, inside the Verilog simulation. In short, handles allow you to inspect and manipulate the design under test and its components.</p>
@@ -802,7 +802,7 @@ $ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
802
802
  <p>If a handle&#8217;s relative happens to have the same name as one of the handle&#8217;s properties, then the relative is given preference. However, if you <em>really</em> need to access a handle&#8217;s property in such a situation, then you can use the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.get_value</code> and <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> methods.</p>
803
803
 
804
804
 
805
- <h4><a id="Accessing_a_handle__8217_s_relatives" href="#a-606297428">5.1.1.1</a> &nbsp; Accessing a handle&#8217;s relatives</h4>
805
+ <h4><a id="Accessing_a_handle__8217_s_relatives" href="#a-607921548">5.1.1.1</a> &nbsp; Accessing a handle&#8217;s relatives</h4>
806
806
 
807
807
 
808
808
  <p>To access a handle&#8217;s relative (a handle related to it), simply invoke the relative&#8217;s name as a method on the handle.</p>
@@ -820,7 +820,7 @@ reset_signal = counter_module.reset <span style="color:#888"># &lt;== shortcut!<
820
820
  <p>In this code, the shortcut is that you simply wrote <code class="code">counter_module.reset</code> instead of having to write <code class="code">vpi_handle_by_name(<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">reset</span><span style="color:#710">&quot;</span></span>, counter_module)</code>.</p>
821
821
 
822
822
 
823
- <h4><a id="Accessing_a_handle__8217_s_properties" href="#a-606305088">5.1.1.2</a> &nbsp; Accessing a handle&#8217;s properties</h4>
823
+ <h4><a id="Accessing_a_handle__8217_s_properties" href="#a-607922938">5.1.1.2</a> &nbsp; Accessing a handle&#8217;s properties</h4>
824
824
 
825
825
 
826
826
  <p>To access a handle&#8217;s properties, invoke the property name, using the following format, as a method on the handle. <a href="#ex..properties">the example named &ldquo;Examples of accessing a handle's properties&rdquo;</a> shows how this naming format is used.</p>
@@ -1259,7 +1259,7 @@ reset_signal = counter_module.reset <span style="color:#888"># &lt;== shortcut!<
1259
1259
 
1260
1260
  </div>
1261
1261
 
1262
- <h3 ><a id="usage.vpi.callbacks" href="#a-605776528">5.1.2</a> &nbsp; Callbacks</h3>
1262
+ <h3 ><a id="usage.vpi.callbacks" href="#a-607924498">5.1.2</a> &nbsp; Callbacks</h3>
1263
1263
 
1264
1264
 
1265
1265
  <p>A <em>callback</em> is a mechanism that makes the Verilog simuluator execute a block of code, which is known as a &#8220;callback handler&#8221;, when some prescribed event occurs in the simulation. They are set up using the <code class="code">vpi_register_cb</code> function and torn down using the <code class="code">vpi_remove_cb</code> function.</p>
@@ -1403,7 +1403,7 @@ Finished in 0.042328 seconds
1403
1403
 
1404
1404
  </div>
1405
1405
 
1406
- <h2 ><a id="usage.prototyping" href="#a-605820298">5.2</a> &nbsp; Prototyping</h2>
1406
+ <h2 ><a id="usage.prototyping" href="#a-607925708">5.2</a> &nbsp; Prototyping</h2>
1407
1407
 
1408
1408
 
1409
1409
  <p>Ruby-VPI enables you to rapidly prototype your designs in Ruby without having to do full-scale implementations in Verilog. This lets you explore and evaluate different design choices quickly.</p>
@@ -1424,7 +1424,7 @@ To create a prototype,
1424
1424
  <p>Once your design has been implemented in Verilog, you can use the <em>same</em> specification, which was originally used to verify your prototype, to verify your Verilog design.</p>
1425
1425
 
1426
1426
 
1427
- <h2 ><a id="usage.debugger" href="#a-605856998">5.3</a> &nbsp; Debugging</h2>
1427
+ <h2 ><a id="usage.debugger" href="#a-607926808">5.3</a> &nbsp; Debugging</h2>
1428
1428
 
1429
1429
 
1430
1430
  <p>The <a href="http://www.datanoise.com/articles/category/ruby-debug">ruby-debug project</a> serves as the interactive debugger for Ruby-VPI.</p>
@@ -1436,7 +1436,7 @@ To create a prototype,
1436
1436
  </ol>
1437
1437
 
1438
1438
 
1439
- <h3 ><a id="usage.debugger.init" href="#a-605861038">5.3.1</a> &nbsp; Advanced initialization</h3>
1439
+ <h3 ><a id="usage.debugger.init" href="#a-607927888">5.3.1</a> &nbsp; Advanced initialization</h3>
1440
1440
 
1441
1441
 
1442
1442
  <p>By default, Ruby-VPI enables the debugger by invoking the <code class="code"><span style="color:#036; font-weight:bold">Debugger</span>.start</code> method. If you wish to perform more advanced initialization, such as having the debugger accept remote network connections for interfacing with a remote debugging session or perhaps with an <span class="caps">IDE</span> (see <a href="http://www.datanoise.com/articles/category/ruby-debug">the ruby-debug documentation</a> for details), then:</p>
@@ -1448,7 +1448,7 @@ To create a prototype,
1448
1448
  </ol>
1449
1449
 
1450
1450
 
1451
- <h2 ><a id="usage.test-runner" href="#a-605886638">5.4</a> &nbsp; Test runner</h2>
1451
+ <h2 ><a id="usage.test-runner" href="#a-607929098">5.4</a> &nbsp; Test runner</h2>
1452
1452
 
1453
1453
 
1454
1454
  <p>A test runner is a file, generated by the <a href="#usage.tools.generate-test">automated test generator</a>, whose name ends with <tt>.rake</tt>. It helps you run generated tests&#8212;you can think of it as a <em>makefile</em> if you are familiar with C programming in a <span class="caps">UNIX</span> environment.</p>
@@ -1464,7 +1464,7 @@ To create a prototype,
1464
1464
  When you invoke a test runner without any arguments, it will show you a list of available tasks:
1465
1465
  <pre>$ rake -f some_test_runner.rake
1466
1466
 
1467
- (in /home/sun/src/ruby-vpi/doc)
1467
+ (in /home/sun/tmp/ruby-vpi/doc)
1468
1468
  rake clean # Remove any temporary products.
1469
1469
  rake clobber # Remove any generated file.
1470
1470
  rake cver # Simulate with GPL Cver.
@@ -1502,7 +1502,7 @@ rake vsim # Simulate with Mentor Modelsim.
1502
1502
 
1503
1503
  </div>
1504
1504
 
1505
- <h3 ><a id="usage.test-runner.env-vars" href="#a-605692898">5.4.1</a> &nbsp; Environment variables</h3>
1505
+ <h3 ><a id="usage.test-runner.env-vars" href="#a-607930258">5.4.1</a> &nbsp; Environment variables</h3>
1506
1506
 
1507
1507
 
1508
1508
  <p>Test runners support the following <em>environment</em> variables, which allow you to easily change the behavior of the test runner.</p>
@@ -1549,19 +1549,19 @@ Here we <em>disable</em> the prototype and enable the code coverage analysis. No
1549
1549
 
1550
1550
  </div>
1551
1551
 
1552
- <h2 ><a id="usage.examples" href="#a-605713518">5.5</a> &nbsp; Sample tests</h2>
1552
+ <h2 ><a id="usage.examples" href="#a-607931608">5.5</a> &nbsp; Sample tests</h2>
1553
1553
 
1554
1554
 
1555
1555
  <p>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.</p>
1556
1556
 
1557
1557
 
1558
- <h2 ><a id="usage.tools" href="#a-605735618">5.6</a> &nbsp; Tools</h2>
1558
+ <h2 ><a id="usage.tools" href="#a-607932628">5.6</a> &nbsp; Tools</h2>
1559
1559
 
1560
1560
 
1561
1561
  <p>The <tt>bin</tt> directory contains various utilities which ease the process of writing tests. Each tool provides help and usage information invoked with the <tt>--help</tt> option.</p>
1562
1562
 
1563
1563
 
1564
- <h3 ><a id="usage.tools.generate-test" href="#a-606420358">5.6.1</a> &nbsp; Automated test generation</h3>
1564
+ <h3 ><a id="usage.tools.generate-test" href="#a-607933658">5.6.1</a> &nbsp; Automated test generation</h3>
1565
1565
 
1566
1566
 
1567
1567
  <p>The automated test generator (<strong>generate_test.rb</strong>) generates tests from Verilog 2001 module declarations, as demonstrated <a href="#usage.tutorial.generate-test">in the tutorial</a>. A generated test is composed of the following parts:</p>
@@ -1613,7 +1613,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
1613
1613
 
1614
1614
  </div>
1615
1615
 
1616
- <h3 ><a id="usage.tools.verilog-ruby-conv" href="#a-606426458">5.6.2</a> &nbsp; Verilog to Ruby conversion</h3>
1616
+ <h3 ><a id="usage.tools.verilog-ruby-conv" href="#a-607934908">5.6.2</a> &nbsp; Verilog to Ruby conversion</h3>
1617
1617
 
1618
1618
 
1619
1619
  <p>The <strong>header_to_ruby.rb</strong> tool can be used to convert Verilog header files into Ruby. You can try it by running the <pre>header_to_ruby.rb --help</pre> command.</p>
@@ -1622,7 +1622,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
1622
1622
  <p>By converting Verilog header files into Ruby, your <a href="#glossary.test">test</a> can utilize the same <code class="code"><span style="background-color:#f0fff0"><span style="color:#161">`</span><span style="color:#2B2">define</span></span></code> constants that are used in the Verilog <a href="#glossary.design">design</a>.</p>
1623
1623
 
1624
1624
 
1625
- <h2 ><a id="usage.tutorial" href="#a-606430138">5.7</a> &nbsp; Tutorial</h2>
1625
+ <h2 ><a id="usage.tutorial" href="#a-607936328">5.7</a> &nbsp; Tutorial</h2>
1626
1626
 
1627
1627
 
1628
1628
  <ol>
@@ -1636,7 +1636,7 @@ kdiff3 --auto --output <span style="background-color:#fff0f0"><span style="color
1636
1636
  </ol>
1637
1637
 
1638
1638
 
1639
- <h3 ><a id="usage.tutorial.declare-design" href="#a-606439718">5.7.1</a> &nbsp; Start with a design</h3>
1639
+ <h3 ><a id="usage.tutorial.declare-design" href="#a-607937408">5.7.1</a> &nbsp; Start with a design</h3>
1640
1640
 
1641
1641
 
1642
1642
  <p>First, we need a <a href="#glossary.design">design</a> to verify. In this tutorial, <a href="#fig..counter.v_decl">the example named &ldquo;Declaration of a simple up-counter with synchronous reset&rdquo;</a> will serve as our design. Its interface is composed of the following parts:</p>
@@ -1687,7 +1687,7 @@ endmodule
1687
1687
 
1688
1688
  </div>
1689
1689
 
1690
- <h3 ><a id="usage.tutorial.generate-test" href="#a-606447618">5.7.2</a> &nbsp; Generate a test</h3>
1690
+ <h3 ><a id="usage.tutorial.generate-test" href="#a-607938748">5.7.2</a> &nbsp; Generate a test</h3>
1691
1691
 
1692
1692
 
1693
1693
  <p>Now that we have a <a href="#glossary.design">design</a> to verify, let us generate a <a href="#glossary.test">test</a> for it using the <a href="#usage.tools.generate-test">automated test generator</a>. This tool allows us to implement our specification in either rSpec, xUnit, or our very own format.</p>
@@ -1767,7 +1767,7 @@ $ generate_test.rb counter.v --xunit --name xunit
1767
1767
 
1768
1768
  </div>
1769
1769
 
1770
- <h3 ><a id="usage.tutorial.specification" href="#a-606455858">5.7.3</a> &nbsp; Specify your expectations</h3>
1770
+ <h3 ><a id="usage.tutorial.specification" href="#a-607940058">5.7.3</a> &nbsp; Specify your expectations</h3>
1771
1771
 
1772
1772
 
1773
1773
  <p>So far, the test generation tool has created a basic foundation for our <a href="#glossary.test">test</a>. Now we must build upon this foundation by identifying our <a href="#glossary.expectation">expectation</a> of the <a href="#glossary.design">design</a>. That is, how do we expect the design to <em>behave</em> under certain conditions?</p>
@@ -1917,7 +1917,7 @@ context <span style="background-color:#fff0f0"><span style="color:#710">&quot;</
1917
1917
 
1918
1918
  </div>
1919
1919
 
1920
- <h3 ><a id="usage.tutorial.implement-proto" href="#a-606466508">5.7.4</a> &nbsp; Implement the prototype</h3>
1920
+ <h3 ><a id="usage.tutorial.implement-proto" href="#a-607941368">5.7.4</a> &nbsp; Implement the prototype</h3>
1921
1921
 
1922
1922
 
1923
1923
  <p>Now that we have a <a href="#glossary.specification">specification</a> against which to verify our <a href="#glossary.design">design</a>, let us build a prototype of our design. By doing so, we exercise our specification, experience potential problems that may arise when we later implement our design in Verilog, and gain confidence in our work. The result of this proceess is illustrated by <a href="#fig..counter_proto.rb">the example named &ldquo;Ruby prototype of our Verilog design&rdquo;</a>.</p>
@@ -1966,7 +1966,7 @@ context <span style="background-color:#fff0f0"><span style="color:#710">&quot;</
1966
1966
 
1967
1967
  </div>
1968
1968
 
1969
- <h3 ><a id="usage.tutorial.test-proto" href="#a-606469388">5.7.5</a> &nbsp; Verify the prototype</h3>
1969
+ <h3 ><a id="usage.tutorial.test-proto" href="#a-607942708">5.7.5</a> &nbsp; Verify the prototype</h3>
1970
1970
 
1971
1971
 
1972
1972
  <p>Now that we have implemented our prototype, we are ready to verify it against our <a href="#glossary.specification">specification</a> by running the <a href="#glossary.test">test</a>. This process is illustrated by <a href="#fig..test-proto.rspec">the example named &ldquo;Running a test with specification in rSpec format&rdquo;</a> and <a href="#fig..test-proto.unit-test">the example named &ldquo;Running a test with specification in xUnit format&rdquo;</a>.</p>
@@ -2044,7 +2044,7 @@ Finished in 0.040668 seconds.
2044
2044
 
2045
2045
  </div>
2046
2046
 
2047
- <h3 ><a id="usage.tutorial.implement-design" href="#a-606472858">5.7.6</a> &nbsp; Implement the design</h3>
2047
+ <h3 ><a id="usage.tutorial.implement-design" href="#a-607943958">5.7.6</a> &nbsp; Implement the design</h3>
2048
2048
 
2049
2049
 
2050
2050
  <p>Now that we have implemented and verified our prototype, we are ready to implement our <a href="#glossary.design">design</a>. This is often quite simple because we translate <em>existing</em> code from Ruby (our prototype) into Verilog (our design). The result of this process is illustrated by <a href="#fig..counter.v_impl">the example named &ldquo;Implementation of a simple up-counter with synchronous reset&rdquo;</a>.</p>
@@ -2100,7 +2100,7 @@ endmodule
2100
2100
 
2101
2101
  </div>
2102
2102
 
2103
- <h3 ><a id="usage.tutorial.test-design" href="#a-606480598">5.7.7</a> &nbsp; Verify the design</h3>
2103
+ <h3 ><a id="usage.tutorial.test-design" href="#a-607945338">5.7.7</a> &nbsp; Verify the design</h3>
2104
2104
 
2105
2105
 
2106
2106
  <p>Now that we have implemented our <a href="#glossary.design">design</a>, we are ready to verify it against our <a href="#glossary.specification">specification</a> by running the <a href="#glossary.test">test</a>. <a href="#fig..test-design.rspec">the example named &ldquo;Running a test with specification in rSpec format&rdquo;</a> and <a href="#fig..test-design.unit-test">the example named &ldquo;Running a test with specification in xUnit format&rdquo;</a> illustrate this process.</p>
@@ -2157,10 +2157,10 @@ Finished in 0.006766 seconds.
2157
2157
 
2158
2158
  </div>
2159
2159
 
2160
- <h1 ><a id="hacking" href="#a-606487878">6</a> &nbsp; Hacking</h1>
2160
+ <h1 ><a id="hacking" href="#a-607946678">6</a> &nbsp; Hacking</h1>
2161
2161
 
2162
2162
 
2163
- <h2 ><a id="hacking.scm" href="#a-606495208">6.1</a> &nbsp; Getting the source code</h2>
2163
+ <h2 ><a id="hacking.scm" href="#a-607947628">6.1</a> &nbsp; Getting the source code</h2>
2164
2164
 
2165
2165
 
2166
2166
  <p>Check out the source code using <a href="http://darcs.net">Darcs</a> from the project repository:</p>
@@ -2169,7 +2169,7 @@ Finished in 0.006766 seconds.
2169
2169
  <pre>darcs get http://ruby-vpi.rubyforge.org/src/ruby-vpi</pre>
2170
2170
 
2171
2171
 
2172
- <h2 ><a id="hacking.release-packages" href="#a-606502868">6.2</a> &nbsp; Building release packages</h2>
2172
+ <h2 ><a id="hacking.release-packages" href="#a-607948608">6.2</a> &nbsp; Building release packages</h2>
2173
2173
 
2174
2174
 
2175
2175
  <p>In addition to the <a href="#setup.reqs">normal requirements</a>, you need the following software to build release packages:</p>
@@ -2185,16 +2185,16 @@ Finished in 0.006766 seconds.
2185
2185
  <p>Once you have satisfied these requirements, you can run <pre>rake release</pre> to build the release packages. Also, see the output of <pre>rake -T</pre> for more build options.</p>
2186
2186
 
2187
2187
 
2188
- <h1 ><a id="problems" href="#a-606510668">7</a> &nbsp; Known problems</h1>
2188
+ <h1 ><a id="problems" href="#a-607949918">7</a> &nbsp; Known problems</h1>
2189
2189
 
2190
2190
 
2191
2191
  <p>This chapter presents known problems and possible solutions. In addition, previously solved problems have been retained for historical reference.</p>
2192
2192
 
2193
2193
 
2194
- <h2 ><a id="problems.ruby" href="#a-606514648">7.1</a> &nbsp; Ruby</h2>
2194
+ <h2 ><a id="problems.ruby" href="#a-607950878">7.1</a> &nbsp; Ruby</h2>
2195
2195
 
2196
2196
 
2197
- <h3 ><a id="problems.ruby.SystemStackError" href="#a-606529698">7.1.1</a> &nbsp; SystemStackError</h3>
2197
+ <h3 ><a id="problems.ruby.SystemStackError" href="#a-607951958">7.1.1</a> &nbsp; SystemStackError</h3>
2198
2198
 
2199
2199
 
2200
2200
  <div class="admonition">
@@ -2217,7 +2217,7 @@ Finished in 0.006766 seconds.
2217
2217
  <p>If a &#8220;stack level too deep (SystemStackError)&#8221; error occurs during the simulation, then increase the system-resource limit for stack-size by running the <pre>ulimit -s unlimited</pre> command before starting the simulation.</p>
2218
2218
 
2219
2219
 
2220
- <h3 ><a id="problems.ruby.xUnit" href="#a-606545738">7.1.2</a> &nbsp; test/unit</h3>
2220
+ <h3 ><a id="problems.ruby.xUnit" href="#a-607953298">7.1.2</a> &nbsp; test/unit</h3>
2221
2221
 
2222
2222
 
2223
2223
  <div class="admonition">
@@ -2240,13 +2240,13 @@ Finished in 0.006766 seconds.
2240
2240
  <p>If your specification employs Ruby&#8217;s unit testing framework, then you will encounter an error saying &#8220;[BUG] cross-thread violation on rb_gc()&#8221;.</p>
2241
2241
 
2242
2242
 
2243
- <h2 ><a id="problem.ivl" href="#a-606557578">7.2</a> &nbsp; Icarus Verilog</h2>
2243
+ <h2 ><a id="problem.ivl" href="#a-607954508">7.2</a> &nbsp; Icarus Verilog</h2>
2244
2244
 
2245
2245
 
2246
- <h3 ><a id="problems.ivl.vpi_handle_by_name" href="#a-606563378">7.2.1</a> &nbsp; Vpi::vpi_handle_by_name</h3>
2246
+ <h3 ><a id="problems.ivl.vpi_handle_by_name" href="#a-607955538">7.2.1</a> &nbsp; Vpi::vpi_handle_by_name</h3>
2247
2247
 
2248
2248
 
2249
- <h4 ><a id="problems.ivl.vpi_handle_by_name.absolute-paths" href="#a-606577748">7.2.1.1</a> &nbsp; Give full paths to Verilog objects</h4>
2249
+ <h4 ><a id="problems.ivl.vpi_handle_by_name.absolute-paths" href="#a-607956978">7.2.1.1</a> &nbsp; Give full paths to Verilog objects</h4>
2250
2250
 
2251
2251
 
2252
2252
  <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>
@@ -2273,7 +2273,7 @@ endmodule
2273
2273
 
2274
2274
  </div>
2275
2275
 
2276
- <h4 ><a id="problems.ivl.vpi_handle_by_name.connect-registers" href="#a-606588618">7.2.1.2</a> &nbsp; Registers must be connected</h4>
2276
+ <h4 ><a id="problems.ivl.vpi_handle_by_name.connect-registers" href="#a-607958638">7.2.1.2</a> &nbsp; Registers must be connected</h4>
2277
2277
 
2278
2278
 
2279
2279
  <p>In version 0.8 of Icarus Verilog, if you want to access a register in a design, then it must be connected to something (either assigned to a wire or passed as a parameter to a module instantiation). Otherwise, you will get a <code class="code"><span style="color:#038; font-weight:bold">nil</span></code> value as the result of <code class="code">vpi_handle_by_name</code> method.</p>
@@ -2327,16 +2327,16 @@ endmodule
2327
2327
 
2328
2328
  </div>
2329
2329
 
2330
- <h3 ><a id="problems.ivl.vpi_reset" href="#a-606593458">7.2.2</a> &nbsp; Vpi::reset</h3>
2330
+ <h3 ><a id="problems.ivl.vpi_reset" href="#a-607960458">7.2.2</a> &nbsp; Vpi::reset</h3>
2331
2331
 
2332
2332
 
2333
2333
  <p>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.</p>
2334
2334
 
2335
2335
 
2336
- <h2 ><a id="problems.vsim" href="#a-606596948">7.3</a> &nbsp; Mentor Modelsim</h2>
2336
+ <h2 ><a id="problems.vsim" href="#a-607961718">7.3</a> &nbsp; Mentor Modelsim</h2>
2337
2337
 
2338
2338
 
2339
- <h3 ><a id="problems.vsim.ruby_run" href="#a-606600738">7.3.1</a> &nbsp; ruby_run();</h3>
2339
+ <h3 ><a id="problems.vsim.ruby_run" href="#a-607962798">7.3.1</a> &nbsp; ruby_run();</h3>
2340
2340
 
2341
2341
 
2342
2342
  <div class="admonition">
@@ -2359,16 +2359,16 @@ endmodule
2359
2359
  <p>Version 6.1b of Mentor Modelsim doesn&#8217;t play nicely with either an embedded Ruby interpreter or <span class="caps">POSIX</span> threads in a <span class="caps">PLI</span> application. When Ruby-VPI invokes the ruby_run function (which starts the Ruby interpreter), the simulator terminates immediately with an exit status of 0.</p>
2360
2360
 
2361
2361
 
2362
- <h1 ><a id="glossary" href="#a-606604778">8</a> &nbsp; Glossary</h1>
2362
+ <h1 ><a id="glossary" href="#a-607964068">8</a> &nbsp; Glossary</h1>
2363
2363
 
2364
2364
 
2365
- <h2 ><a id="glossary.bench" href="#a-606606678">8.1</a> &nbsp; Bench</h2>
2365
+ <h2 ><a id="glossary.bench" href="#a-607965038">8.1</a> &nbsp; Bench</h2>
2366
2366
 
2367
2367
 
2368
2368
  <p>An environment in which a <a href="#glossary.design">design</a> is verified against a <a href="#glossary.specification">specification</a>. Often, it is used to emulate conditions in which the design will be eventually deployed.</p>
2369
2369
 
2370
2370
 
2371
- <h2 ><a id="glossary.BDD" href="#a-606613558">8.2</a> &nbsp; Behavior driven development (BDD)</h2>
2371
+ <h2 ><a id="glossary.BDD" href="#a-607966068">8.2</a> &nbsp; Behavior driven development (BDD)</h2>
2372
2372
 
2373
2373
 
2374
2374
  <p>An <a href="http://agilemanifesto.org/">agile software development methodology</a> which emphasizes thinking in terms of behavior when designing, implementing, and verifying software.</p>
@@ -2377,25 +2377,25 @@ endmodule
2377
2377
  <p>See the <a href="http://behaviour-driven.org/">official wiki</a> for more information.</p>
2378
2378
 
2379
2379
 
2380
- <h2 ><a id="glossary.design" href="#a-606620958">8.3</a> &nbsp; Design</h2>
2380
+ <h2 ><a id="glossary.design" href="#a-607967048">8.3</a> &nbsp; Design</h2>
2381
2381
 
2382
2382
 
2383
2383
  <p>A Verilog module that is verified against a <a href="#glossary.specification">specification</a> in order to ensure correctness or soundness of its being. In other words, it is the thing being checked: does it work or not?</p>
2384
2384
 
2385
2385
 
2386
- <h2 ><a id="glossary.expectation" href="#a-606623008">8.4</a> &nbsp; Expectation</h2>
2386
+ <h2 ><a id="glossary.expectation" href="#a-607968108">8.4</a> &nbsp; Expectation</h2>
2387
2387
 
2388
2388
 
2389
2389
  <p>The desired response to some stimulus.</p>
2390
2390
 
2391
2391
 
2392
- <h2 ><a id="glossary.handle" href="#a-606624858">8.5</a> &nbsp; Handle</h2>
2392
+ <h2 ><a id="glossary.handle" href="#a-607969248">8.5</a> &nbsp; Handle</h2>
2393
2393
 
2394
2394
 
2395
2395
  <p>A reference to an object inside the Verilog simulation that was obtained through the <code class="code">vpi_handle_by_name</code> function.</p>
2396
2396
 
2397
2397
 
2398
- <h2 ><a id="glossary.rake" href="#a-606628418">8.6</a> &nbsp; Rake</h2>
2398
+ <h2 ><a id="glossary.rake" href="#a-607970298">8.6</a> &nbsp; Rake</h2>
2399
2399
 
2400
2400
 
2401
2401
  <blockquote>
@@ -2406,7 +2406,7 @@ endmodule
2406
2406
  <p style="text-align:right;">&#8212;<a href="http://docs.rubyrake.org">Rake documentation</a></p>
2407
2407
 
2408
2408
 
2409
- <h2 ><a id="glossary.rspec" href="#a-606630878">8.7</a> &nbsp; rSpec</h2>
2409
+ <h2 ><a id="glossary.rspec" href="#a-607971318">8.7</a> &nbsp; rSpec</h2>
2410
2410
 
2411
2411
 
2412
2412
  <p>The <a href="#glossary.BDD"><span class="caps">BDD</span></a> framework for Ruby.</p>
@@ -2415,13 +2415,13 @@ endmodule
2415
2415
  <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>
2416
2416
 
2417
2417
 
2418
- <h2 ><a id="glossary.specification" href="#a-606636388">8.8</a> &nbsp; Specification</h2>
2418
+ <h2 ><a id="glossary.specification" href="#a-607972348">8.8</a> &nbsp; Specification</h2>
2419
2419
 
2420
2420
 
2421
2421
  <p>A set of <a href="#glossary.expectations">expectations</a> which define the desired behavior of a <a href="#glossary.design">design</a> when it is subjected to certain stimulus.</p>
2422
2422
 
2423
2423
 
2424
- <h2 ><a id="glossary.TDD" href="#a-606640878">8.9</a> &nbsp; Test driven development (TDD)</h2>
2424
+ <h2 ><a id="glossary.TDD" href="#a-607973538">8.9</a> &nbsp; Test driven development (TDD)</h2>
2425
2425
 
2426
2426
 
2427
2427
  <p>An <a href="http://agilemanifesto.org/">agile software development methodology</a> which emphasizes (1) testing functionality before implementing it and (2) refactoring.</p>
@@ -2430,13 +2430,13 @@ endmodule
2430
2430
  <p>See <a href="http://www.agiledata.org/essays/tdd.html">this introductory article</a> for more information.</p>
2431
2431
 
2432
2432
 
2433
- <h2 ><a id="glossary.test" href="#a-606643148">9.0</a> &nbsp; Test</h2>
2433
+ <h2 ><a id="glossary.test" href="#a-607974518">9.0</a> &nbsp; Test</h2>
2434
2434
 
2435
2435
 
2436
2436
  <p>Something that checks if a <a href="#glossary.design">design</a> satisfies a <a href="#glossary.specification">specification</a>.</p>
2437
2437
 
2438
2438
 
2439
- <h2 ><a id="glossary.test_bench" href="#a-606646838">9.1</a> &nbsp; Test bench</h2>
2439
+ <h2 ><a id="glossary.test_bench" href="#a-607975528">9.1</a> &nbsp; Test bench</h2>
2440
2440
 
2441
2441
 
2442
2442
  <p>An allusion to <a href="#background.vocab">a bench in an electronics laboratory</a>, or so it seems.</p>