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.
- data/Rakefile +2 -4
- data/doc/history.html +147 -126
- data/doc/history.yaml +17 -0
- data/doc/manual.html +76 -76
- data/doc/memo.html +4 -4
- data/doc/readme.html +9 -9
- data/doc/rss.xml +25 -0
- data/ext/Rakefile +1 -1
- data/ext/swig_wrap.cin +198 -220
- data/lib/ruby-vpi/rake.rb +1 -1
- data/lib/ruby-vpi/runner.rb +1 -1
- data/ref/c/annotated.html +3 -3
- data/ref/c/common_8h.html +12 -12
- data/ref/c/doxygen.css +1 -1
- data/ref/c/files.html +3 -3
- data/ref/c/functions.html +97 -47
- data/ref/c/functions_vars.html +97 -47
- data/ref/c/globals.html +5 -4
- data/ref/c/globals_0x63.html +67 -35
- data/ref/c/globals_0x65.html +5 -4
- data/ref/c/globals_0x66.html +5 -4
- data/ref/c/globals_0x6d.html +12 -6
- data/ref/c/globals_0x70.html +37 -20
- data/ref/c/globals_0x72.html +20 -10
- data/ref/c/globals_0x73.html +21 -12
- data/ref/c/globals_0x74.html +5 -4
- data/ref/c/globals_0x76.html +851 -425
- data/ref/c/globals_0x78.html +5 -4
- data/ref/c/globals_defs.html +67 -35
- data/ref/c/globals_defs_0x65.html +5 -4
- data/ref/c/globals_defs_0x70.html +7 -5
- data/ref/c/globals_defs_0x76.html +837 -420
- data/ref/c/globals_defs_0x78.html +5 -4
- data/ref/c/globals_enum.html +5 -4
- data/ref/c/globals_eval.html +7 -5
- data/ref/c/globals_func.html +50 -15
- data/ref/c/globals_type.html +53 -28
- data/ref/c/globals_vars.html +14 -8
- data/ref/c/index.html +3 -3
- data/ref/c/main_8c.html +3 -3
- data/ref/c/main_8h.html +3 -3
- data/ref/c/relay_8c.html +3 -3
- data/ref/c/relay_8h.html +3 -3
- data/ref/c/structt__cb__data.html +15 -15
- data/ref/c/structt__vpi__delay.html +15 -15
- data/ref/c/structt__vpi__error__info.html +17 -17
- data/ref/c/structt__vpi__strengthval.html +3 -3
- data/ref/c/structt__vpi__systf__data.html +15 -15
- data/ref/c/structt__vpi__time.html +11 -11
- data/ref/c/structt__vpi__value.html +21 -21
- data/ref/c/structt__vpi__vecval.html +3 -3
- data/ref/c/structt__vpi__vlog__info.html +3 -3
- data/ref/c/verilog_8h.html +3 -3
- data/ref/c/vlog_8c.html +3 -3
- data/ref/c/vlog_8h.html +3 -3
- data/ref/c/vpi__user_8h.html +3 -3
- data/ref/ruby/classes/ERB.html +1 -1
- data/ref/ruby/classes/FileUtils.html +3 -2
- data/ref/ruby/classes/FileUtils.src/M000025.html +1 -1
- data/ref/ruby/classes/Float.html +2 -1
- data/ref/ruby/classes/Integer.html +12 -8
- data/ref/ruby/classes/RubyVpi/Config.html +1 -1
- data/ref/ruby/classes/Vpi.html +3 -3
- data/ref/ruby/classes/Vpi/Handle.html +1 -1
- data/ref/ruby/classes/Vpi/S_vpi_time.html +5 -3
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/generate_test_rb.html +3 -3
- data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
- metadata +24 -24
data/doc/history.yaml
CHANGED
@@ -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
|
|
data/doc/manual.html
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
<div id="index">
|
20
20
|
<h1>Contents</h1>
|
21
|
-
<ul><li><a id="a-
|
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’s relatives</a></li><li><a id="a-607922938" href="#Accessing_a_handle__8217_s_properties">Accessing a handle’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…</a></li>
|
83
83
|
</ol>
|
84
84
|
</div>
|
85
|
-
<h1><a id="Ruby-VPI_user_manual" href="#a-
|
85
|
+
<h1><a id="Ruby-VPI_user_manual" href="#a-607892658">1</a> Ruby-VPI user manual</h1>
|
86
86
|
|
87
87
|
|
88
|
-
<p>This manual was last updated on
|
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-
|
100
|
+
<h2 ><a id="legal" href="#a-607893938">1.1</a> 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© 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-
|
109
|
+
<h1 ><a id="intro" href="#a-607894868">2</a> 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-
|
128
|
+
<h2><a id="Resources" href="#a-607895718">2.1</a> 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-
|
185
|
+
<h2 ><a id="intro.features" href="#a-607896658">2.2</a> 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-
|
242
|
+
<h2 ><a id="intro.reqs" href="#a-607897688">2.3</a> 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-
|
320
|
+
<h2 ><a id="intro.applications" href="#a-607898638">2.4</a> 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-
|
354
|
+
<h2 ><a id="intro.appetizers" href="#a-607899748">2.5</a> 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-
|
400
|
+
<h2 ><a id="intro.license" href="#a-607900808">2.6</a> License</h2>
|
401
401
|
|
402
402
|
|
403
403
|
<p>Copyright© 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-
|
431
|
+
<h2 ><a id="intro.related-works" href="#a-607901818">2.7</a> 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-
|
443
|
+
<h3 ><a id="intro.related-works.pli" href="#a-607903008">2.7.1</a> 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-
|
456
|
+
<h1 ><a id="background" href="#a-607904308">3</a> Background</h1>
|
457
457
|
|
458
458
|
|
459
|
-
<h2 ><a id="background.methodology" href="#a-
|
459
|
+
<h2 ><a id="background.methodology" href="#a-607905318">3.1</a> 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-
|
465
|
+
<h2 ><a id="background.vocab" href="#a-607906508">3.2</a> 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’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-
|
497
|
+
<h2 ><a id="background.org" href="#a-607907578">3.3</a> 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-
|
540
|
+
<h2 ><a id="background.relay" href="#a-607908608">3.4</a> 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-
|
577
|
+
<h1 ><a id="setup" href="#a-607909748">4</a> Setup</h1>
|
578
578
|
|
579
579
|
|
580
|
-
<h2 ><a id="setup.manifest" href="#a-
|
580
|
+
<h2 ><a id="setup.manifest" href="#a-607910668">4.1</a> 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-
|
596
|
+
<h2 ><a id="setup.reqs" href="#a-607911698">4.2</a> Requirements</h2>
|
597
597
|
|
598
598
|
|
599
599
|
<p>See <a href="#intro.reqs">the section named “Requirements”</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-
|
619
|
+
<h2 ><a id="setup.recom" href="#a-607912638">4.3</a> 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-
|
625
|
+
<h3 ><a id="setup.recom.merger" href="#a-607913678">4.3.1</a> 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-
|
638
|
+
<h2 ><a id="setup.installation" href="#a-607914868">4.4</a> 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-
|
652
|
+
<h3 ><a id="setup.installation.windows" href="#a-607916038">4.4.1</a> 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-
|
704
|
+
<h2 ><a id="setup.maintenance" href="#a-607917378">4.5</a> 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-
|
716
|
+
<h1 ><a id="usage" href="#a-607918548">5</a> Usage</h1>
|
717
717
|
|
718
718
|
|
719
|
-
<h2 ><a id="usage.vpi" href="#a-
|
719
|
+
<h2 ><a id="usage.vpi" href="#a-607919458">5.1</a> <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-
|
767
|
+
<h3 ><a id="usage.vpi.handles" href="#a-607920448">5.1.1</a> 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’s relative happens to have the same name as one of the handle’s properties, then the relative is given preference. However, if you <em>really</em> need to access a handle’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-
|
805
|
+
<h4><a id="Accessing_a_handle__8217_s_relatives" href="#a-607921548">5.1.1.1</a> Accessing a handle’s relatives</h4>
|
806
806
|
|
807
807
|
|
808
808
|
<p>To access a handle’s relative (a handle related to it), simply invoke the relative’s name as a method on the handle.</p>
|
@@ -820,7 +820,7 @@ reset_signal = counter_module.reset <span style="color:#888"># <== 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">"</span><span style="color:#D20">reset</span><span style="color:#710">"</span></span>, counter_module)</code>.</p>
|
821
821
|
|
822
822
|
|
823
|
-
<h4><a id="Accessing_a_handle__8217_s_properties" href="#a-
|
823
|
+
<h4><a id="Accessing_a_handle__8217_s_properties" href="#a-607922938">5.1.1.2</a> Accessing a handle’s properties</h4>
|
824
824
|
|
825
825
|
|
826
826
|
<p>To access a handle’s properties, invoke the property name, using the following format, as a method on the handle. <a href="#ex..properties">the example named “Examples of accessing a handle's properties”</a> shows how this naming format is used.</p>
|
@@ -1259,7 +1259,7 @@ reset_signal = counter_module.reset <span style="color:#888"># <== shortcut!<
|
|
1259
1259
|
|
1260
1260
|
</div>
|
1261
1261
|
|
1262
|
-
<h3 ><a id="usage.vpi.callbacks" href="#a-
|
1262
|
+
<h3 ><a id="usage.vpi.callbacks" href="#a-607924498">5.1.2</a> 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 “callback handler”, 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-
|
1406
|
+
<h2 ><a id="usage.prototyping" href="#a-607925708">5.2</a> 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-
|
1427
|
+
<h2 ><a id="usage.debugger" href="#a-607926808">5.3</a> 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-
|
1439
|
+
<h3 ><a id="usage.debugger.init" href="#a-607927888">5.3.1</a> 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-
|
1451
|
+
<h2 ><a id="usage.test-runner" href="#a-607929098">5.4</a> 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—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/
|
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-
|
1505
|
+
<h3 ><a id="usage.test-runner.env-vars" href="#a-607930258">5.4.1</a> 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-
|
1552
|
+
<h2 ><a id="usage.examples" href="#a-607931608">5.5</a> 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-
|
1558
|
+
<h2 ><a id="usage.tools" href="#a-607932628">5.6</a> 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-
|
1564
|
+
<h3 ><a id="usage.tools.generate-test" href="#a-607933658">5.6.1</a> 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-
|
1616
|
+
<h3 ><a id="usage.tools.verilog-ruby-conv" href="#a-607934908">5.6.2</a> 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-
|
1625
|
+
<h2 ><a id="usage.tutorial" href="#a-607936328">5.7</a> 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-
|
1639
|
+
<h3 ><a id="usage.tutorial.declare-design" href="#a-607937408">5.7.1</a> 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 “Declaration of a simple up-counter with synchronous reset”</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-
|
1690
|
+
<h3 ><a id="usage.tutorial.generate-test" href="#a-607938748">5.7.2</a> 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-
|
1770
|
+
<h3 ><a id="usage.tutorial.specification" href="#a-607940058">5.7.3</a> 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">"</
|
|
1917
1917
|
|
1918
1918
|
</div>
|
1919
1919
|
|
1920
|
-
<h3 ><a id="usage.tutorial.implement-proto" href="#a-
|
1920
|
+
<h3 ><a id="usage.tutorial.implement-proto" href="#a-607941368">5.7.4</a> 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 “Ruby prototype of our Verilog design”</a>.</p>
|
@@ -1966,7 +1966,7 @@ context <span style="background-color:#fff0f0"><span style="color:#710">"</
|
|
1966
1966
|
|
1967
1967
|
</div>
|
1968
1968
|
|
1969
|
-
<h3 ><a id="usage.tutorial.test-proto" href="#a-
|
1969
|
+
<h3 ><a id="usage.tutorial.test-proto" href="#a-607942708">5.7.5</a> 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 “Running a test with specification in rSpec format”</a> and <a href="#fig..test-proto.unit-test">the example named “Running a test with specification in xUnit format”</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-
|
2047
|
+
<h3 ><a id="usage.tutorial.implement-design" href="#a-607943958">5.7.6</a> 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 “Implementation of a simple up-counter with synchronous reset”</a>.</p>
|
@@ -2100,7 +2100,7 @@ endmodule
|
|
2100
2100
|
|
2101
2101
|
</div>
|
2102
2102
|
|
2103
|
-
<h3 ><a id="usage.tutorial.test-design" href="#a-
|
2103
|
+
<h3 ><a id="usage.tutorial.test-design" href="#a-607945338">5.7.7</a> 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 “Running a test with specification in rSpec format”</a> and <a href="#fig..test-design.unit-test">the example named “Running a test with specification in xUnit format”</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-
|
2160
|
+
<h1 ><a id="hacking" href="#a-607946678">6</a> Hacking</h1>
|
2161
2161
|
|
2162
2162
|
|
2163
|
-
<h2 ><a id="hacking.scm" href="#a-
|
2163
|
+
<h2 ><a id="hacking.scm" href="#a-607947628">6.1</a> 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-
|
2172
|
+
<h2 ><a id="hacking.release-packages" href="#a-607948608">6.2</a> 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-
|
2188
|
+
<h1 ><a id="problems" href="#a-607949918">7</a> 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-
|
2194
|
+
<h2 ><a id="problems.ruby" href="#a-607950878">7.1</a> Ruby</h2>
|
2195
2195
|
|
2196
2196
|
|
2197
|
-
<h3 ><a id="problems.ruby.SystemStackError" href="#a-
|
2197
|
+
<h3 ><a id="problems.ruby.SystemStackError" href="#a-607951958">7.1.1</a> 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 “stack level too deep (SystemStackError)” 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-
|
2220
|
+
<h3 ><a id="problems.ruby.xUnit" href="#a-607953298">7.1.2</a> 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’s unit testing framework, then you will encounter an error saying “[BUG] cross-thread violation on rb_gc()”.</p>
|
2241
2241
|
|
2242
2242
|
|
2243
|
-
<h2 ><a id="problem.ivl" href="#a-
|
2243
|
+
<h2 ><a id="problem.ivl" href="#a-607954508">7.2</a> Icarus Verilog</h2>
|
2244
2244
|
|
2245
2245
|
|
2246
|
-
<h3 ><a id="problems.ivl.vpi_handle_by_name" href="#a-
|
2246
|
+
<h3 ><a id="problems.ivl.vpi_handle_by_name" href="#a-607955538">7.2.1</a> Vpi::vpi_handle_by_name</h3>
|
2247
2247
|
|
2248
2248
|
|
2249
|
-
<h4 ><a id="problems.ivl.vpi_handle_by_name.absolute-paths" href="#a-
|
2249
|
+
<h4 ><a id="problems.ivl.vpi_handle_by_name.absolute-paths" href="#a-607956978">7.2.1.1</a> 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-
|
2276
|
+
<h4 ><a id="problems.ivl.vpi_handle_by_name.connect-registers" href="#a-607958638">7.2.1.2</a> 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-
|
2330
|
+
<h3 ><a id="problems.ivl.vpi_reset" href="#a-607960458">7.2.2</a> 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-
|
2336
|
+
<h2 ><a id="problems.vsim" href="#a-607961718">7.3</a> Mentor Modelsim</h2>
|
2337
2337
|
|
2338
2338
|
|
2339
|
-
<h3 ><a id="problems.vsim.ruby_run" href="#a-
|
2339
|
+
<h3 ><a id="problems.vsim.ruby_run" href="#a-607962798">7.3.1</a> 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’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-
|
2362
|
+
<h1 ><a id="glossary" href="#a-607964068">8</a> Glossary</h1>
|
2363
2363
|
|
2364
2364
|
|
2365
|
-
<h2 ><a id="glossary.bench" href="#a-
|
2365
|
+
<h2 ><a id="glossary.bench" href="#a-607965038">8.1</a> 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-
|
2371
|
+
<h2 ><a id="glossary.BDD" href="#a-607966068">8.2</a> 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-
|
2380
|
+
<h2 ><a id="glossary.design" href="#a-607967048">8.3</a> 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-
|
2386
|
+
<h2 ><a id="glossary.expectation" href="#a-607968108">8.4</a> 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-
|
2392
|
+
<h2 ><a id="glossary.handle" href="#a-607969248">8.5</a> 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-
|
2398
|
+
<h2 ><a id="glossary.rake" href="#a-607970298">8.6</a> Rake</h2>
|
2399
2399
|
|
2400
2400
|
|
2401
2401
|
<blockquote>
|
@@ -2406,7 +2406,7 @@ endmodule
|
|
2406
2406
|
<p style="text-align:right;">—<a href="http://docs.rubyrake.org">Rake documentation</a></p>
|
2407
2407
|
|
2408
2408
|
|
2409
|
-
<h2 ><a id="glossary.rspec" href="#a-
|
2409
|
+
<h2 ><a id="glossary.rspec" href="#a-607971318">8.7</a> 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-
|
2418
|
+
<h2 ><a id="glossary.specification" href="#a-607972348">8.8</a> 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-
|
2424
|
+
<h2 ><a id="glossary.TDD" href="#a-607973538">8.9</a> 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-
|
2433
|
+
<h2 ><a id="glossary.test" href="#a-607974518">9.0</a> 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-
|
2439
|
+
<h2 ><a id="glossary.test_bench" href="#a-607975528">9.1</a> 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>
|