ruby-vpi 7.1.0 → 7.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HEADER +101 -0
- data/HISTORY +57 -37
- data/README +1 -1
- data/Rakefile +21 -13
- data/doc/src/manual.xml +5 -5
- data/doc/txt/manual.txt +10 -6
- data/doc/xhtml/background.organization.html +1 -1
- data/doc/xhtml/index.html +2 -2
- data/doc/xhtml/usage.tutorial.html +4 -4
- data/header.html +114 -0
- data/header.part.html +114 -0
- data/history.html +217 -68
- data/history.part.html +880 -0
- data/lib/ruby-vpi/rcov.rb +62 -0
- data/lib/ruby-vpi/rspec.rb +1 -1
- data/lib/ruby-vpi/xx.rb +761 -0
- data/lib/ruby-vpi.rb +13 -2
- data/memo.html +116 -1
- data/memo.part.html +86 -0
- data/readme.html +116 -1
- data/readme.part.html +21 -0
- data/ref/c/annotated.html +1 -1
- data/ref/c/common_8h.html +1 -1
- data/ref/c/files.html +1 -1
- data/ref/c/functions.html +1 -1
- data/ref/c/functions_vars.html +1 -1
- data/ref/c/globals.html +1 -1
- data/ref/c/globals_0x63.html +1 -1
- data/ref/c/globals_0x65.html +1 -1
- data/ref/c/globals_0x66.html +1 -1
- data/ref/c/globals_0x70.html +1 -1
- data/ref/c/globals_0x72.html +1 -1
- data/ref/c/globals_0x73.html +1 -1
- data/ref/c/globals_0x74.html +1 -1
- data/ref/c/globals_0x76.html +1 -1
- data/ref/c/globals_0x78.html +1 -1
- data/ref/c/globals_defs.html +1 -1
- data/ref/c/globals_defs_0x65.html +1 -1
- data/ref/c/globals_defs_0x70.html +1 -1
- data/ref/c/globals_defs_0x76.html +1 -1
- data/ref/c/globals_defs_0x78.html +1 -1
- data/ref/c/globals_enum.html +1 -1
- data/ref/c/globals_eval.html +1 -1
- data/ref/c/globals_func.html +1 -1
- data/ref/c/globals_type.html +1 -1
- data/ref/c/globals_vars.html +1 -1
- data/ref/c/hierarchy.html +1 -1
- data/ref/c/index.html +1 -1
- data/ref/c/relay_8cin.html +1 -1
- data/ref/c/relay_8hin.html +1 -1
- data/ref/c/ruby-vpi_8c.html +1 -1
- data/ref/c/structrelay____RubyOptions____def.html +1 -1
- data/ref/c/structt__cb__data.html +1 -1
- data/ref/c/structt__vpi__delay.html +1 -1
- data/ref/c/structt__vpi__error__info.html +1 -1
- data/ref/c/structt__vpi__strengthval.html +1 -1
- data/ref/c/structt__vpi__systf__data.html +1 -1
- data/ref/c/structt__vpi__time.html +1 -1
- data/ref/c/structt__vpi__value.html +1 -1
- data/ref/c/structt__vpi__vecval.html +1 -1
- data/ref/c/structt__vpi__vlog__info.html +1 -1
- data/ref/c/swig_8cin.html +1 -1
- data/ref/c/swig_8hin.html +1 -1
- data/ref/c/verilog_8h.html +1 -1
- data/ref/c/vlog_8cin.html +1 -1
- data/ref/c/vlog_8hin.html +1 -1
- data/ref/c/vpi__user_8h.html +1 -1
- data/ref/ruby/classes/ERB.html +5 -5
- data/ref/ruby/classes/ERB.src/{M000035.html → M000011.html} +0 -0
- data/ref/ruby/classes/FileUtils.html +10 -10
- data/ref/ruby/classes/FileUtils.src/{M000048.html → M000065.html} +0 -0
- data/ref/ruby/classes/FileUtils.src/{M000049.html → M000066.html} +0 -0
- data/ref/ruby/classes/ModuleInfo.html +10 -10
- data/ref/ruby/classes/ModuleInfo.src/{M000019.html → M000008.html} +0 -0
- data/ref/ruby/classes/ModuleInfo.src/{M000020.html → M000009.html} +0 -0
- data/ref/ruby/classes/OutputInfo.html +5 -5
- data/ref/ruby/classes/OutputInfo.src/{M000018.html → M000007.html} +0 -0
- data/ref/ruby/classes/RDoc.html +5 -5
- data/ref/ruby/classes/RDoc.src/{M000051.html → M000069.html} +0 -0
- data/ref/ruby/classes/RubyVPI.html +45 -5
- data/ref/ruby/classes/RubyVPI.src/M000067.html +50 -0
- data/ref/ruby/classes/RubyVPI.src/M000068.html +20 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +35 -35
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000042.html → M000059.html} +0 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000043.html → M000060.html} +0 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000044.html → M000061.html} +0 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000045.html → M000062.html} +1 -1
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000046.html → M000063.html} +0 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000047.html → M000064.html} +1 -1
- data/ref/ruby/classes/String.html +5 -5
- data/ref/ruby/classes/String.src/{M000034.html → M000012.html} +0 -0
- data/ref/ruby/classes/{ResettedCounterValue.html → Table.html} +41 -24
- data/ref/ruby/classes/Table.src/M000003.html +38 -0
- data/ref/ruby/classes/Table.src/M000004.html +18 -0
- data/ref/ruby/classes/Table.src/M000005.html +18 -0
- data/ref/ruby/classes/{InputGenerator.src/M000029.html → Table.src/M000006.html} +5 -5
- data/ref/ruby/classes/Template.html +5 -5
- data/ref/ruby/classes/Template.src/{M000027.html → M000010.html} +0 -0
- data/ref/ruby/classes/XX/Document.html +295 -0
- data/ref/ruby/classes/XX/Document.src/M000050.html +22 -0
- data/ref/ruby/classes/XX/Document.src/M000051.html +20 -0
- data/ref/ruby/classes/XX/Document.src/M000052.html +20 -0
- data/ref/ruby/classes/XX/Document.src/M000053.html +20 -0
- data/ref/ruby/classes/XX/Document.src/M000054.html +22 -0
- data/ref/ruby/classes/XX/Document.src/M000055.html +21 -0
- data/ref/ruby/classes/XX/Document.src/M000056.html +21 -0
- data/ref/ruby/classes/XX/Document.src/M000057.html +34 -0
- data/ref/ruby/classes/XX/Document.src/M000058.html +98 -0
- data/ref/ruby/{files/bin/generate_test_tpl/spec_rb.html → classes/XX/HTML4/Strict.html} +26 -28
- data/ref/ruby/classes/XX/HTML4/Strict.src/M000016.html +20 -0
- data/ref/ruby/classes/{CounterProto.html → XX/HTML4/Transitional.html} +19 -45
- data/ref/ruby/classes/XX/HTML4/Transitional.src/M000015.html +20 -0
- data/ref/ruby/classes/{MaximumCounterValue.html → XX/HTML4.html} +20 -34
- data/ref/ruby/classes/XX/HTML4.src/M000014.html +20 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.html +236 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000022.html +22 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000023.html +20 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000024.html +25 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000025.html +20 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000026.html +27 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000027.html +20 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000028.html +27 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000029.html +22 -0
- data/ref/ruby/{files/bin/generate_test_tpl/proto_rb.html → classes/XX/Markup/Error.html} +25 -21
- data/ref/ruby/classes/XX/Markup/InstanceMethods.html +474 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000030.html +56 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000031.html +33 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000032.html +31 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000033.html +48 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000034.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000035.html +31 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000036.html +32 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000037.html +32 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000038.html +28 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000039.html +23 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000040.html +26 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000041.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000042.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000043.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000044.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000045.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000046.html +21 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000047.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000048.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000049.html +20 -0
- data/ref/ruby/classes/{TestHw5UnitModel.html → XX/Markup.html} +29 -49
- data/ref/ruby/classes/XX/Markup.src/M000021.html +28 -0
- data/ref/ruby/{files/samp/counter/counter_rspecTest_spec_rb.html → classes/XX/XHTML/Strict.html} +46 -50
- data/ref/ruby/classes/XX/XHTML/Strict.src/M000020.html +20 -0
- data/ref/ruby/classes/XX/XHTML/Transitional.html +138 -0
- data/ref/ruby/classes/XX/XHTML/Transitional.src/M000019.html +20 -0
- data/ref/ruby/classes/XX/XHTML.html +145 -0
- data/ref/ruby/classes/XX/XHTML.src/M000018.html +36 -0
- data/ref/ruby/classes/XX/XML.html +138 -0
- data/ref/ruby/classes/XX/XML.src/M000013.html +20 -0
- data/ref/ruby/classes/XX/XMLish.html +138 -0
- data/ref/ruby/classes/XX/XMLish.src/M000017.html +18 -0
- data/ref/ruby/{files/samp/counter/counter_unitTest_spec_rb.html → classes/XX.html} +39 -36
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/generate_test_rb.html +6 -6
- data/ref/ruby/files/bin/generate_test_rb.src/{M000002.html → M000001.html} +0 -0
- 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/rake_rb.html +1 -1
- data/ref/ruby/files/{samp/pipelined_alu/hw5_unit_bench_rb.html → lib/ruby-vpi/rcov_rb.html} +8 -5
- data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rspec_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 +6 -6
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/{M000001.html → M000002.html} +0 -0
- data/ref/ruby/files/lib/ruby-vpi/vpi_util_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +148 -0
- data/ref/ruby/files/lib/ruby-vpi_rb.html +2 -1
- data/ref/ruby/fr_class_index.html +15 -10
- data/ref/ruby/fr_file_index.html +2 -20
- data/ref/ruby/fr_method_index.html +69 -51
- data/ref/ruby/index.html +1 -1
- data/style.css +47 -0
- metadata +133 -109
- data/ref/ruby/classes/Counter.html +0 -258
- data/ref/ruby/classes/Counter.src/M000038.html +0 -20
- data/ref/ruby/classes/Counter.src/M000039.html +0 -22
- data/ref/ruby/classes/Counter.src/M000040.html +0 -20
- data/ref/ruby/classes/Counter.src/M000041.html +0 -22
- data/ref/ruby/classes/CounterProto.src/M000005.html +0 -22
- data/ref/ruby/classes/CounterProto.src/M000006.html +0 -22
- data/ref/ruby/classes/Hw5UnitModel/Operation.html +0 -216
- data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000012.html +0 -25
- data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000013.html +0 -33
- data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000014.html +0 -18
- data/ref/ruby/classes/Hw5UnitModel.html +0 -256
- data/ref/ruby/classes/Hw5UnitModel.src/M000007.html +0 -24
- data/ref/ruby/classes/Hw5UnitModel.src/M000009.html +0 -20
- data/ref/ruby/classes/Hw5UnitModel.src/M000010.html +0 -38
- data/ref/ruby/classes/Hw5UnitModel.src/M000011.html +0 -22
- data/ref/ruby/classes/Hw5_unit.html +0 -196
- data/ref/ruby/classes/Hw5_unit.src/M000004.html +0 -27
- data/ref/ruby/classes/Hw5_unit_spec.html +0 -237
- data/ref/ruby/classes/Hw5_unit_spec.src/M000024.html +0 -21
- data/ref/ruby/classes/Hw5_unit_spec.src/M000025.html +0 -21
- data/ref/ruby/classes/Hw5_unit_spec.src/M000026.html +0 -67
- data/ref/ruby/classes/InputGenerator.html +0 -260
- data/ref/ruby/classes/InputGenerator.src/M000028.html +0 -18
- data/ref/ruby/classes/InputGenerator.src/M000030.html +0 -19
- data/ref/ruby/classes/InputGenerator.src/M000031.html +0 -38
- data/ref/ruby/classes/InputGenerator.src/M000032.html +0 -19
- data/ref/ruby/classes/InputGenerator.src/M000033.html +0 -19
- data/ref/ruby/classes/MaximumCounterValue.src/M000036.html +0 -23
- data/ref/ruby/classes/MaximumCounterValue.src/M000037.html +0 -21
- data/ref/ruby/classes/ResettedCounterValue.src/M000015.html +0 -19
- data/ref/ruby/classes/ResettedCounterValue.src/M000016.html +0 -18
- data/ref/ruby/classes/ResettedCounterValue.src/M000017.html +0 -23
- data/ref/ruby/classes/RubyVPI.src/M000050.html +0 -39
- data/ref/ruby/classes/TestHw5UnitModel.src/M000021.html +0 -19
- data/ref/ruby/classes/TestHw5UnitModel.src/M000022.html +0 -19
- data/ref/ruby/classes/TestHw5UnitModel.src/M000023.html +0 -64
- data/ref/ruby/files/bin/generate_test_tpl/bench_rb.html +0 -115
- data/ref/ruby/files/bin/generate_test_tpl/design_rb.html +0 -107
- data/ref/ruby/files/bin/generate_test_tpl/spec_rb.src/M000003.html +0 -22
- data/ref/ruby/files/ext/extconf_rb.html +0 -108
- data/ref/ruby/files/gem_extconf_rb.html +0 -114
- data/ref/ruby/files/samp/counter/counter_rspecTest_bench_rb.html +0 -115
- data/ref/ruby/files/samp/counter/counter_rspecTest_design_rb.html +0 -107
- data/ref/ruby/files/samp/counter/counter_rspecTest_proto_rb.html +0 -107
- data/ref/ruby/files/samp/counter/counter_unitTest_bench_rb.html +0 -115
- data/ref/ruby/files/samp/counter/counter_unitTest_design_rb.html +0 -107
- data/ref/ruby/files/samp/counter/counter_unitTest_proto_rb.html +0 -107
- data/ref/ruby/files/samp/pipelined_alu/Hw5UnitModel_rb.html +0 -101
- data/ref/ruby/files/samp/pipelined_alu/InputGenerator_rb.html +0 -101
- data/ref/ruby/files/samp/pipelined_alu/TestHw5UnitModel_rb.html +0 -111
- data/ref/ruby/files/samp/pipelined_alu/hw5_unit_design_rb.html +0 -107
- data/ref/ruby/files/samp/pipelined_alu/hw5_unit_spec_rb.html +0 -112
data/HEADER
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
<head>
|
2
|
+
<link rel="stylesheet" type="text/css" href="style.css" />
|
3
|
+
</head>
|
4
|
+
|
5
|
+
h1{text-align: center}. Welcome to Ruby-VPI
|
6
|
+
|
7
|
+
Ruby-VPI is a "Ruby interface":http://ruby-lang.org to "Verilog VPI":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945. It lets you create complex Verilog test benches easily and wholly in Ruby.
|
8
|
+
|
9
|
+
h2. Features
|
10
|
+
|
11
|
+
* Apply "agile techniques":http://www.martinfowler.com/articles/newMethodology.html to develop hardware.
|
12
|
+
** Rapidly prototype and verify your designs using "BDD(behavior-driven development)":http://behaviour-driven.org/, "TDD(test-driven development)":http://www.agiledata.org/essays/tdd.html, and more.
|
13
|
+
** Consolidate your requirements and verification efforts through executable specifications.
|
14
|
+
** Reuse the _same_ specification to verify both prototype and design.
|
15
|
+
|
16
|
+
* Utilize Ruby's power and elegance ("Why choose Ruby?":http://www.ruby-doc.org/whyruby).
|
17
|
+
** Built-in support for unlimited length integers, regular expressions, networking, multi-threading, system calls, _ad infinium_!
|
18
|
+
** Easy to use; doesn't get in your way.
|
19
|
+
** Makes programming _fun_ again!
|
20
|
+
|
21
|
+
* Study, modify, or distribute this is free software, released under the "GNU General Public License":http://www.gnu.org/copyleft/gpl.html, as you see fit.
|
22
|
+
|
23
|
+
|
24
|
+
<div class="variablelist">
|
25
|
+
<dl>
|
26
|
+
|
27
|
+
<dt>
|
28
|
+
<span class="term">
|
29
|
+
<a href="./doc/usage.tutorial.html" target="_top">Tutorial</a>
|
30
|
+
</span>
|
31
|
+
</dt>
|
32
|
+
<dd>
|
33
|
+
<p>Learn how to use Ruby-VPI quickly.</p>
|
34
|
+
</dd>
|
35
|
+
|
36
|
+
<dt>
|
37
|
+
<span class="term">
|
38
|
+
<a href="./doc/" target="_top">Manual</a>
|
39
|
+
</span>
|
40
|
+
</dt>
|
41
|
+
<dd>
|
42
|
+
<p>Complete documentation for users. Start here!</p>
|
43
|
+
</dd>
|
44
|
+
|
45
|
+
<dt>
|
46
|
+
<span class="term">
|
47
|
+
<a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
|
48
|
+
Project</a>
|
49
|
+
</span>
|
50
|
+
</dt>
|
51
|
+
<dd>
|
52
|
+
<p>
|
53
|
+
Access project facilities, hosted generously by <a href="http://rubyforge.org" target="_top">
|
54
|
+
RubyForge</a>.
|
55
|
+
</p>
|
56
|
+
</dd>
|
57
|
+
<dt>
|
58
|
+
<span class="term">
|
59
|
+
<a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
|
60
|
+
Tracker</a>
|
61
|
+
</span>
|
62
|
+
</dt>
|
63
|
+
<dd>
|
64
|
+
<p>
|
65
|
+
Report problems, contribute patches, and more.</p>
|
66
|
+
</dd>
|
67
|
+
<dt>
|
68
|
+
<span class="term">
|
69
|
+
<a href="http://rubyforge.org/frs/?group_id=1339" target="_top">
|
70
|
+
Releases</a>
|
71
|
+
</span>
|
72
|
+
</dt>
|
73
|
+
<dd>
|
74
|
+
<p>
|
75
|
+
Download the newest releases.</p>
|
76
|
+
</dd>
|
77
|
+
<dt>
|
78
|
+
<span class="term">
|
79
|
+
<a href="http://rubyforge.org/scm/?group_id=1339" target="_top">
|
80
|
+
Sources</a>
|
81
|
+
</span>
|
82
|
+
</dt>
|
83
|
+
<dd>
|
84
|
+
<p>
|
85
|
+
Browse or access the source code repository.</p>
|
86
|
+
</dd>
|
87
|
+
<dt>
|
88
|
+
<span class="term">
|
89
|
+
<a href="http://rubyforge.org/forum/?group_id=1339" target="_top">
|
90
|
+
Forums</a>
|
91
|
+
</span>
|
92
|
+
</dt>
|
93
|
+
<dd>
|
94
|
+
<p>
|
95
|
+
Ask for help, give feedback, or discuss.</p>
|
96
|
+
</dd>
|
97
|
+
</dl>
|
98
|
+
</div>
|
99
|
+
</div>
|
100
|
+
|
101
|
+
|
data/HISTORY
CHANGED
@@ -5,13 +5,33 @@ This is a record of important changes that have occurred with each release of "R
|
|
5
5
|
h2. Version numbering system
|
6
6
|
|
7
7
|
We _strictly_ follow the RubyGems project's "rational versioning policy":http://www.rubygems.org/read/chapter/7 since release 6.3.0. To summarize[1] this "major.minor.build" numbering policy,
|
8
|
-
* an increase in the
|
9
|
-
* an increase in the
|
10
|
-
* an increase in the
|
8
|
+
* an increase in the _major_ number indicates that _functionally incompatible_ have occurred. Thus, what may have worked in the previous version may not work in the new one.
|
9
|
+
* an increase in the _minor_ number indicates that _functionally compatible_ changes have occurred. Thus, what worked in the previous version will work in the new one.
|
10
|
+
* an increase in the _build_ number indicates that the _underlying implementation_ has changed. The functionality has not changed and no features have been added. Thus, what worked in the previous version will work in the new one.
|
11
11
|
|
12
12
|
fn1. C. Gross, "Explaining Open Source Version Numbers", [Online document], 2005 Nov 28, [cited 2006 Aug 27], Available HTTP: "http://ablog.apress.com/?p=738":http://ablog.apress.com/?p=738
|
13
13
|
|
14
14
|
|
15
|
+
h1. Version 7.2.0 (2006-09-15)
|
16
|
+
|
17
|
+
h2. Summary
|
18
|
+
|
19
|
+
This release adds initial[1] support for code coverage analysis via the "rcov library":http://eigenclass.org/hiki.rb?rcov.
|
20
|
+
|
21
|
+
h2. Acknowledgments
|
22
|
+
|
23
|
+
Thanks to Mauricio Fernandez for helping me use rcov without its runner.
|
24
|
+
|
25
|
+
h2. Details
|
26
|
+
|
27
|
+
* Added initial[1] support for code coverage analysis, which can be enabled by setting the @COVERAGE@ environment variable to a non-empty value before running a test.
|
28
|
+
** For example, you can run a test with the GPL Cver simulator while enabling the generation of code coverage reports as follows: @export COVERAGE=1; rake cver@
|
29
|
+
|
30
|
+
* Coverage reports are generated in text and HTML formats.
|
31
|
+
|
32
|
+
fn1. Full capabilites of the rcov library, such as its various analysis modes, are not yet utilized.
|
33
|
+
|
34
|
+
|
15
35
|
h1. Version 7.1.0 (2006-08-29)
|
16
36
|
|
17
37
|
h2. Summary
|
@@ -159,16 +179,16 @@ h2. Summary
|
|
159
179
|
|
160
180
|
This release fixes unreadable syntax coloring in the user manual.
|
161
181
|
|
182
|
+
h2. Acknowledgments
|
183
|
+
|
184
|
+
* Thanks to Todd Nagengast and Matt Fischler for notifying me about unreadable text in the user manual.
|
185
|
+
|
162
186
|
h2. Details
|
163
187
|
|
164
188
|
* Source code comments in the user manual are now readable.
|
165
189
|
|
166
190
|
* The @README@ and @HISTORY@ files have been converted to "textile":http://www.textism.com/tools/textile/ format.
|
167
191
|
|
168
|
-
h2. Acknowledgment
|
169
|
-
|
170
|
-
* Thanks to Todd Nagengast and Matt Fischler for notifying me about unreadable text in the user manual.
|
171
|
-
|
172
192
|
|
173
193
|
h1. Version 5.1.0 (2006-07-29)
|
174
194
|
|
@@ -176,6 +196,10 @@ h2. Summary
|
|
176
196
|
|
177
197
|
This release adds a tutorial to the user manual, and improves the tools and examples.
|
178
198
|
|
199
|
+
h2. Acknowledgments
|
200
|
+
|
201
|
+
* Thanks to Phil Tomson for correcting the URL of the RHDL website, in the user manual.
|
202
|
+
|
179
203
|
h2. Details
|
180
204
|
|
181
205
|
h3. User manual
|
@@ -200,10 +224,6 @@ h3. VPI utility layer
|
|
200
224
|
|
201
225
|
* The value of a handle's boolean VPI property is treated as @false@ if it is zero, because zero is @false@ in the C language.
|
202
226
|
|
203
|
-
h2. Acknowledgment
|
204
|
-
|
205
|
-
* Thanks to Phil Tomson for correcting the URL of the RHDL website, in the user manual.
|
206
|
-
|
207
227
|
|
208
228
|
h1. Version 5.0.0 (2006-07-22)
|
209
229
|
|
@@ -211,6 +231,10 @@ h2. Summary
|
|
211
231
|
|
212
232
|
This release enhances the VPI utility layer and adds new content to the user manual.
|
213
233
|
|
234
|
+
h2. Acknowledgments
|
235
|
+
|
236
|
+
* Thanks to Jan Decaluwe for correcting the description of MyHDL in the user manual.
|
237
|
+
|
214
238
|
h2. Details
|
215
239
|
|
216
240
|
* SWIG is no longer required for users because its output is included in the release package.
|
@@ -227,10 +251,6 @@ h2. Details
|
|
227
251
|
** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
|
228
252
|
** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
|
229
253
|
|
230
|
-
h2. Acknowledgment
|
231
|
-
|
232
|
-
* Thanks to Jan Decaluwe for correcting the description of MyHDL in the user manual.
|
233
|
-
|
234
254
|
|
235
255
|
h1. Version 4.0.0 (2006-05-25)
|
236
256
|
|
@@ -238,6 +258,10 @@ h2. Summary
|
|
238
258
|
|
239
259
|
This release adds a comprehensive user manual, upgrades from make to "Rake":http://rake.rubyforge.org, and improves the test generation tool.
|
240
260
|
|
261
|
+
h2. Acknowledgments
|
262
|
+
|
263
|
+
* Thanks to Jose Renau for solving the problem of strange delays that occurred whenever a design was reset.
|
264
|
+
|
241
265
|
h2. Details
|
242
266
|
|
243
267
|
* A comprehensive user manual, written in DocBook-XML, has been added.
|
@@ -253,10 +277,6 @@ h2. Details
|
|
253
277
|
** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
|
254
278
|
** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
|
255
279
|
|
256
|
-
h2. Acknowledgment
|
257
|
-
|
258
|
-
* Thanks to Jose Renau for solving the problem of strange delays that occurred whenever a design was reset.
|
259
|
-
|
260
280
|
|
261
281
|
h1. Version 3.2.0 (2006-05-13)
|
262
282
|
|
@@ -264,6 +284,10 @@ h2. Summary
|
|
264
284
|
|
265
285
|
This release adds a tool which generates test benches, and adds support for "Behavior Driven Development":http://behaviour-driven.org via the "RSpec":http://rspec.rubyforge.org library.
|
266
286
|
|
287
|
+
h2. Acknowledgments
|
288
|
+
|
289
|
+
* Thanks to Scott L Holmes for helping me "use the RSpec library without its runner":http://article.gmane.org/gmane.comp.lang.ruby.general/150087 program.
|
290
|
+
|
267
291
|
h2. Details
|
268
292
|
|
269
293
|
* A tool, which generates most of a Ruby-VPI test bench from a Verilog 2001 module declaration, has been added.
|
@@ -276,10 +300,6 @@ h2. Details
|
|
276
300
|
** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
|
277
301
|
** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
|
278
302
|
|
279
|
-
h2. Acknowledgment
|
280
|
-
|
281
|
-
* Thanks to Scott L Holmes for helping me "use the RSpec library without its runner":http://article.gmane.org/gmane.comp.lang.ruby.general/150087 program.
|
282
|
-
|
283
303
|
|
284
304
|
h1. Version 3.1.0 (2006-04-28)
|
285
305
|
|
@@ -310,6 +330,10 @@ h2. Summary
|
|
310
330
|
|
311
331
|
This release adds support for the _entire_ "IEEE Std. 1364-2005":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945 VPI interface, and updates the examples into unit tests.
|
312
332
|
|
333
|
+
h2. Acknowledgments
|
334
|
+
|
335
|
+
* Thanks to the "SWIG developers":http://www.swig.org/guilty.html for making this project _much_ easier! ;-)
|
336
|
+
|
313
337
|
h2. Details
|
314
338
|
|
315
339
|
* The Ruby interface to VPI is now generated by "SWIG":http://www.swig.org.
|
@@ -330,10 +354,6 @@ h2. Details
|
|
330
354
|
** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
|
331
355
|
** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
|
332
356
|
|
333
|
-
h2. Acknowledgment
|
334
|
-
|
335
|
-
* Thanks to the "SWIG developers":http://www.swig.org/guilty.html for making this project _much_ easier! ;-)
|
336
|
-
|
337
357
|
|
338
358
|
h1. Version 2.0.0 (2006-04-17)
|
339
359
|
|
@@ -341,6 +361,10 @@ h2. Summary
|
|
341
361
|
|
342
362
|
This release fixes major bugs, adds support for Mentor Modelsim, and removes the @$ruby_task@ callback.
|
343
363
|
|
364
|
+
h2. Acknowledgments
|
365
|
+
|
366
|
+
* Thanks to Nobu Nakada for explaining the "cross-thread violation on rb_gc()":http://article.gmane.org/gmane.comp.lang.ruby.general/146653 error.
|
367
|
+
|
344
368
|
h2. Details
|
345
369
|
|
346
370
|
* The *cross-thread violation on rb_gc()* error has been fixed.
|
@@ -357,10 +381,6 @@ h2. Details
|
|
357
381
|
** Ruby 1.8.4 and Modelsim 6.1d on x86_64 GNU/Linux
|
358
382
|
** Ruby 1.8.4 and Synopsys VCS-MX X-2005.06-SP1 on SPARC4 SunOS 5.10
|
359
383
|
|
360
|
-
h2. Acknowledgment
|
361
|
-
|
362
|
-
* Thanks to Nobu Nakada for explaining the "cross-thread violation on rb_gc()":http://article.gmane.org/gmane.comp.lang.ruby.general/146653 error.
|
363
|
-
|
364
384
|
|
365
385
|
h1. Version 1.0.0 (2006-02-26)
|
366
386
|
|
@@ -371,6 +391,12 @@ This release adds enough Verilog VPI functionality to make Ruby-VPI usable for s
|
|
371
391
|
* read and change VPI handle values
|
372
392
|
* stop, finish, restart the simulation
|
373
393
|
|
394
|
+
h2. Acknowledgments
|
395
|
+
|
396
|
+
* Thanks to Jose Renau for helping me debug how Synopsys VCS works with Verilog VPI. The problem was that VCS required calltf signatures to be @void (*)(void)@, whereas the Verilog standard defines a calltf signature as @PLI_INT32 (*)(PLI_BYTE8*)@.
|
397
|
+
|
398
|
+
* Thanks to Ross Bamford, Eric Hodel, and Yukihiro Matsumoto for "helping me discover":http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662 why the @SystemStackError@ was happening.
|
399
|
+
|
374
400
|
h2. Details
|
375
401
|
|
376
402
|
* Implemented some Verilog VPI functionality:
|
@@ -397,12 +423,6 @@ h2. Details
|
|
397
423
|
** Ruby 1.8.2 and Icarus Verilog 0.8 on i686 GNU/Linux
|
398
424
|
** Ruby 1.8.4, Synopsys VCS X-2005.06, and Mentor Modelsim 6.1b on i686 GNU/Linux
|
399
425
|
|
400
|
-
h2. Acknowledgment
|
401
|
-
|
402
|
-
* Thanks to Jose Renau for helping me debug how Synopsys VCS works with Verilog VPI. The problem was that VCS required calltf signatures to be @void (*)(void)@, whereas the Verilog standard defines a calltf signature as @PLI_INT32 (*)(PLI_BYTE8*)@.
|
403
|
-
|
404
|
-
* Thanks to Ross Bamford, Eric Hodel, and Yukihiro Matsumoto for "helping me discover":http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662 why the @SystemStackError@ was happening.
|
405
|
-
|
406
426
|
|
407
427
|
h1. Version 0.0.0 (1999-10-31)
|
408
428
|
|
data/README
CHANGED
data/Rakefile
CHANGED
@@ -153,9 +153,9 @@ desc 'Generate reference for Ruby.'
|
|
153
153
|
Rake::RDocTask.new 'ref/ruby' do |t|
|
154
154
|
t.rdoc_dir = t.name
|
155
155
|
t.title = "#{PROJECT_NAME}: #{PROJECT_SUMMARY}"
|
156
|
-
t.options.concat %w(--charset utf-8 --
|
157
|
-
|
158
|
-
t.
|
156
|
+
t.options.concat %w(--charset utf-8 --line-numbers)
|
157
|
+
t.rdoc_files.include '{bin,lib/**}/*.rb'
|
158
|
+
t.main = 'SWIG::TYPE_p_unsigned_int'
|
159
159
|
end
|
160
160
|
|
161
161
|
|
@@ -181,16 +181,23 @@ end
|
|
181
181
|
# distribution
|
182
182
|
#
|
183
183
|
|
184
|
-
|
184
|
+
DIST_INFO_HEADER = 'HEADER'
|
185
|
+
|
186
|
+
distDocs = [DIST_INFO_HEADER, 'README', 'HISTORY', 'MEMO'].map do |src|
|
185
187
|
dst = src.downcase << '.html'
|
188
|
+
dstPartial = src.downcase << '.part.html'
|
186
189
|
|
187
|
-
file dst => src do
|
188
|
-
sh "redcloth
|
190
|
+
file dst => [DIST_INFO_HEADER, src] do
|
191
|
+
sh "redcloth #{DIST_INFO_HEADER unless src == DIST_INFO_HEADER} #{src} > #{dst}"
|
189
192
|
end
|
190
193
|
|
191
|
-
|
192
|
-
|
193
|
-
end
|
194
|
+
file dstPartial => src do
|
195
|
+
sh "redcloth < #{src} > #{dstPartial}"
|
196
|
+
end
|
197
|
+
|
198
|
+
CLOBBER.include dst, dstPartial
|
199
|
+
[dst, dstPartial]
|
200
|
+
end.flatten
|
194
201
|
|
195
202
|
desc "Prepare distribution information."
|
196
203
|
task :dist_info => distDocs
|
@@ -208,7 +215,7 @@ desc 'Publish documentation to website.'
|
|
208
215
|
task :web => [:web_dist, :web_ref, :web_doc]
|
209
216
|
|
210
217
|
desc "Publish distribution info."
|
211
|
-
task :web_dist => distDocs do |t|
|
218
|
+
task :web_dist => ['style.css', *distDocs] do |t|
|
212
219
|
upload_without_svn PROJECT_SSH_URL, *t.prerequisites
|
213
220
|
end
|
214
221
|
|
@@ -256,6 +263,7 @@ task :pkg => ['HISTORY', 'gem_extconf.rb'] do |t|
|
|
256
263
|
|
257
264
|
s.add_dependency 'rspec', '>= 0.5.4'
|
258
265
|
s.add_dependency 'rake', '>= 0.7.0'
|
266
|
+
s.add_dependency 'rcov', '>= 0.7.0'
|
259
267
|
|
260
268
|
s.requirements << "POSIX threads library"
|
261
269
|
s.requirements << "C language compiler"
|
@@ -297,10 +305,10 @@ end
|
|
297
305
|
#
|
298
306
|
|
299
307
|
desc "Ensure that examples work with $SIMULATOR"
|
300
|
-
task :test =>
|
301
|
-
|
308
|
+
task :test => :build do
|
309
|
+
FileList['samp/*/'].each do |s|
|
302
310
|
cd s do
|
303
|
-
sh 'rake', ENV['SIMULATOR'] || '
|
311
|
+
sh 'rake', ENV['SIMULATOR'] || 'cver'
|
304
312
|
end
|
305
313
|
end
|
306
314
|
end
|
data/doc/src/manual.xml
CHANGED
@@ -1014,7 +1014,7 @@
|
|
1014
1014
|
<varlistentry>
|
1015
1015
|
<term>Runner</term>
|
1016
1016
|
<listitem>
|
1017
|
-
<para>Written in Rake, this file builds and runs the test
|
1017
|
+
<para>Written in Rake, this file builds and runs the test.</para>
|
1018
1018
|
</listitem>
|
1019
1019
|
</varlistentry>
|
1020
1020
|
<varlistentry>
|
@@ -1026,13 +1026,13 @@
|
|
1026
1026
|
<varlistentry>
|
1027
1027
|
<term>Design</term>
|
1028
1028
|
<listitem>
|
1029
|
-
<para>Written in Ruby, this file provides an interface to the design
|
1029
|
+
<para>Written in Ruby, this file provides an interface to the design being verified.</para>
|
1030
1030
|
</listitem>
|
1031
1031
|
</varlistentry>
|
1032
1032
|
<varlistentry>
|
1033
1033
|
<term>Prototype</term>
|
1034
1034
|
<listitem>
|
1035
|
-
<para>Written in Ruby, this file defines a prototype of the design
|
1035
|
+
<para>Written in Ruby, this file defines a prototype of the design being verified.</para>
|
1036
1036
|
</listitem>
|
1037
1037
|
</varlistentry>
|
1038
1038
|
<varlistentry>
|
@@ -1248,7 +1248,7 @@ Parsed module: counter
|
|
1248
1248
|
<title>Verify the prototype</title>
|
1249
1249
|
<para>Now that we have implemented our prototype, we are ready to verify it against our specification by running the test. <xref linkend="fig..test-proto.rspec"/> and <xref linkend="fig..test-proto.unit-test"/> illustrate this process.</para>
|
1250
1250
|
|
1251
|
-
<para>Here, the <varname>PROTO</varname> environment variable is set—any value is fine—before running the test in order to replace the design with the prototype in the simulation. Otherwise, our design will be verified
|
1251
|
+
<para>Here, the <varname>PROTO</varname> environment variable is set—any value is fine—before running the test in order to replace the design with the prototype in the simulation. Otherwise, instead of our prototype, our design will be verified against our specification. Furthermore, the manner in which the <varname>PROTO</varname> environment variable is set in these figures follows the syntax of the &bash; shell. If you use a different shell, you may have to use different syntax, or a different command altogether, in order to set this variable. Finally, the Icarus &v; simulator, denoted by <replaceable>ivl</replaceable>, is used to simulate our design.</para>
|
1252
1252
|
|
1253
1253
|
<figure id="fig..test-proto.rspec">
|
1254
1254
|
<title>Running a test with specification in &rspec; format</title>
|
@@ -1290,7 +1290,7 @@ Finished in 0.040668 seconds.
|
|
1290
1290
|
<section id="usage.tutorial.implement-design">
|
1291
1291
|
<title>Implement the design</title>
|
1292
1292
|
|
1293
|
-
<para>Now that we have implemented and verified our prototype, we are ready to implement our design. This is often quite simple because we translate <emphasis>existing</emphasis> code from &r; into &v
|
1293
|
+
<para>Now that we have implemented and verified our prototype, we are ready to implement our design. This is often quite simple because we translate <emphasis>existing</emphasis> code from &r; (our prototype) into &v; (our design). <xref linkend="fig..counter.v_impl"/> illustrates the result of this process. Once again, note the striking similarities between the implementations of our prototype and our design.</para>
|
1294
1294
|
|
1295
1295
|
<important>
|
1296
1296
|
<title>Before we continue…</title>
|
data/doc/txt/manual.txt
CHANGED
@@ -751,7 +751,7 @@ generation tool produces a test composed of the following parts:
|
|
751
751
|
|
752
752
|
Runner
|
753
753
|
|
754
|
-
Written in Rake, this file builds and runs the test
|
754
|
+
Written in Rake, this file builds and runs the test.
|
755
755
|
|
756
756
|
Bench
|
757
757
|
|
@@ -759,11 +759,13 @@ Bench
|
|
759
759
|
|
760
760
|
Design
|
761
761
|
|
762
|
-
Written in Ruby, this file provides an interface to the design
|
762
|
+
Written in Ruby, this file provides an interface to the design being
|
763
|
+
verified.
|
763
764
|
|
764
765
|
Prototype
|
765
766
|
|
766
|
-
Written in Ruby, this file defines a prototype of the design
|
767
|
+
Written in Ruby, this file defines a prototype of the design being
|
768
|
+
verified.
|
767
769
|
|
768
770
|
Specification
|
769
771
|
|
@@ -964,7 +966,7 @@ specification in unit test format” illustrate this process.
|
|
964
966
|
|
965
967
|
Here, the PROTO environment variable is set—any value is fine—before running
|
966
968
|
the test in order to replace the design with the prototype in the simulation.
|
967
|
-
Otherwise, our design will be verified
|
969
|
+
Otherwise, instead of our prototype, our design will be verified against our
|
968
970
|
specification. Furthermore, the manner in which the PROTO environment variable
|
969
971
|
is set in these figures follows the syntax of the GNU BASH shell. If you use a
|
970
972
|
different shell, you may have to use different syntax, or a different command
|
@@ -1005,8 +1007,10 @@ Implement the design
|
|
1005
1007
|
|
1006
1008
|
Now that we have implemented and verified our prototype, we are ready to
|
1007
1009
|
implement our design. This is often quite simple because we translate existing
|
1008
|
-
code from Ruby into Verilog. Figure 3.9,
|
1009
|
-
with synchronous reset” illustrates the
|
1010
|
+
code from Ruby (our prototype) into Verilog (our design). Figure 3.9,
|
1011
|
+
“Implementation of a simple up-counter with synchronous reset” illustrates the
|
1012
|
+
result of this process. Once again, note the striking similarities between the
|
1013
|
+
implementations of our prototype and our design.
|
1010
1014
|
|
1011
1015
|
[Important] Before we continue…
|
1012
1016
|
Replace the contents of the file named counter.v with the source
|
@@ -7,4 +7,4 @@
|
|
7
7
|
<span class="type">va_list</span> *<code class="varname">p</code> = &<code class="varname">ap</code>;
|
8
8
|
}
|
9
9
|
</pre></li></ul></div><p>
|
10
|
-
</p><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="organization.vpi.util"></a><span class="acronym">VPI</span> utility layer</h4></div></div></div><p>From a user's perspective, the <span class="acronym">VPI</span> utility layer greatly enhances the ability to interact with handles. One simply invokes a handle's methods, which are carefully named in the following manner, to access its <span class="acronym">VPI</span> properties.</p><div class="table"><a id="table..handle-property-accessor-naming-format"></a><p class="title"><b>Table 2.1. Naming format for accessing a handle's <span class="acronym">VPI</span> properties</b></p><table summary="Naming format for accessing a handle's VPI properties" border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td colspan="2">optional</td><td>required</td><td colspan="2">optional</td><td>optional</td></tr></tbody></table></div><div class="variablelist"><dl><dt><span class="term">Operation</span></dt><dd><p>This parameter suggests a method that should be invoked in the context of the Property parameter.</p></dd><dt><span class="term">Property</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> property should be accessed. The first letter of this parameter's value should be lower case, and the <span class="emphasis"><em>vpi</em></span> prefix—common to all <span class="acronym">VPI</span> properties—can be omitted.</p><p>For example, the <span class="acronym">VPI</span> property <span class="emphasis"><em>vpiFullName</em></span> is considered equivalent to <span class="emphasis"><em>fullName</em></span> but not equivalent to either <span class="emphasis"><em>FullName</em></span> or <span class="emphasis"><em>full_name</em></span>.</p></dd><dt><span class="term">Accessor</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> function should be used to access the <span class="acronym">VPI</span> property. When this parameter is not specified, the <span class="acronym">VPI</span> utility layer will attempt to <span class="emphasis"><em>guess</em></span> the value of this parameter (<a href="../../ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html" target="_top">see the source code</a> of the <code class="code"><code class="constant">SWIG</code>::<code class="constant">TYPE_p_unsigned_int</code>#<code class="function">method_missing</code></code> method for details).</p><div class="table"><a id="id2482973"></a><p class="title"><b>Table 2.2. Possible accessors and their implications</b></p><table summary="Possible accessors and their implications" border="1"><colgroup></colgroup><thead><tr><th>Accessor</th><th>Kind of value accessed</th><th><span class="acronym">VPI</span> functions used to access the value</th></tr></thead><tbody><tr><td>d</td><td>delay</td><td><code class="function">vpi_get_delays</code>, <code class="function">vpi_put_delays</code></td></tr><tr><td>l</td><td>logic</td><td><code class="function">vpi_get_value</code>, <code class="function">vpi_put_value</code></td></tr><tr><td>i</td><td>integer</td><td><code class="function">vpi_get</code></td></tr><tr><td>b</td><td>boolean</td><td><code class="function">vpi_get</code></td></tr><tr><td>s</td><td>string</td><td><code class="function">vpi_get_str</code></td></tr><tr><td>h</td><td>handle</td><td><code class="function">vpi_handle</code></td></tr></tbody></table></div></dd><dt><span class="term">Addendum</span></dt><dd><p>When this parameter is a question mark (<span class="emphasis"><em>?</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be queried as a boolean value. This produces the same effect as specifying <span class="emphasis"><em>b</em></span> for the Accessor parameter.</p><p>When this parameter is an equal sign (<span class="emphasis"><em>=</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be written to.</p></dd></dl></div><div class="example"><a id="ex..handle-property-accessor-naming-format"></a><p class="title"><b>Example 2.1. Accessing a handle's <span class="acronym">VPI</span> properties</b></p><div class="informaltable"><table border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th rowspan="2">Ruby expression</th><th colspan="6">Naming format</th><th rowspan="2">Description</th></tr><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_vpiNet</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>vpiNet</td><td> </td><td> </td><td> </td><td rowspan="2">These expressions print the full name of each <code class="constant">vpiNet</code> object associated with the handle.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_net</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>net</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal_l</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td>=</td><td rowspan="4">These expressions assign the number 15 to the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code>_l = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType</code></code></td><td> </td><td> </td><td>vpiType</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the integer value of the handle's <code class="constant">vpiType</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType_i</code></code></td><td> </td><td> </td><td>vpiType</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type</code></code></td><td> </td><td> </td><td>type</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type_i</code></code></td><td> </td><td> </td><td>type</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td> </td><td rowspan="6">These expressions access the boolean value of the handle's <code class="constant">vpiProtected</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected_b</code></code></td><td> </td><td> </td><td>vpiProtected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected?</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected_b</code></code></td><td> </td><td> </td><td>protected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected?</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName</code></code></td><td> </td><td> </td><td>vpiFullName</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the string value of the handle's <code class="constant">vpiFullName</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName_s</code></code></td><td> </td><td> </td><td>vpiFullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName</code></code></td><td> </td><td> </td><td>fullName</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName_s</code></code></td><td> </td><td> </td><td>fullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent</code></code></td><td> </td><td> </td><td>vpiParent</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the handle value of the handle's <code class="constant">vpiParent</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent_h</code></code></td><td> </td><td> </td><td>vpiParent</td><td>_</td><td>h</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent</code></code></td><td> </td><td> </td><td>parent</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent_h</code></code></td><td> </td><td> </td><td>parent</td><td>_</td><td>h</td><td> </td></tr></tbody></table></div></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="background.terminology.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"><a accesskey="u" href="background.html"><img src="images/up.png" alt="Up" /></a></td><td width="40%" align="right"> <a accesskey="n" href="background.running-tests.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Terminology </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home" /></a></td><td width="40%" align="right" valign="top"> Running a test</td></tr></table></div></body></html>
|
10
|
+
</p><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="organization.vpi.util"></a><span class="acronym">VPI</span> utility layer</h4></div></div></div><p>From a user's perspective, the <span class="acronym">VPI</span> utility layer greatly enhances the ability to interact with handles. One simply invokes a handle's methods, which are carefully named in the following manner, to access its <span class="acronym">VPI</span> properties.</p><div class="table"><a id="table..handle-property-accessor-naming-format"></a><p class="title"><b>Table 2.1. Naming format for accessing a handle's <span class="acronym">VPI</span> properties</b></p><table summary="Naming format for accessing a handle's VPI properties" border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td colspan="2">optional</td><td>required</td><td colspan="2">optional</td><td>optional</td></tr></tbody></table></div><div class="variablelist"><dl><dt><span class="term">Operation</span></dt><dd><p>This parameter suggests a method that should be invoked in the context of the Property parameter.</p></dd><dt><span class="term">Property</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> property should be accessed. The first letter of this parameter's value should be lower case, and the <span class="emphasis"><em>vpi</em></span> prefix—common to all <span class="acronym">VPI</span> properties—can be omitted.</p><p>For example, the <span class="acronym">VPI</span> property <span class="emphasis"><em>vpiFullName</em></span> is considered equivalent to <span class="emphasis"><em>fullName</em></span> but not equivalent to either <span class="emphasis"><em>FullName</em></span> or <span class="emphasis"><em>full_name</em></span>.</p></dd><dt><span class="term">Accessor</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> function should be used to access the <span class="acronym">VPI</span> property. When this parameter is not specified, the <span class="acronym">VPI</span> utility layer will attempt to <span class="emphasis"><em>guess</em></span> the value of this parameter (<a href="../../ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html" target="_top">see the source code</a> of the <code class="code"><code class="constant">SWIG</code>::<code class="constant">TYPE_p_unsigned_int</code>#<code class="function">method_missing</code></code> method for details).</p><div class="table"><a id="id2482977"></a><p class="title"><b>Table 2.2. Possible accessors and their implications</b></p><table summary="Possible accessors and their implications" border="1"><colgroup></colgroup><thead><tr><th>Accessor</th><th>Kind of value accessed</th><th><span class="acronym">VPI</span> functions used to access the value</th></tr></thead><tbody><tr><td>d</td><td>delay</td><td><code class="function">vpi_get_delays</code>, <code class="function">vpi_put_delays</code></td></tr><tr><td>l</td><td>logic</td><td><code class="function">vpi_get_value</code>, <code class="function">vpi_put_value</code></td></tr><tr><td>i</td><td>integer</td><td><code class="function">vpi_get</code></td></tr><tr><td>b</td><td>boolean</td><td><code class="function">vpi_get</code></td></tr><tr><td>s</td><td>string</td><td><code class="function">vpi_get_str</code></td></tr><tr><td>h</td><td>handle</td><td><code class="function">vpi_handle</code></td></tr></tbody></table></div></dd><dt><span class="term">Addendum</span></dt><dd><p>When this parameter is a question mark (<span class="emphasis"><em>?</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be queried as a boolean value. This produces the same effect as specifying <span class="emphasis"><em>b</em></span> for the Accessor parameter.</p><p>When this parameter is an equal sign (<span class="emphasis"><em>=</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be written to.</p></dd></dl></div><div class="example"><a id="ex..handle-property-accessor-naming-format"></a><p class="title"><b>Example 2.1. Accessing a handle's <span class="acronym">VPI</span> properties</b></p><div class="informaltable"><table border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th rowspan="2">Ruby expression</th><th colspan="6">Naming format</th><th rowspan="2">Description</th></tr><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_vpiNet</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>vpiNet</td><td> </td><td> </td><td> </td><td rowspan="2">These expressions print the full name of each <code class="constant">vpiNet</code> object associated with the handle.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_net</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>net</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal_l</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td>=</td><td rowspan="4">These expressions assign the number 15 to the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code>_l = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType</code></code></td><td> </td><td> </td><td>vpiType</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the integer value of the handle's <code class="constant">vpiType</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType_i</code></code></td><td> </td><td> </td><td>vpiType</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type</code></code></td><td> </td><td> </td><td>type</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type_i</code></code></td><td> </td><td> </td><td>type</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td> </td><td rowspan="6">These expressions access the boolean value of the handle's <code class="constant">vpiProtected</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected_b</code></code></td><td> </td><td> </td><td>vpiProtected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected?</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected_b</code></code></td><td> </td><td> </td><td>protected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected?</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName</code></code></td><td> </td><td> </td><td>vpiFullName</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the string value of the handle's <code class="constant">vpiFullName</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName_s</code></code></td><td> </td><td> </td><td>vpiFullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName</code></code></td><td> </td><td> </td><td>fullName</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName_s</code></code></td><td> </td><td> </td><td>fullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent</code></code></td><td> </td><td> </td><td>vpiParent</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the handle value of the handle's <code class="constant">vpiParent</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent_h</code></code></td><td> </td><td> </td><td>vpiParent</td><td>_</td><td>h</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent</code></code></td><td> </td><td> </td><td>parent</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent_h</code></code></td><td> </td><td> </td><td>parent</td><td>_</td><td>h</td><td> </td></tr></tbody></table></div></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="background.terminology.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"><a accesskey="u" href="background.html"><img src="images/up.png" alt="Up" /></a></td><td width="40%" align="right"> <a accesskey="n" href="background.running-tests.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Terminology </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home" /></a></td><td width="40%" align="right" valign="top"> Running a test</td></tr></table></div></body></html>
|