ruby-vpi 11.0.0 → 11.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HEADER +15 -14
- data/HISTORY +36 -1
- data/MEMO +17 -14
- data/README +2 -19
- data/Rakefile +1 -2
- data/bin/generate_test.rb +4 -4
- data/bin/generate_test_tpl/bench.rb +1 -0
- data/bin/generate_test_tpl/bench.v +1 -1
- data/bin/header_to_ruby.rb +2 -2
- data/doc/background.organization.html +1 -1
- data/doc/hacking.html +3 -0
- data/doc/hacking.release-packages.html +7 -0
- data/doc/index.html +2 -2
- data/doc/manual.txt +69 -13
- data/doc/problem.ivl.html +3 -3
- data/doc/problems.html +1 -1
- data/doc/problems.ruby.html +1 -1
- data/doc/problems.vsim.html +1 -1
- data/doc/setup.installation.html +1 -1
- data/doc/src/manual.xml +130 -20
- data/doc/usage.examples.html +1 -1
- data/doc/usage.tutorial.html +1 -1
- data/header.html +15 -14
- data/header.part.html +15 -14
- data/history.html +88 -15
- data/history.part.html +73 -1
- data/lib/ruby-vpi.rb +5 -5
- data/lib/ruby-vpi/verilog_parser.rb +1 -1
- data/lib/ruby-vpi/vpi.rb +184 -169
- data/memo.html +44 -38
- data/memo.part.html +29 -24
- data/readme.html +17 -47
- data/readme.part.html +2 -33
- data/ref/c/annotated.html +40 -0
- data/ref/c/common_8h.html +146 -0
- data/ref/c/doxygen.css +358 -0
- data/ref/c/doxygen.png +0 -0
- data/ref/c/files.html +36 -0
- data/ref/c/functions.html +154 -0
- data/ref/c/functions_vars.html +154 -0
- data/ref/c/globals.html +261 -0
- data/ref/c/globals_0x62.html +62 -0
- data/ref/c/globals_0x63.html +103 -0
- data/ref/c/globals_0x65.html +62 -0
- data/ref/c/globals_0x66.html +72 -0
- data/ref/c/globals_0x67.html +64 -0
- data/ref/c/globals_0x69.html +62 -0
- data/ref/c/globals_0x6c.html +64 -0
- data/ref/c/globals_0x6d.html +62 -0
- data/ref/c/globals_0x6e.html +63 -0
- data/ref/c/globals_0x70.html +78 -0
- data/ref/c/globals_0x72.html +73 -0
- data/ref/c/globals_0x73.html +251 -0
- data/ref/c/globals_0x74.html +62 -0
- data/ref/c/globals_0x75.html +63 -0
- data/ref/c/globals_0x76.html +483 -0
- data/ref/c/globals_0x78.html +62 -0
- data/ref/c/globals_defs.html +86 -0
- data/ref/c/globals_defs_0x65.html +55 -0
- data/ref/c/globals_defs_0x6c.html +57 -0
- data/ref/c/globals_defs_0x6e.html +56 -0
- data/ref/c/globals_defs_0x70.html +56 -0
- data/ref/c/globals_defs_0x72.html +57 -0
- data/ref/c/globals_defs_0x73.html +164 -0
- data/ref/c/globals_defs_0x75.html +56 -0
- data/ref/c/globals_defs_0x76.html +470 -0
- data/ref/c/globals_defs_0x78.html +55 -0
- data/ref/c/globals_enum.html +39 -0
- data/ref/c/globals_eval.html +40 -0
- data/ref/c/globals_func.html +208 -0
- data/ref/c/globals_func_0x66.html +62 -0
- data/ref/c/globals_func_0x67.html +55 -0
- data/ref/c/globals_func_0x69.html +53 -0
- data/ref/c/globals_func_0x70.html +53 -0
- data/ref/c/globals_func_0x72.html +57 -0
- data/ref/c/globals_func_0x73.html +114 -0
- data/ref/c/globals_func_0x76.html +57 -0
- data/ref/c/globals_type.html +66 -0
- data/ref/c/globals_vars.html +126 -0
- data/ref/c/index.html +20 -0
- data/ref/c/relay_8c.html +214 -0
- data/ref/c/relay_8h.html +129 -0
- data/ref/c/structrelay____RubyOptions____def.html +67 -0
- data/ref/c/structswig__cast__info.html +98 -0
- data/ref/c/structswig__class.html +115 -0
- data/ref/c/structswig__module__info.html +132 -0
- data/ref/c/structswig__type__info.html +132 -0
- data/ref/c/structt__cb__data.html +168 -0
- data/ref/c/structt__vpi__delay.html +151 -0
- data/ref/c/structt__vpi__error__info.html +219 -0
- data/ref/c/structt__vpi__strengthval.html +83 -0
- data/ref/c/structt__vpi__systf__data.html +185 -0
- data/ref/c/structt__vpi__time.html +100 -0
- data/ref/c/structt__vpi__value.html +314 -0
- data/ref/c/structt__vpi__vecval.html +66 -0
- data/ref/c/structt__vpi__vlog__info.html +151 -0
- data/ref/c/swig_8c.html +80 -0
- data/ref/c/swig_8h.html +83 -0
- data/ref/c/swig__vpi_8h.html +8739 -0
- data/ref/c/swig__wrap_8cin.html +11556 -0
- data/ref/c/tab_b.gif +0 -0
- data/ref/c/tab_l.gif +0 -0
- data/ref/c/tab_r.gif +0 -0
- data/ref/c/tabs.css +102 -0
- data/ref/c/unions__vpi__value__value.html +166 -0
- data/ref/c/verilog_8h.html +117 -0
- data/ref/c/vlog_8c.html +168 -0
- data/ref/c/vlog_8h.html +128 -0
- data/ref/c/vpi__user_8h.html +8739 -0
- data/ref/ruby/classes/ERB.html +158 -0
- data/ref/ruby/classes/ERB.src/M000034.html +29 -0
- data/ref/ruby/classes/FileUtils.html +165 -0
- data/ref/ruby/classes/FileUtils.src/M000081.html +18 -0
- data/ref/ruby/classes/FileUtils.src/M000082.html +18 -0
- data/ref/ruby/classes/Integer.html +398 -0
- data/ref/ruby/classes/Integer.src/M000012.html +25 -0
- data/ref/ruby/classes/Integer.src/M000013.html +18 -0
- data/ref/ruby/classes/Integer.src/M000014.html +18 -0
- data/ref/ruby/classes/Integer.src/M000015.html +18 -0
- data/ref/ruby/classes/Integer.src/M000016.html +18 -0
- data/ref/ruby/classes/Integer.src/M000017.html +18 -0
- data/ref/ruby/classes/Integer.src/M000020.html +22 -0
- data/ref/ruby/classes/Integer.src/M000021.html +22 -0
- data/ref/ruby/classes/Integer.src/M000022.html +25 -0
- data/ref/ruby/classes/Integer.src/M000023.html +31 -0
- data/ref/ruby/classes/Integer.src/M000024.html +25 -0
- data/ref/ruby/classes/Integer.src/M000025.html +30 -0
- data/ref/ruby/classes/OutputInfo.html +294 -0
- data/ref/ruby/classes/OutputInfo.src/M000030.html +50 -0
- data/ref/ruby/classes/RDoc.html +135 -0
- data/ref/ruby/classes/RDoc.src/M000095.html +40 -0
- data/ref/ruby/classes/RubyVpi.html +206 -0
- data/ref/ruby/classes/RubyVpi.src/M000083.html +78 -0
- data/ref/ruby/classes/RubyVpi.src/M000084.html +20 -0
- data/ref/ruby/classes/RubyVpi/Config.html +159 -0
- data/ref/ruby/classes/String.html +159 -0
- data/ref/ruby/classes/String.src/M000032.html +41 -0
- data/ref/ruby/classes/String.src/M000033.html +18 -0
- data/ref/ruby/classes/Table.html +191 -0
- data/ref/ruby/classes/Table.src/M000026.html +38 -0
- data/ref/ruby/classes/Table.src/M000027.html +18 -0
- data/ref/ruby/classes/Table.src/M000028.html +18 -0
- data/ref/ruby/classes/Table.src/M000029.html +18 -0
- data/ref/ruby/classes/Template.html +158 -0
- data/ref/ruby/classes/Template.src/M000031.html +18 -0
- data/ref/ruby/classes/VerilogParser.html +187 -0
- data/ref/ruby/classes/VerilogParser.src/M000005.html +34 -0
- data/ref/ruby/classes/VerilogParser/Module.html +172 -0
- data/ref/ruby/classes/VerilogParser/Module.src/M000006.html +29 -0
- data/ref/ruby/classes/VerilogParser/Module/Parameter.html +160 -0
- data/ref/ruby/classes/VerilogParser/Module/Parameter.src/M000011.html +21 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.html +207 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000007.html +21 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000008.html +18 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000009.html +18 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000010.html +18 -0
- data/ref/ruby/classes/Vpi.html +124 -0
- data/ref/ruby/classes/Vpi/Handle.html +383 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000085.html +18 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000086.html +18 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000087.html +22 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000088.html +44 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000089.html +87 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000090.html +30 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000091.html +24 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000093.html +68 -0
- data/ref/ruby/classes/Vpi/Handle/Property.html +130 -0
- data/ref/ruby/classes/Vpi/Handle/Property.src/M000094.html +80 -0
- data/ref/ruby/classes/XX.html +138 -0
- data/ref/ruby/classes/XX/Document.html +295 -0
- data/ref/ruby/classes/XX/Document.src/M000072.html +22 -0
- data/ref/ruby/classes/XX/Document.src/M000073.html +20 -0
- data/ref/ruby/classes/XX/Document.src/M000074.html +20 -0
- data/ref/ruby/classes/XX/Document.src/M000075.html +20 -0
- data/ref/ruby/classes/XX/Document.src/M000076.html +22 -0
- data/ref/ruby/classes/XX/Document.src/M000077.html +21 -0
- data/ref/ruby/classes/XX/Document.src/M000078.html +21 -0
- data/ref/ruby/classes/XX/Document.src/M000079.html +34 -0
- data/ref/ruby/classes/XX/Document.src/M000080.html +98 -0
- data/ref/ruby/classes/XX/HTML4.html +145 -0
- data/ref/ruby/classes/XX/HTML4.src/M000036.html +20 -0
- data/ref/ruby/classes/XX/HTML4/Strict.html +138 -0
- data/ref/ruby/classes/XX/HTML4/Strict.src/M000038.html +20 -0
- data/ref/ruby/classes/XX/HTML4/Transitional.html +138 -0
- data/ref/ruby/classes/XX/HTML4/Transitional.src/M000037.html +20 -0
- data/ref/ruby/classes/XX/Markup.html +160 -0
- data/ref/ruby/classes/XX/Markup.src/M000043.html +28 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.html +236 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000044.html +22 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000045.html +20 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000046.html +25 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000047.html +20 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000048.html +27 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000049.html +20 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000050.html +27 -0
- data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000051.html +22 -0
- data/ref/ruby/classes/XX/Markup/Error.html +111 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.html +474 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000052.html +56 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000053.html +33 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000054.html +31 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000055.html +48 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000056.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000057.html +31 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000058.html +32 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000059.html +32 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000060.html +28 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000061.html +23 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000062.html +26 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000063.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000064.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000065.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000066.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000067.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000068.html +21 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000069.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000070.html +20 -0
- data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000071.html +20 -0
- data/ref/ruby/classes/XX/XHTML.html +145 -0
- data/ref/ruby/classes/XX/XHTML.src/M000039.html +36 -0
- data/ref/ruby/classes/XX/XHTML/Strict.html +138 -0
- data/ref/ruby/classes/XX/XHTML/Strict.src/M000041.html +20 -0
- data/ref/ruby/classes/XX/XHTML/Transitional.html +138 -0
- data/ref/ruby/classes/XX/XHTML/Transitional.src/M000040.html +20 -0
- data/ref/ruby/classes/XX/XML.html +138 -0
- data/ref/ruby/classes/XX/XML.src/M000035.html +20 -0
- data/ref/ruby/classes/XX/XMLish.html +138 -0
- data/ref/ruby/classes/XX/XMLish.src/M000042.html +18 -0
- data/ref/ruby/created.rid +1 -0
- data/ref/ruby/files/bin/generate_test_rb.html +248 -0
- data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +18 -0
- data/ref/ruby/files/bin/generate_test_rb.src/M000002.html +40 -0
- data/ref/ruby/files/bin/header_to_ruby_rb.html +124 -0
- data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +101 -0
- data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +111 -0
- data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +115 -0
- data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +208 -0
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +24 -0
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000004.html +26 -0
- data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +107 -0
- data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +148 -0
- data/ref/ruby/files/lib/ruby-vpi_rb.html +111 -0
- data/ref/ruby/fr_class_index.html +57 -0
- data/ref/ruby/fr_file_index.html +40 -0
- data/ref/ruby/fr_method_index.html +121 -0
- data/ref/ruby/index.html +24 -0
- data/ref/ruby/rdoc-style.css +208 -0
- data/samp/counter/counter_rspec_bench.rb +1 -0
- data/samp/counter/counter_rspec_bench.v +1 -1
- data/samp/counter/counter_xunit_bench.rb +1 -0
- data/samp/counter/counter_xunit_bench.v +1 -1
- data/samp/pipelined_alu/hw5_unit_test_bench.rb +1 -0
- data/samp/pipelined_alu/hw5_unit_test_bench.v +1 -1
- data/samp/pipelined_alu/int_gen.rb +6 -7
- metadata +269 -2
data/HEADER
CHANGED
|
@@ -35,58 +35,59 @@
|
|
|
35
35
|
<dt>
|
|
36
36
|
<span class="term">
|
|
37
37
|
<a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
|
|
38
|
-
|
|
38
|
+
Facilities</a>
|
|
39
39
|
</span>
|
|
40
40
|
</dt>
|
|
41
41
|
<dd>
|
|
42
42
|
<p>
|
|
43
|
-
Access
|
|
43
|
+
Access the issue tracker, file downloads, support requests, discussion forums, and more at <a href="http://rubyforge.org" target="_top">
|
|
44
44
|
RubyForge</a>.
|
|
45
45
|
</p>
|
|
46
46
|
</dd>
|
|
47
47
|
|
|
48
48
|
<dt>
|
|
49
49
|
<span class="term">
|
|
50
|
-
<a href="http://rubyforge.org
|
|
51
|
-
|
|
50
|
+
<a href="http://ruby-vpi.rubyforge.org" target="_top">
|
|
51
|
+
Project</a>
|
|
52
52
|
</span>
|
|
53
53
|
</dt>
|
|
54
54
|
<dd>
|
|
55
55
|
<p>
|
|
56
|
-
|
|
56
|
+
Access more information at the project's home page.
|
|
57
|
+
</p>
|
|
57
58
|
</dd>
|
|
58
59
|
|
|
59
60
|
<dt>
|
|
60
61
|
<span class="term">
|
|
61
|
-
<a href="http://rubyforge.org/
|
|
62
|
-
|
|
62
|
+
<a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi" target="_top">
|
|
63
|
+
Sources</a>
|
|
63
64
|
</span>
|
|
64
65
|
</dt>
|
|
65
66
|
<dd>
|
|
66
67
|
<p>
|
|
67
|
-
|
|
68
|
+
Browse or access the source code repository.</p>
|
|
68
69
|
</dd>
|
|
69
70
|
|
|
70
71
|
<dt>
|
|
71
72
|
<span class="term">
|
|
72
|
-
<a href="http://ruby-vpi.rubyforge.org/
|
|
73
|
-
|
|
73
|
+
<a href="http://ruby-vpi.rubyforge.org/talks" target="_top">
|
|
74
|
+
Talks</a>
|
|
74
75
|
</span>
|
|
75
76
|
</dt>
|
|
76
77
|
<dd>
|
|
77
78
|
<p>
|
|
78
|
-
|
|
79
|
+
Access public presentations about Ruby-VPI.</p>
|
|
79
80
|
</dd>
|
|
80
81
|
|
|
81
82
|
<dt>
|
|
82
83
|
<span class="term">
|
|
83
|
-
<a href="http://rubyforge.org/
|
|
84
|
-
|
|
84
|
+
<a href="http://ruby-vpi.rubyforge.org/blog" target="_top">
|
|
85
|
+
News</a>
|
|
85
86
|
</span>
|
|
86
87
|
</dt>
|
|
87
88
|
<dd>
|
|
88
89
|
<p>
|
|
89
|
-
|
|
90
|
+
See what the developers are cooking up.</p>
|
|
90
91
|
</dd>
|
|
91
92
|
|
|
92
93
|
</dl>
|
data/HISTORY
CHANGED
|
@@ -12,6 +12,41 @@ We _strictly_ follow the RubyGems project's "rational versioning policy":http://
|
|
|
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 11.1.0 (2006-11-08)
|
|
16
|
+
|
|
17
|
+
h2. Summary
|
|
18
|
+
|
|
19
|
+
This release fixes a bug in generated benches, improves the "the @Vpi::Handle@ class":./ref/ruby/classes/Vpi/Handle.html, and improves performance by roughly 20%.
|
|
20
|
+
|
|
21
|
+
h2. Acknowledgment
|
|
22
|
+
|
|
23
|
+
Thanks to Matt Fischler for finding the bug in generated benches (see below).
|
|
24
|
+
|
|
25
|
+
h2. Notice
|
|
26
|
+
|
|
27
|
+
* A bug in generated Verilog and Ruby benches, which caused this error <pre>ruby: no such file to load -- ruby-vpi (LoadError)</pre> has been fixed.
|
|
28
|
+
** Please regenerate your tests to apply this bug fix to your tests.
|
|
29
|
+
|
|
30
|
+
h2. Detail
|
|
31
|
+
|
|
32
|
+
* The class @SWIG::TYPE_p_unsigned_int@ has been aliased as @Vpi::Handle@ for easier access.
|
|
33
|
+
|
|
34
|
+
* @Vpi::Handle#to_s@ and @Vpi::Handle#inspect@ now produce more informative output. For example, what used to appear as <pre>#<SWIG::TYPE_p_unsigned_int:0x2aaab6574fa0></pre> now appears as <pre>#<Vpi::Handle vpiModule fullName=counter_rspec_bench, size=-1, file=counter_rspec_bench.v, lineNo=2></pre> in this release.
|
|
35
|
+
** You can also provide a list of VPI property/type names or integer constants to those methods to see additional information in the output.
|
|
36
|
+
|
|
37
|
+
* @Vpi::Handle@ now implements all methods from @Enumerable@, such as @map@, @each@, @select@, and so on. However, unlike their counterparts in @Enumerable@, these methods also accept a list of VPI property/type names or integer constants. Thus, you are now able to write @handle.select(:reg, :net) {|h| h.size > 5}@ to obtain a list of child handles to registers and nets whose capacity is greater than 5 bits.
|
|
38
|
+
|
|
39
|
+
* The @Vpi::Handle#[]@, @Vpi::Handle#get_value@, and @Vpi::Handle#put_value@ methods now accept names of VPI types/properties as well as their integer constants. Thus, you are now able to write @handle[:reg, :net]@ to obtain a list of handles to all child registers and nets.
|
|
40
|
+
|
|
41
|
+
* @Vpi::Handle#method_missing@ has been refactored to cache queries. There is now, approximately, 20% improvement in performance.
|
|
42
|
+
|
|
43
|
+
* @Vpi::Handle#method_missing@ has been fixed to accept operations with multiple underscores. For example, before this release, you could not write @handle.find_all_reg {|r| r.name =~ /foo/}@ because the "find_all_reg" method would be interpreted as the operation "find" and the VPI property "all_reg".
|
|
44
|
+
|
|
45
|
+
* The @IntegerGenerator@ class, in the pipelined ALU example, has been fixed so that multiple instances do not interfere with the generation of each other's prime integers.
|
|
46
|
+
|
|
47
|
+
* Due to a bug in the @Rakefile@, the reference documentation was not included in the previous few releases. This has been fixed.
|
|
48
|
+
|
|
49
|
+
|
|
15
50
|
h1. Version 11.0.0 (2006-11-05)
|
|
16
51
|
|
|
17
52
|
h2. Summary
|
|
@@ -77,7 +112,7 @@ h3. Automated test generator
|
|
|
77
112
|
|
|
78
113
|
h3. User manual
|
|
79
114
|
|
|
80
|
-
* Revised the stylesheet to make disjoint sections readily distinguishable from
|
|
115
|
+
* Revised the stylesheet to make disjoint sections readily distinguishable from each other, through generous spacing and minor coloring.
|
|
81
116
|
|
|
82
117
|
* Added tips about @ruby-vpi/runner_proxy@, @rake -T@, and using *kdiff3* with *generate_test.rb*.
|
|
83
118
|
|
data/MEMO
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
|
-
h1. Notes
|
|
2
|
-
|
|
3
|
-
* When within Rake, rubygems is automatically available for use. no need to require() it again
|
|
4
|
-
|
|
5
|
-
|
|
6
1
|
h1. Pending tasks
|
|
7
2
|
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
* add support for reading & writing vpi_delay values
|
|
11
|
-
|
|
12
|
-
* define handled methods in Vpi::method_missing for faster response
|
|
13
|
-
** this has been verified as bottleneck from profiling data
|
|
3
|
+
* add support for reading & writing VPI delay values
|
|
14
4
|
|
|
15
5
|
* GHDL simulator supports VPI
|
|
16
6
|
** need way to invoke VPI tasks from VHDL, like @$ruby_init();@
|
|
@@ -19,6 +9,10 @@ h1. Pending tasks
|
|
|
19
9
|
** maybe a waveform dump will also help
|
|
20
10
|
** this will help in debugging the problem
|
|
21
11
|
|
|
12
|
+
* add instructions for using *ruby-debug* with a graphical debugging tool or IDE like RadRails
|
|
13
|
+
|
|
14
|
+
* make RCov correctly profile the code and report useful coverage metrics...
|
|
15
|
+
|
|
22
16
|
|
|
23
17
|
h1. Finished tasks
|
|
24
18
|
|
|
@@ -41,10 +35,19 @@ h1. Finished tasks
|
|
|
41
35
|
|
|
42
36
|
* method_missing for Design class
|
|
43
37
|
|
|
38
|
+
* define handled methods in Vpi::method_missing for faster response
|
|
39
|
+
** this has been verified as bottleneck from profiling data
|
|
44
40
|
|
|
45
|
-
h1. Obsolete tasks
|
|
46
41
|
|
|
47
|
-
|
|
48
|
-
** try new icarus snapshot
|
|
42
|
+
h1. Obsolete tasks
|
|
49
43
|
|
|
50
44
|
* smarter test generation, which adjusts to user modifications in previously generated output -- just use a smart merging tool like *kdiff3*
|
|
45
|
+
|
|
46
|
+
* interactive console IRB wrapper for spec (just like Breakpoints in Rails)
|
|
47
|
+
** use the *ruby-debug* library with "*debugger* command for breakpoints":http://www.datanoise.com/articles/category/ruby-debug instead!
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
h1. Notes
|
|
51
|
+
|
|
52
|
+
* When within Rake, rubygems is automatically available for use. no need to require() it again
|
|
53
|
+
|
data/README
CHANGED
|
@@ -16,25 +16,8 @@ h2. Features
|
|
|
16
16
|
* Study, modify, or distribute this free software in accordance with the "GNU General Public License":http://www.gnu.org/copyleft/gpl.html.
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
h1.
|
|
20
|
-
|
|
21
|
-
* See the "user manual":./doc to begin using Ruby-VPI.
|
|
19
|
+
h1. Release notes
|
|
22
20
|
|
|
23
21
|
* See the "release history":./history.html to see what is new in this release.
|
|
24
22
|
|
|
25
|
-
* See
|
|
26
|
-
|
|
27
|
-
* Visit the "project website":http://ruby-vpi.rubyforge.org for additional resources.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
h1. Building release packages
|
|
31
|
-
|
|
32
|
-
In addition to the "normal requirements":./doc/usage.requirements.html, you need the following software to build release packages:
|
|
33
|
-
|
|
34
|
-
* "DocBook-XML":http://www.docbook.org/
|
|
35
|
-
** xsltproc
|
|
36
|
-
** xmlto
|
|
37
|
-
* "RedCloth":http://rubyforge.org/projects/redcloth/
|
|
38
|
-
* "SWIG":http://www.swig.org/
|
|
39
|
-
|
|
40
|
-
Once you have satisfied these requirements, you can run @rake release@ to build the release packages. Also, see the output of @rake -T@ for more build options.
|
|
23
|
+
* See the "project memo":./memo.html for a list of pending tasks.
|
data/Rakefile
CHANGED
|
@@ -140,7 +140,6 @@ Rake::RDocTask.new 'ref/ruby' do |t|
|
|
|
140
140
|
t.title = "#{PROJECT_NAME}: #{PROJECT_SUMMARY}"
|
|
141
141
|
t.options.concat %w(--charset utf-8 --line-numbers)
|
|
142
142
|
t.rdoc_files.include '{bin,lib/**}/*.rb'
|
|
143
|
-
t.main = 'SWIG::TYPE_p_unsigned_int'
|
|
144
143
|
end
|
|
145
144
|
|
|
146
145
|
|
|
@@ -187,7 +186,7 @@ task :dist_info => distDocs
|
|
|
187
186
|
|
|
188
187
|
|
|
189
188
|
desc "Prepare for distribution."
|
|
190
|
-
task :dist => ['ext', :doc, :dist_info] do |t|
|
|
189
|
+
task :dist => ['ext', 'ref', :doc, :dist_info] do |t|
|
|
191
190
|
cd 'ext' do
|
|
192
191
|
sh 'rake swig'
|
|
193
192
|
end
|
data/bin/generate_test.rb
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
# * The first input signal in a module's declaration is assumed to be the clocking signal.
|
|
5
5
|
#
|
|
6
6
|
# = Progress indicators
|
|
7
|
-
# create:: File will be created because it does not exist.
|
|
8
|
-
# skip:: File will be skipped because it is already up to date.
|
|
9
|
-
# update:: File will be updated because it is out of date. A backup copy will be made before the file is updated. Use a text merging tool (see MERGER) or manually transfer any necessary information from the backup copy to the updated file.
|
|
10
|
-
# backup:: A backup copy of a file is being made.
|
|
11
7
|
# module:: A Verilog module has been identified.
|
|
8
|
+
# backup:: A backup copy of a file is being made.
|
|
9
|
+
# create:: A file is being created because it does not exist.
|
|
10
|
+
# skip:: A file is being skipped because it is already up to date.
|
|
11
|
+
# update:: A file will be updated because it is out of date. A backup copy will be made before the file is updated. Use a text merging tool (see MERGER) or manually transfer any necessary information from the backup copy to the updated file.
|
|
12
12
|
#
|
|
13
13
|
# = Environment variables
|
|
14
14
|
# MERGER:: A command that invokes a text merging tool with two arguments: (1) old file, (2) new file. The tool's output should be written to the new file.
|
|
@@ -31,7 +31,7 @@ module <%= aOutputInfo.verilogBenchName %>;
|
|
|
31
31
|
// connect to the Ruby side of this bench
|
|
32
32
|
initial begin
|
|
33
33
|
<%= clockSignal %> = 0;
|
|
34
|
-
$ruby_init("ruby", "-w", "-rubygems",
|
|
34
|
+
$ruby_init("ruby", "-w", "-rubygems", <%= aOutputInfo.rubyBenchPath.inspect %>);
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
always begin
|
data/bin/header_to_ruby.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/ruby -w
|
|
2
2
|
# Transforms Verilog header files into Ruby.
|
|
3
|
-
# *
|
|
4
|
-
# *
|
|
3
|
+
# * The standard input stream is read if no input files are specified.
|
|
4
|
+
# * Output is written to the standard output stream.
|
|
5
5
|
|
|
6
6
|
=begin
|
|
7
7
|
Copyright 2006 Suraj N. Kurapati
|
|
@@ -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 either (1) its children or (2) its <span class="acronym">VPI</span> properties.</p><p>The children of a handle are simply the handles that are immediately contained within it in. For example, suppose that you had a Verilog module that contains some registers. The children, of a handle to the module, would be handles to the registers.</p><p>In the event that a child handle has the same name as a <span class="acronym">VPI</span> property, the child is given priority. However, you can always access <span class="acronym">VPI</span> properties explicitly via the <code class="function">get_value</code> and <code class="function">put_value</code> methods.</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="id2488119"></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 either (1) its children or (2) its <span class="acronym">VPI</span> properties.</p><p>The children of a handle are simply the handles that are immediately contained within it in. For example, suppose that you had a Verilog module that contains some registers. The children, of a handle to the module, would be handles to the registers.</p><p>In the event that a child handle has the same name as a <span class="acronym">VPI</span> property, the child is given priority. However, you can always access <span class="acronym">VPI</span> properties explicitly via the <code class="function">get_value</code> and <code class="function">put_value</code> methods.</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/Vpi/Handle/Property.html" target="_top">see the source code</a> of the <code class="code"><code class="constant">Property</code>.<code class="function">resolve</code></code> method for details).</p><div class="table"><a id="id2488103"></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">all_reg?</code> {|<code class="varname">reg</code>| <code class="varname">reg</code>.<code class="function">size</code> == <code class="literal">1</code>}</code></td><td>all?</td><td>_</td><td>vpiReg</td><td> </td><td> </td><td> </td><td rowspan="2">These expressions check if all registers associated with the handle are capable of storing only one bit.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">all_reg?</code> {|<code class="varname">reg</code>| <code class="varname">reg</code>.<code class="function">size</code> == <code class="literal">1</code>}</code></td><td>all?</td><td>_</td><td>reg</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select_vpiNet</code> {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td>vpiReg</td><td> </td><td> </td><td> </td><td rowspan="5">These expressions return a list of nets whose logic value is “<span class="quote">don't care</span>”.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select_net</code> {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</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">select</code>(<code class="constant">VpiNet</code>) {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td> </td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select</code>(<code class="literal">:VpiNet</code>) {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td> </td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select</code>(<code class="literal">:net</code>) {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td> </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>
|
data/doc/hacking.html
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Hacking</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="index.html" title="Ruby-VPI user manual" /><link rel="prev" href="usage.examples.html" title="Examples" /><link rel="next" href="hacking.release-packages.html" title="Building release packages" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Hacking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="usage.examples.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="hacking.release-packages.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="hacking"></a>Chapter 5. Hacking</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="hacking.release-packages.html">Building release packages</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="usage.examples.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="hacking.release-packages.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Examples </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"> Building release packages</td></tr></table></div></body></html>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Building release packages</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="hacking.html" title="Chapter 5. Hacking" /><link rel="prev" href="hacking.html" title="Chapter 5. Hacking" /><link rel="next" href="problems.html" title="Chapter 6. Known problems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Building release packages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="hacking.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 5. Hacking</th><td width="20%" align="right"> <a accesskey="n" href="problems.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="hacking.release-packages"></a>Building release packages</h2></div></div></div><p>In addition to the "normal requirements":./doc/usage.requirements.html, you need the following software to build release packages:
|
|
4
|
+
|
|
5
|
+
</p><div class="variablelist"><dl><dt><span class="term"><a href="http://www.docbook.org/" target="_top">DocBook-XML</a></span></dt><dd><p></p></dd><dt><span class="term">xsltproc</span></dt><dd><p></p></dd><dt><span class="term">xmlto</span></dt><dd><p></p></dd><dt><span class="term"><a href="http://rubyforge.org/projects/redcloth/" target="_top">RedCloth</a></span></dt><dd><p></p></dd><dt><span class="term"><a href="http://www.swig.org/" target="_top">SWIG</a></span></dt><dd><p></p></dd></dl></div><p>
|
|
6
|
+
|
|
7
|
+
Once you have satisfied these requirements, you can run <span><strong class="command">rake <span class="action">release</span></strong></span> to build the release packages. Also, see the output of <span><strong class="command">rake <code class="option">-T</code></strong></span> for more build options.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="hacking.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"><a accesskey="u" href="hacking.html"><img src="images/up.png" alt="Up" /></a></td><td width="40%" align="right"> <a accesskey="n" href="problems.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. Hacking </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"> Chapter 6. Known problems</td></tr></table></div></body></html>
|
data/doc/index.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
2
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ruby-VPI user manual</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><meta name="description" content="This manual explains how to use Ruby-VPI. A plain-text version of this manual is also available. Finally, you can find the newest version of this manual at the Ruby-VPI website." /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="application">Ruby-VPI</span> user manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="
|
|
4
|
-
your documents</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>2.1. <a href="background.organization.html#fig..organization">Overall organization of a test</a></dt><dt>2.2. <a href="background.organization.html#fig..organization.detail">Detailed organization of a test</a></dt><dt>2.3. <a href="background.running-tests.html#fig..ruby_init">Initialization of a test</a></dt><dt>2.4. <a href="background.running-tests.html#fig..ruby_relay">Execution of a test</a></dt><dt>4.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>4.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in rSpec format</a></dt><dt>4.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in xUnit format</a></dt><dt>4.4. <a href="usage.tutorial.html#fig..counter_rspec_spec.rb">Specification implemented in rSpec format</a></dt><dt>4.5. <a href="usage.tutorial.html#fig..counter_xunit_spec.rb">Specification implemented in xUnit format</a></dt><dt>4.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>4.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in rSpec format</a></dt><dt>4.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in xUnit format</a></dt><dt>4.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>4.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in rSpec format</a></dt><dt>4.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in xUnit format</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="background.organization.html#table..handle-property-accessor-naming-format">Naming format for accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>2.2. <a href="background.organization.html#
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ruby-VPI user manual</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><meta name="description" content="This manual explains how to use Ruby-VPI. A plain-text version of this manual is also available. Finally, you can find the newest version of this manual at the Ruby-VPI website." /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="application">Ruby-VPI</span> user manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="id2472603"></a><span class="application">Ruby-VPI</span> user manual</h1></div><div><p class="copyright">Copyright © 2006 Suraj N. Kurapati</p></div><div><p class="copyright">Copyright © 2005, 2006 <a href="http://tango.freedesktop.org" target="_top">Tango Desktop Project</a> <em><span class="remark">for admonition and navigation graphics released under <a href="images/COPYING" target="_top">this license</a>.</span></em></p></div><div><p class="copyright">Copyright © 1999, 2000, 2001 Norman Walsh <em><span class="remark">for DocBook graphics released under <a href="images/copyright" target="_top">this license</a>.</span></em></p></div><div><div class="legalnotice"><a id="id2516394"></a><p>Permission is granted to copy, distribute and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "<span class="acronym">GNU</span> Free Documentation License".</p></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>This manual explains how to use <span class="application">Ruby-VPI</span>. A <a href="manual.txt" target="_top">plain-text version of this manual</a> is also available. Finally, you can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org" target="_top"><span class="application">Ruby-VPI</span> website</a>.</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.license.html">License</a></span></dt><dt><span class="section"><a href="introduction.manifest.html">Manifest</a></span></dt><dt><span class="section"><a href="introduction.resources.html">Resources</a></span></dt><dt><span class="section"><a href="introduction.related-works.html">Related works</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.related-works.html#introduction.related-works.pli">Ye olde PLI</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="background.html">2. Background</a></span></dt><dd><dl><dt><span class="section"><a href="background.methodology.html">Methodology</a></span></dt><dt><span class="section"><a href="background.terminology.html">Terminology</a></span></dt><dt><span class="section"><a href="background.organization.html">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="background.organization.html#organization.vpi">Interface to <span class="acronym">VPI</span></a></span></dt></dl></dd><dt><span class="section"><a href="background.running-tests.html">Running a test</a></span></dt><dd><dl><dt><span class="section"><a href="background.running-tests.html#background.running-tests.init">Initialization</a></span></dt><dt><span class="section"><a href="background.running-tests.html#background.running-tests.exec">Execution</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">3. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.reqs.html">Requirements</a></span></dt><dd><dl><dt><span class="section"><a href="setup.reqs.html#setup.reqs.optional">Recommendations</a></span></dt></dl></dd><dt><span class="section"><a href="setup.installation.html">Installation</a></span></dt><dd><dl><dt><span class="section"><a href="setup.installation.html#setup.installation.windows">Installing on Windows</a></span></dt></dl></dd><dt><span class="section"><a href="setup.maintenance.html">Maintenance</a></span></dt></dl></dd><dt><span class="chapter"><a href="usage.html">4. Usage</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tools.html">Tools</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tools.html#usage.tools.generate-test">Automated test generation</a></span></dt><dt><span class="section"><a href="usage.tools.html#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></span></dt></dl></dd><dt><span class="section"><a href="usage.tutorial.html">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.declare-design">Start with a design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.generate-test">Generate a test</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.specification">Specify your expectations</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-proto">Implement the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-proto">Verify the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-design">Implement the design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-design">Verify the design</a></span></dt></dl></dd><dt><span class="section"><a href="usage.examples.html">Examples</a></span></dt></dl></dd><dt><span class="chapter"><a href="hacking.html">5. Hacking</a></span></dt><dd><dl><dt><span class="section"><a href="hacking.release-packages.html">Building release packages</a></span></dt></dl></dd><dt><span class="chapter"><a href="problems.html">6. Known problems</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html">Ruby</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html#problems.ruby.SystemStackError">SystemStackError</a></span></dt><dt><span class="section"><a href="problems.ruby.html#problems.ruby.xUnit">test/unit</a></span></dt></dl></dd><dt><span class="section"><a href="problem.ivl.html">Icarus Verilog</a></span></dt><dd><dl><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_handle_by_name">vpi_handle_by_name</a></span></dt><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_reset">Vpi::reset</a></span></dt></dl></dd><dt><span class="section"><a href="problems.vsim.html">Mentor Modelsim</a></span></dt><dd><dl><dt><span class="section"><a href="problems.vsim.html#problems.vsim.ruby_run">ruby_run()</a></span></dt></dl></dd></dl></dd><dt><span class="glossary"><a href="glossary.html">Glossary</a></span></dt><dt><span class="appendix"><a href="gfdl.html">A. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="section"><a href="gfdl-0.html">PREAMBLE</a></span></dt><dt><span class="section"><a href="gfdl-1.html">APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="section"><a href="gfdl-2.html">VERBATIM COPYING</a></span></dt><dt><span class="section"><a href="gfdl-3.html">COPYING IN QUANTITY</a></span></dt><dt><span class="section"><a href="gfdl-4.html">MODIFICATIONS</a></span></dt><dt><span class="section"><a href="gfdl-5.html">COMBINING DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-6.html">COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-7.html">AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="section"><a href="gfdl-8.html">TRANSLATION</a></span></dt><dt><span class="section"><a href="gfdl-9.html">TERMINATION</a></span></dt><dt><span class="section"><a href="gfdl-10.html">FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="section"><a href="gfdl-addendum.html">ADDENDUM: How to use this License for
|
|
4
|
+
your documents</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>2.1. <a href="background.organization.html#fig..organization">Overall organization of a test</a></dt><dt>2.2. <a href="background.organization.html#fig..organization.detail">Detailed organization of a test</a></dt><dt>2.3. <a href="background.running-tests.html#fig..ruby_init">Initialization of a test</a></dt><dt>2.4. <a href="background.running-tests.html#fig..ruby_relay">Execution of a test</a></dt><dt>4.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>4.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in rSpec format</a></dt><dt>4.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in xUnit format</a></dt><dt>4.4. <a href="usage.tutorial.html#fig..counter_rspec_spec.rb">Specification implemented in rSpec format</a></dt><dt>4.5. <a href="usage.tutorial.html#fig..counter_xunit_spec.rb">Specification implemented in xUnit format</a></dt><dt>4.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>4.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in rSpec format</a></dt><dt>4.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in xUnit format</a></dt><dt>4.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>4.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in rSpec format</a></dt><dt>4.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in xUnit format</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="background.organization.html#table..handle-property-accessor-naming-format">Naming format for accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>2.2. <a href="background.organization.html#id2488103">Possible accessors and their implications</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="background.organization.html#ex..handle-property-accessor-naming-format">Accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>6.1. <a href="problem.ivl.html#ex..TestFoo">Part of a bench which instantiates a Verilog design</a></dt><dt>6.2. <a href="problem.ivl.html#ex..TestFoo_bad">Bad design with unconnected registers</a></dt><dt>6.3. <a href="problem.ivl.html#ex..TestFoo_fix">Fixed design with wired registers</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
|
data/doc/manual.txt
CHANGED
|
@@ -77,7 +77,11 @@ Table of Contents
|
|
|
77
77
|
|
|
78
78
|
Examples
|
|
79
79
|
|
|
80
|
-
5.
|
|
80
|
+
5. Hacking
|
|
81
|
+
|
|
82
|
+
Building release packages
|
|
83
|
+
|
|
84
|
+
6. Known problems
|
|
81
85
|
|
|
82
86
|
Ruby
|
|
83
87
|
|
|
@@ -135,9 +139,9 @@ List of Tables
|
|
|
135
139
|
List of Examples
|
|
136
140
|
|
|
137
141
|
2.1. Accessing a handle's VPI properties
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
142
|
+
6.1. Part of a bench which instantiates a Verilog design
|
|
143
|
+
6.2. Bad design with unconnected registers
|
|
144
|
+
6.3. Fixed design with wired registers
|
|
141
145
|
|
|
142
146
|
Chapter 1. Introduction
|
|
143
147
|
|
|
@@ -403,7 +407,7 @@ Accessor
|
|
|
403
407
|
This parameter suggests which VPI function should be used to access the VPI
|
|
404
408
|
property. When this parameter is not specified, the VPI utility layer will
|
|
405
409
|
attempt to guess the value of this parameter (see the source code of the
|
|
406
|
-
|
|
410
|
+
Property.resolve method for details).
|
|
407
411
|
|
|
408
412
|
Table 2.2. Possible accessors and their implications
|
|
409
413
|
|
|
@@ -449,6 +453,34 @@ Example 2.1. Accessing a handle's VPI properties
|
|
|
449
453
|
│| puts net.fullName} │ │ │ │ │ │ │handle. │
|
|
450
454
|
│ │ │ │ │ │ │ │ │
|
|
451
455
|
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┼────────────┤
|
|
456
|
+
│ │ │ │ │ │ │ │These │
|
|
457
|
+
│handle.all_reg? {|reg│ │ │ │ │ │ │expressions │
|
|
458
|
+
│| reg.size == 1} │all? │_│vpiReg │ │ │ │check if all│
|
|
459
|
+
│ │ │ │ │ │ │ │registers │
|
|
460
|
+
│ │ │ │ │ │ │ │associated │
|
|
461
|
+
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤with the │
|
|
462
|
+
│ │ │ │ │ │ │ │handle are │
|
|
463
|
+
│handle.all_reg? {|reg│ │ │ │ │ │ │capable of │
|
|
464
|
+
│| reg.size == 1} │all? │_│reg │ │ │ │storing only│
|
|
465
|
+
│ │ │ │ │ │ │ │one bit. │
|
|
466
|
+
│ │ │ │ │ │ │ │ │
|
|
467
|
+
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┼────────────┤
|
|
468
|
+
│handle.select_vpiNet │select │_│vpiReg │ │ │ │ │
|
|
469
|
+
│{|net| net.x?} │ │ │ │ │ │ │ │
|
|
470
|
+
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤ │
|
|
471
|
+
│handle.select_net {| │select │_│net │ │ │ │These │
|
|
472
|
+
│net| net.x?} │ │ │ │ │ │ │expressions │
|
|
473
|
+
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤return a │
|
|
474
|
+
│handle.select(VpiNet)│select │_│ │ │ │ │list of nets│
|
|
475
|
+
│{|net| net.x?} │ │ │ │ │ │ │whose logic │
|
|
476
|
+
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤value is │
|
|
477
|
+
│handle.select │ │ │ │ │ │ │“don't │
|
|
478
|
+
│(:VpiNet) {|net| │select │_│ │ │ │ │care”. │
|
|
479
|
+
│net.x?} │ │ │ │ │ │ │ │
|
|
480
|
+
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤ │
|
|
481
|
+
│handle.select(:net) │select │_│ │ │ │ │ │
|
|
482
|
+
│{|net| net.x?} │ │ │ │ │ │ │ │
|
|
483
|
+
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┼────────────┤
|
|
452
484
|
│handle.vpiIntVal │ │ │vpiIntVal │ │ │ │ │
|
|
453
485
|
│ │ │ │ │ │ │ │These │
|
|
454
486
|
├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤expressions │
|
|
@@ -1195,7 +1227,31 @@ run the command rake to get started.
|
|
|
1195
1227
|
Also, some example specifications make use of BDD through the rSpec library.
|
|
1196
1228
|
See the the section called “Methodology” for a discussion of rSpec.
|
|
1197
1229
|
|
|
1198
|
-
Chapter 5.
|
|
1230
|
+
Chapter 5. Hacking
|
|
1231
|
+
|
|
1232
|
+
Table of Contents
|
|
1233
|
+
|
|
1234
|
+
Building release packages
|
|
1235
|
+
|
|
1236
|
+
Building release packages
|
|
1237
|
+
|
|
1238
|
+
In addition to the "normal requirements":./doc/usage.requirements.html, you
|
|
1239
|
+
need the following software to build release packages:
|
|
1240
|
+
|
|
1241
|
+
DocBook-XML
|
|
1242
|
+
|
|
1243
|
+
xsltproc
|
|
1244
|
+
|
|
1245
|
+
xmlto
|
|
1246
|
+
|
|
1247
|
+
RedCloth
|
|
1248
|
+
|
|
1249
|
+
SWIG
|
|
1250
|
+
|
|
1251
|
+
Once you have satisfied these requirements, you can run rake release to build
|
|
1252
|
+
the release packages. Also, see the output of rake -T for more build options.
|
|
1253
|
+
|
|
1254
|
+
Chapter 6. Known problems
|
|
1199
1255
|
|
|
1200
1256
|
Table of Contents
|
|
1201
1257
|
|
|
@@ -1248,11 +1304,11 @@ function requires an absolute path (including the name of the bench which
|
|
|
1248
1304
|
instantiates the design) to a Verilog object. In addition, vpi_handle_by_name
|
|
1249
1305
|
is unable to retrieve the handle for a module parameter.
|
|
1250
1306
|
|
|
1251
|
-
For example, consider Example
|
|
1307
|
+
For example, consider Example 6.1, “Part of a bench which instantiates a
|
|
1252
1308
|
Verilog design”. Here, one needs to specify TestFoo.my_foo.clk instead of
|
|
1253
1309
|
my_foo.clk in order to access the clk input of the my_foo module instance.
|
|
1254
1310
|
|
|
1255
|
-
Example
|
|
1311
|
+
Example 6.1. Part of a bench which instantiates a Verilog design
|
|
1256
1312
|
|
|
1257
1313
|
module TestFoo;
|
|
1258
1314
|
reg clk_reg;
|
|
@@ -1267,17 +1323,17 @@ a parameter to a module instantiation). Otherwise, you will get a nil value as
|
|
|
1267
1323
|
the result of vpi_handle_by_name method.
|
|
1268
1324
|
|
|
1269
1325
|
For example, suppose you wanted to access the clk_reg register, from the bench
|
|
1270
|
-
shown in Example
|
|
1326
|
+
shown in Example 6.2, “Bad design with unconnected registers”. If you execute
|
|
1271
1327
|
the statement clk_reg = vpi_handle_by_name("TestFoo.clk_reg", nil) in a
|
|
1272
1328
|
specification, then you will discover that the vpi_handle_by_name method
|
|
1273
1329
|
returns nil instead of a handle to the clk_reg register.
|
|
1274
1330
|
|
|
1275
1331
|
The solution is to change the design such that it appears like the one shown in
|
|
1276
|
-
Example
|
|
1277
|
-
connected to a wire, or Example
|
|
1332
|
+
Example 6.3, “Fixed design with wired registers” where the register is
|
|
1333
|
+
connected to a wire, or Example 6.1, “Part of a bench which instantiates a
|
|
1278
1334
|
Verilog design” where the register is connected to a module instantiation.
|
|
1279
1335
|
|
|
1280
|
-
Example
|
|
1336
|
+
Example 6.2. Bad design with unconnected registers
|
|
1281
1337
|
|
|
1282
1338
|
Here the clk_reg register is not connected to anything.
|
|
1283
1339
|
|
|
@@ -1285,7 +1341,7 @@ module TestFoo;
|
|
|
1285
1341
|
reg clk_reg;
|
|
1286
1342
|
endmodule
|
|
1287
1343
|
|
|
1288
|
-
Example
|
|
1344
|
+
Example 6.3. Fixed design with wired registers
|
|
1289
1345
|
|
|
1290
1346
|
Here the clk_reg register is connected to the clk_wire wire.
|
|
1291
1347
|
|
data/doc/problem.ivl.html
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
2
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Icarus Verilog</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="problems.html" title="Chapter
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Icarus Verilog</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="problems.html" title="Chapter 6. Known problems" /><link rel="prev" href="problems.ruby.html" title="Ruby" /><link rel="next" href="problems.vsim.html" title="Mentor Modelsim" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Icarus Verilog</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="problems.ruby.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 6. Known problems</th><td width="20%" align="right"> <a accesskey="n" href="problems.vsim.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="problem.ivl"></a>Icarus Verilog</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="problems.ivl.vpi_handle_by_name"></a>vpi_handle_by_name</h3></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="problems.ivl.vpi_handle_by_name.absolute-paths"></a>Give full paths to Verilog objects</h4></div></div></div><p>In version 0.8 and snapshot 20061009 of Icarus Verilog, the <code class="function">vpi_handle_by_name</code> function requires an <span class="emphasis"><em>absolute</em></span> path (including the name of the bench which instantiates the design) to a Verilog object. In addition, <code class="function">vpi_handle_by_name</code> is unable to retrieve the handle for a module parameter.</p><p>For example, consider <a href="problem.ivl.html#ex..TestFoo" title="Example 6.1. Part of a bench which instantiates a Verilog design">Example 6.1, “Part of a bench which instantiates a Verilog design”</a>. Here, one needs to specify <code class="code">TestFoo.my_foo.clk</code> instead of <code class="code">my_foo.clk</code> in order to access the <code class="varname">clk</code> input of the <code class="varname">my_foo</code> module instance.</p><div class="example"><a id="ex..TestFoo"></a><p class="title"><b>Example 6.1. Part of a bench which instantiates a Verilog design</b></p><pre class="programlisting">
|
|
4
4
|
<span class="token">module</span> TestFoo;
|
|
5
5
|
<span class="type">reg</span> <code class="varname">clk_reg</code>;
|
|
6
6
|
Foo <code class="varname">my_foo</code>(<em class="parameter"><code>.clk</code></em>(<code class="varname">clk_reg</code>));
|
|
7
7
|
<span class="token">endmodule</span>
|
|
8
|
-
</pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="problems.ivl.vpi_handle_by_name.connect-registers"></a>Registers must be connected</h4></div></div></div><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="literal">nil</code> value as the result of <code class="function">vpi_handle_by_name</code> method.</p><p>For example, suppose you wanted to access the <code class="varname">clk_reg</code> register, from the bench shown in <a href="problem.ivl.html#ex..TestFoo_bad" title="Example
|
|
8
|
+
</pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="problems.ivl.vpi_handle_by_name.connect-registers"></a>Registers must be connected</h4></div></div></div><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="literal">nil</code> value as the result of <code class="function">vpi_handle_by_name</code> method.</p><p>For example, suppose you wanted to access the <code class="varname">clk_reg</code> register, from the bench shown in <a href="problem.ivl.html#ex..TestFoo_bad" title="Example 6.2. Bad design with unconnected registers">Example 6.2, “Bad design with unconnected registers”</a>. If you execute the statement <code class="code"><code class="varname">clk_reg</code> = <code class="function">vpi_handle_by_name</code>(<em class="parameter"><code><code class="literal">"TestFoo.clk_reg"</code></code></em>, <em class="parameter"><code><code class="literal">nil</code></code></em>)</code> in a specification, then you will discover that the <code class="function">vpi_handle_by_name</code> method returns <code class="literal">nil</code> instead of a handle to the <code class="varname">clk_reg</code> register.</p><p>The solution is to change the design such that it appears like the one shown in <a href="problem.ivl.html#ex..TestFoo_fix" title="Example 6.3. Fixed design with wired registers">Example 6.3, “Fixed design with wired registers”</a> where the register is connected to a wire, or <a href="problem.ivl.html#ex..TestFoo" title="Example 6.1. Part of a bench which instantiates a Verilog design">Example 6.1, “Part of a bench which instantiates a Verilog design”</a> where the register is connected to a module instantiation.</p><div class="example"><a id="ex..TestFoo_bad"></a><p class="title"><b>Example 6.2. Bad design with unconnected registers</b></p><p>Here the <code class="varname">clk_reg</code> register is not connected to anything.</p><pre class="programlisting">
|
|
9
9
|
<span class="token">module</span> TestFoo;
|
|
10
10
|
<span class="type">reg</span> <code class="varname">clk_reg</code>;
|
|
11
11
|
<span class="token">endmodule</span>
|
|
12
|
-
</pre></div><div class="example"><a id="ex..TestFoo_fix"></a><p class="title"><b>Example
|
|
12
|
+
</pre></div><div class="example"><a id="ex..TestFoo_fix"></a><p class="title"><b>Example 6.3. Fixed design with wired registers</b></p><p>Here the <code class="varname">clk_reg</code> register is connected to the <code class="varname">clk_wire</code> wire.</p><pre class="programlisting">
|
|
13
13
|
<span class="token">module</span> TestFoo;
|
|
14
14
|
<span class="type">reg</span> <code class="varname">clk_reg</code>;
|
|
15
15
|
<span class="type">wire</span> <code class="varname">clk_wire</code>;
|