ruby-vpi 11.0.0 → 11.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>;
|