ruby-vpi 17.0.0 → 18.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +8 -6
- data/Rakefile +4 -4
- data/doc/common.css +6 -9
- data/doc/common.inc +3 -3
- data/doc/common.tpl +14 -6
- data/doc/history.html +152 -44
- data/doc/history.inc +55 -3
- data/doc/history.yaml +62 -2
- data/doc/intro.inc +20 -16
- data/doc/manual.doc +23 -9
- data/doc/manual.html +232 -200
- data/doc/memo.doc +7 -6
- data/doc/memo.html +28 -17
- data/doc/readme.doc +1 -1
- data/doc/readme.html +51 -35
- data/doc/rss.xml +96 -70
- data/ext/Rakefile +24 -11
- data/ext/swig_vpi.h +1 -1
- data/ext/swig_wrap.cin +17 -42
- data/lib/ruby-vpi/pli.tab +1 -0
- data/lib/ruby-vpi/runner.rb +34 -10
- data/lib/ruby-vpi/vpi.rb +483 -438
- data/ref/c/annotated.html +1 -1
- data/ref/c/common_8h.html +1 -1
- data/ref/c/files.html +1 -1
- data/ref/c/functions.html +1 -1
- data/ref/c/functions_vars.html +1 -1
- data/ref/c/globals.html +1 -1
- data/ref/c/globals_0x63.html +1 -1
- data/ref/c/globals_0x65.html +1 -1
- data/ref/c/globals_0x66.html +1 -1
- data/ref/c/globals_0x6d.html +1 -1
- data/ref/c/globals_0x70.html +1 -1
- data/ref/c/globals_0x72.html +1 -1
- data/ref/c/globals_0x73.html +1 -1
- data/ref/c/globals_0x74.html +1 -1
- data/ref/c/globals_0x76.html +1 -1
- data/ref/c/globals_0x78.html +1 -1
- data/ref/c/globals_defs.html +1 -1
- data/ref/c/globals_defs_0x65.html +1 -1
- data/ref/c/globals_defs_0x70.html +1 -1
- data/ref/c/globals_defs_0x76.html +1 -1
- data/ref/c/globals_defs_0x78.html +1 -1
- data/ref/c/globals_enum.html +1 -1
- data/ref/c/globals_eval.html +1 -1
- data/ref/c/globals_func.html +1 -1
- data/ref/c/globals_type.html +1 -1
- data/ref/c/globals_vars.html +1 -1
- data/ref/c/index.html +1 -1
- data/ref/c/main_8c.html +1 -1
- data/ref/c/main_8h.html +1 -1
- data/ref/c/relay_8c.html +1 -1
- data/ref/c/relay_8h.html +1 -1
- data/ref/c/structt__cb__data.html +1 -1
- data/ref/c/structt__vpi__delay.html +1 -1
- data/ref/c/structt__vpi__error__info.html +1 -1
- data/ref/c/structt__vpi__strengthval.html +1 -1
- data/ref/c/structt__vpi__systf__data.html +1 -1
- data/ref/c/structt__vpi__time.html +1 -1
- data/ref/c/structt__vpi__value.html +1 -1
- data/ref/c/structt__vpi__vecval.html +1 -1
- data/ref/c/structt__vpi__vlog__info.html +1 -1
- data/ref/c/verilog_8h.html +1 -1
- data/ref/c/vlog_8c.html +1 -1
- data/ref/c/vlog_8h.html +1 -1
- data/ref/c/vpi__user_8h.html +1 -1
- data/ref/ruby/classes/RDoc.html +5 -5
- data/ref/ruby/classes/RDoc.src/{M000058.html → M000061.html} +0 -0
- data/ref/ruby/classes/String.html +24 -24
- data/ref/ruby/classes/String.src/M000022.html +23 -5
- data/ref/ruby/classes/String.src/M000023.html +28 -5
- data/ref/ruby/classes/String.src/M000024.html +5 -23
- data/ref/ruby/classes/String.src/M000025.html +5 -28
- data/ref/ruby/classes/Vpi/Handle.html +94 -49
- data/ref/ruby/classes/Vpi/Handle.src/M000035.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000036.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000037.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000038.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000039.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000040.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000041.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000042.html +4 -4
- data/ref/ruby/classes/Vpi/Handle.src/M000043.html +7 -7
- data/ref/ruby/classes/Vpi/Handle.src/M000044.html +7 -7
- data/ref/ruby/classes/Vpi/Handle.src/M000045.html +8 -8
- data/ref/ruby/classes/Vpi/Handle.src/M000046.html +36 -30
- data/ref/ruby/classes/Vpi/Handle.src/M000047.html +72 -67
- data/ref/ruby/classes/Vpi/Handle.src/M000048.html +6 -17
- data/ref/ruby/classes/Vpi/Handle.src/M000049.html +19 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000050.html +5 -5
- data/ref/ruby/classes/Vpi/Handle.src/M000051.html +16 -10
- data/ref/ruby/classes/Vpi/Handle.src/M000053.html +5 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000054.html +11 -76
- data/ref/ruby/classes/Vpi/Handle.src/M000056.html +31 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000057.html +40 -0
- data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
- data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000055.html → M000058.html} +4 -4
- data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +19 -0
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +4 -4
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +4 -4
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +4 -4
- data/ref/ruby/classes/Vpi.html +0 -7
- data/ref/ruby/classes/Vpi.src/M000029.html +14 -14
- data/ref/ruby/classes/Vpi.src/M000030.html +25 -24
- data/ref/ruby/classes/Vpi.src/M000031.html +6 -6
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/convert_rb.html +1 -1
- data/ref/ruby/files/bin/generate_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/util_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +8 -1
- data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
- data/ref/ruby/fr_method_index.html +19 -16
- data/samp/register_file/register_file.v +1 -1
- data/samp/register_file/register_file_spec.rb +9 -5
- metadata +42 -38
- data/ref/ruby/classes/Vpi/S_vpi_time.src/M000056.html +0 -19
data/doc/history.inc
CHANGED
@@ -1,4 +1,56 @@
|
|
1
|
-
<% section "Version
|
1
|
+
<% section "Version 18.0.0 (2007-07-31)", "18.0.0" do %>This release restores support for Synopsys VCS and Cadence NC-Sim, improves portability and performance, and enhances the VPI abstraction layer.
|
2
|
+
|
3
|
+
|
4
|
+
h2. Thanks
|
5
|
+
|
6
|
+
* Calvin Wong discovered "how to bypass the following error":http://rubyforge.org/forum/message.php?msg_id=25691 emitted by Synopsys VCS when loading the Ruby-VPI shared object file.
|
7
|
+
|
8
|
+
<pre>
|
9
|
+
Could not open library specified in -load option obj/vcs
|
10
|
+
obj/vcs: undefined symbol: vpi_put_data
|
11
|
+
</pre>
|
12
|
+
|
13
|
+
|
14
|
+
h2. Caution
|
15
|
+
|
16
|
+
* "SWIG":http://www.swig.org/ is now required in order to compile and install Ruby-VPI.
|
17
|
+
|
18
|
+
* @Vpi::Handle.put_value@ no longer checks whether the value written matches the value read back after writing because that only works when there is no VPI delay associated with the write.
|
19
|
+
|
20
|
+
* When @Vpi::Handle.put_value@ is used to write a value to a wire (VpiNet), it now _forces_ the value. This is done to ensure portability:
|
21
|
+
|
22
|
+
Synopsys VCS and Cadence NC-Sim forget the value written to a wire during the next simulation time step, whereas Mentor Modelsim and GPL Cver remember the value (thereby treating wires as registers).
|
23
|
+
|
24
|
+
Note that you have to release a forced value (using @Vpi::Handle.release_value@) on a wire after writing to the wire if you want the design under test have the ability to update the value of the wire later on:
|
25
|
+
|
26
|
+
<code>
|
27
|
+
your_wire.intVal = 15
|
28
|
+
your_wire.release_value
|
29
|
+
advance_time # let the Verilog DUT modify your_wire
|
30
|
+
</code>
|
31
|
+
|
32
|
+
In addition, you can check if a wire has a forced value using the @Vpi::Handle.value_forced?@ method.
|
33
|
+
|
34
|
+
* If the format is not specified, @Vpi::Handle.get_value@ now assumes that you want to read the value in VpiIntVal format (because this is the most common case).
|
35
|
+
|
36
|
+
* The definition of "Derivatives" has been reworded for clarity in the "project license":readme.html#intro.license.
|
37
|
+
|
38
|
+
|
39
|
+
h2. Repairs
|
40
|
+
|
41
|
+
* Synopsys VCS and Cadence NC-Sim simulators now correctly load Ruby-VPI. Also, the 64-bit versions of these simulators are now supported.
|
42
|
+
|
43
|
+
|
44
|
+
h2. Improvements
|
45
|
+
|
46
|
+
* Added "force_value", "release_value", and "value_forced?" methods to the @Vpi::Handle@ class.
|
47
|
+
|
48
|
+
* @Vpi::Handle.put_value@ now tries to automatically detect the format of the value to be written. As a result, you can now write @your_handle.put_value 35@ in lieu of writing @your_handle.intVal = 35@.
|
49
|
+
|
50
|
+
* @Vpi::Handle.inspect@ now shows the hexStrVal of the handle (because it is a common case to want to see a handle's logic value along with its other information).
|
51
|
+
|
52
|
+
* Added method caching (memoizing) for VPI property accesses on handles.
|
53
|
+
<% end %><% section "Version 17.0.0 (2007-07-22)", "17.0.0" do %>This release makes the Ruby-VPI testing framework more lightweight by reducing the number of files and parameters involved.
|
2
54
|
|
3
55
|
|
4
56
|
h2. Caution
|
@@ -68,7 +120,7 @@ h2. Thanks
|
|
68
120
|
h2. Repairs
|
69
121
|
|
70
122
|
* Shared-object files have a file extension of <tt>.so</tt> in Linux and <tt>.bundle</tt> on Mac OS X. Previously, only the Linux file extension was supported.
|
71
|
-
<% end %><% section "Version 16.0.0 (2007-05-02)", "16.0.0" do %>This release adds support for the "Cadence NC-Sim
|
123
|
+
<% end %><% section "Version 16.0.0 (2007-05-02)", "16.0.0" do %>This release adds support for the "Cadence NC-Sim":http://www.cadence.com/products/functional_ver/nc-verilog/ simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license.
|
72
124
|
|
73
125
|
|
74
126
|
h2. Caution
|
@@ -90,7 +142,7 @@ h2. Caution
|
|
90
142
|
|
91
143
|
h2. New features
|
92
144
|
|
93
|
-
* The "Cadence NC-Sim
|
145
|
+
* The "Cadence NC-Sim":http://www.cadence.com/products/functional_ver/nc-verilog/ (ncsim) simulator is now supported.
|
94
146
|
|
95
147
|
* VPI structures (whose names begin with "S_") now allow initialization of their members through their constructor, in the style of Ruby on Rails. For example, the expression @time = S_vpi_time.new :type => VpiSuppressTime@ is equivalent to: <code>
|
96
148
|
time = S_vpi_time.new
|
data/doc/history.yaml
CHANGED
@@ -1,3 +1,63 @@
|
|
1
|
+
-
|
2
|
+
Version: 18.0.0
|
3
|
+
|
4
|
+
Date: 2007-07-31
|
5
|
+
|
6
|
+
Record: |
|
7
|
+
This release restores support for Synopsys VCS and Cadence NC-Sim, improves portability and performance, and enhances the VPI abstraction layer.
|
8
|
+
|
9
|
+
|
10
|
+
h2. Thanks
|
11
|
+
|
12
|
+
* Calvin Wong discovered "how to bypass the following error":http://rubyforge.org/forum/message.php?msg_id=25691 emitted by Synopsys VCS when loading the Ruby-VPI shared object file.
|
13
|
+
|
14
|
+
<pre>
|
15
|
+
Could not open library specified in -load option obj/vcs
|
16
|
+
obj/vcs: undefined symbol: vpi_put_data
|
17
|
+
</pre>
|
18
|
+
|
19
|
+
|
20
|
+
h2. Caution
|
21
|
+
|
22
|
+
* "SWIG":http://www.swig.org/ is now required in order to compile and install Ruby-VPI.
|
23
|
+
|
24
|
+
* @Vpi::Handle.put_value@ no longer checks whether the value written matches the value read back after writing because that only works when there is no VPI delay associated with the write.
|
25
|
+
|
26
|
+
* When @Vpi::Handle.put_value@ is used to write a value to a wire (VpiNet), it now _forces_ the value. This is done to ensure portability:
|
27
|
+
|
28
|
+
Synopsys VCS and Cadence NC-Sim forget the value written to a wire during the next simulation time step, whereas Mentor Modelsim and GPL Cver remember the value (thereby treating wires as registers).
|
29
|
+
|
30
|
+
Note that you have to release a forced value (using @Vpi::Handle.release_value@) on a wire after writing to the wire if you want the design under test have the ability to update the value of the wire later on:
|
31
|
+
|
32
|
+
<code>
|
33
|
+
your_wire.intVal = 15
|
34
|
+
your_wire.release_value
|
35
|
+
advance_time # let the Verilog DUT modify your_wire
|
36
|
+
</code>
|
37
|
+
|
38
|
+
In addition, you can check if a wire has a forced value using the @Vpi::Handle.value_forced?@ method.
|
39
|
+
|
40
|
+
* If the format is not specified, @Vpi::Handle.get_value@ now assumes that you want to read the value in VpiIntVal format (because this is the most common case).
|
41
|
+
|
42
|
+
* The definition of "Derivatives" has been reworded for clarity in the "project license":readme.html#intro.license.
|
43
|
+
|
44
|
+
|
45
|
+
h2. Repairs
|
46
|
+
|
47
|
+
* Synopsys VCS and Cadence NC-Sim simulators now correctly load Ruby-VPI. Also, the 64-bit versions of these simulators are now supported.
|
48
|
+
|
49
|
+
|
50
|
+
h2. Improvements
|
51
|
+
|
52
|
+
* Added "force_value", "release_value", and "value_forced?" methods to the @Vpi::Handle@ class.
|
53
|
+
|
54
|
+
* @Vpi::Handle.put_value@ now tries to automatically detect the format of the value to be written. As a result, you can now write @your_handle.put_value 35@ in lieu of writing @your_handle.intVal = 35@.
|
55
|
+
|
56
|
+
* @Vpi::Handle.inspect@ now shows the hexStrVal of the handle (because it is a common case to want to see a handle's logic value along with its other information).
|
57
|
+
|
58
|
+
* Added method caching (memoizing) for VPI property accesses on handles.
|
59
|
+
|
60
|
+
|
1
61
|
-
|
2
62
|
Version: 17.0.0
|
3
63
|
|
@@ -90,7 +150,7 @@
|
|
90
150
|
Date: 2007-05-02
|
91
151
|
|
92
152
|
Record: |
|
93
|
-
This release adds support for the "Cadence NC-Sim
|
153
|
+
This release adds support for the "Cadence NC-Sim":http://www.cadence.com/products/functional_ver/nc-verilog/ simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license.
|
94
154
|
|
95
155
|
|
96
156
|
h2. Caution
|
@@ -112,7 +172,7 @@
|
|
112
172
|
|
113
173
|
h2. New features
|
114
174
|
|
115
|
-
* The "Cadence NC-Sim
|
175
|
+
* The "Cadence NC-Sim":http://www.cadence.com/products/functional_ver/nc-verilog/ (ncsim) simulator is now supported.
|
116
176
|
|
117
177
|
* VPI structures (whose names begin with "S_") now allow initialization of their members through their constructor, in the style of Ruby on Rails. For example, the expression @time = S_vpi_time.new :type => VpiSuppressTime@ is equivalent to: <code>
|
118
178
|
time = S_vpi_time.new
|
data/doc/intro.inc
CHANGED
@@ -10,23 +10,25 @@ Ruby-VPI is "open source software":http://en.wikipedia.org/wiki/Open_source_soft
|
|
10
10
|
|
11
11
|
<% section "Resources", "resources" do %>
|
12
12
|
<% paragraph "Records" do %>
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
- a
|
13
|
+
* "What's new":history.html#<%= version.to_html_anchor %>
|
14
|
+
- release notes for version <%= version %>.
|
15
|
+
** "History":history.html
|
16
|
+
- a record of all release notes.
|
17
|
+
** <a type="application/rss+xml" href="<%= RSS_URL %>"><img src="images/feed-icon-28x28.png" alt="RSS feed for release announcements" style="float: right"/></a> "RSS feed":<%= RSS_URL %>
|
18
|
+
- keep track of new releases at your leisure.
|
17
19
|
* "Plans":memo.html
|
18
20
|
- pending tasks for future releases.
|
19
21
|
* "Talks":http://ruby-vpi.rubyforge.org/talks/
|
20
22
|
- materials from presentations and seminars.
|
21
23
|
* "Papers":http://ruby-vpi.rubyforge.org/papers/
|
22
24
|
- research publications.
|
23
|
-
* "Motivation":http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2
|
24
|
-
- why does Ruby-VPI exist?
|
25
25
|
<% end %>
|
26
26
|
|
27
27
|
<% paragraph "Documentation" do %>
|
28
|
+
* "Motivation":http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2
|
29
|
+
- why was Ruby-VPI developed?
|
28
30
|
* "User manual":manual.html
|
29
|
-
- complete documentation for users.
|
31
|
+
- complete documentation for users.
|
30
32
|
** "Tutorial":manual.html#usage.tutorial
|
31
33
|
- learn how to use Ruby-VPI quickly.
|
32
34
|
* "Reference":../ref/
|
@@ -56,7 +58,7 @@ Ruby-VPI is "open source software":http://en.wikipedia.org/wiki/Open_source_soft
|
|
56
58
|
<% paragraph "Portable" do %>
|
57
59
|
* Supports the _entire_ "IEEE 1364-2005 Verilog VPI":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945 standard.
|
58
60
|
* Works with all <%= xref "intro.reqs", "major Verilog simulators" %> available today.
|
59
|
-
* Compiled _just once_ during "installation":manual.html#setup.
|
61
|
+
* Compiled _just once_ during "installation":manual.html#setup.inst and used forever!
|
60
62
|
<% end %>
|
61
63
|
|
62
64
|
<% paragraph "Agile" do %>
|
@@ -67,7 +69,7 @@ Ruby-VPI is "open source software":http://en.wikipedia.org/wiki/Open_source_soft
|
|
67
69
|
|
68
70
|
* Eliminates unneccesary work:
|
69
71
|
** "Specifications":manual.html#usage.tutorial.specification are readable, portable, and _executable_.
|
70
|
-
** The "automated test generator":manual.html#usage.tools.generate
|
72
|
+
** The "automated test generator":manual.html#usage.tools.generate helps you accomodate design changes with _minimal_ effort.
|
71
73
|
** There is absolutely _no compiling_!
|
72
74
|
<% end %>
|
73
75
|
|
@@ -95,12 +97,12 @@ Ruby-VPI is "open source software":http://en.wikipedia.org/wiki/Open_source_soft
|
|
95
97
|
- any version that supports the <tt>-load</tt> option is acceptable.
|
96
98
|
* "Mentor Modelsim":http://www.model.com
|
97
99
|
- any version that supports the <tt>-pli</tt> option is acceptable.
|
98
|
-
* "Cadence NC-Sim
|
99
|
-
- any version that supports the <tt>+loadvpi</tt> option is acceptable.
|
100
|
+
* "Cadence NC-Sim":http://www.cadence.com/products/functional_ver/nc-verilog/
|
101
|
+
- any version that supports the <tt>+loadvpi</tt> option is _mostly_ acceptable because you *will not* be able to "force values onto wires":manual.html#problem.ncsim.vpiForceFlag.
|
100
102
|
* "GPL Cver":http://www.pragmatic-c.com/gpl-cver/
|
101
103
|
- version 2.11a or newer is acceptable.
|
102
|
-
* "Icarus Verilog":http://www.
|
103
|
-
- version 0.8 is _mostly_ acceptable
|
104
|
+
* "Icarus Verilog":http://www.geda.seul.org/tools/icarus/index.html
|
105
|
+
- version 0.8 is _mostly_ acceptable because you *will not* be able to "access child handles through method calls":manual.html#Accessing_a_handle_s_relatives. The reason for this limitation is explained "in the user manual":manual.html#problems.ivl.vpi_handle_by_name.absolute-paths.
|
104
106
|
<% end %>
|
105
107
|
|
106
108
|
<% paragraph "Compilers" do %>
|
@@ -108,8 +110,10 @@ Ruby-VPI is "open source software":http://en.wikipedia.org/wiki/Open_source_soft
|
|
108
110
|
- any flavor should be acceptable.
|
109
111
|
* C compiler
|
110
112
|
- the "GNU Compiler Collection (GCC)":http://www.gnu.org/software/gcc/ is preferred, but any C compiler should be acceptable.
|
111
|
-
* "
|
112
|
-
- version 1.
|
113
|
+
* "SWIG":http://www.swig.org/download.html
|
114
|
+
- version 1.3.29 or newer is necessary.
|
115
|
+
* "Ruby":http://www.ruby-lang.org/en/downloads/
|
116
|
+
- version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following "these instructions":http://www.ruby-lang.org/en/downloads/.
|
113
117
|
<% end %>
|
114
118
|
|
115
119
|
<% paragraph "Libraries" do %>
|
@@ -170,7 +174,7 @@ Ruby-VPI is "open source software":http://en.wikipedia.org/wiki/Open_source_soft
|
|
170
174
|
|
171
175
|
|
172
176
|
<% section "License", "intro.license" do %>
|
173
|
-
<%=h
|
177
|
+
<%= h(File.read('../LICENSE')).gsub(/^Copyright.*$/, '\&<br/>') %>
|
174
178
|
<% end %>
|
175
179
|
|
176
180
|
|
data/doc/manual.doc
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
<% paragraph "Legal notice" do %>
|
20
20
|
This manual is distributed under <%= xref "intro.license", "the same license as Ruby-VPI" %>.
|
21
21
|
|
22
|
-
The admonition graphics used in this manual are Copyright 2005, 2006 "Tango Desktop Project":http://tango.freedesktop.org and are distributed under "these terms":./images/tango/LICENSE.
|
22
|
+
The admonition graphics used in this manual are Copyright 2005, 2006 "Tango Desktop Project":http://tango.freedesktop.org/Tango_Desktop_Project and are distributed under "these terms":./images/tango/LICENSE.
|
23
23
|
<% end %>
|
24
24
|
<% end %>
|
25
25
|
|
@@ -72,11 +72,11 @@
|
|
72
72
|
$ gem env gemdir
|
73
73
|
/usr/lib/ruby/gems/1.8
|
74
74
|
|
75
|
-
$ ls -d
|
75
|
+
$ ls -d `gem env gemdir`/gems/ruby-vpi*
|
76
76
|
/usr/lib/ruby/gems/1.8/gems/ruby-vpi-7.0.0/
|
77
77
|
</pre>
|
78
78
|
|
79
|
-
<%
|
79
|
+
<% tip "Tuning for maximum performance" do %>
|
80
80
|
You can tune your installation of Ruby-VPI for maximum performance by adding your C compiler's optimization flag to the @CFLAGS@ environment variable _before_ you run the <pre>gem install -y ruby-vpi</pre> command. For example, if your C compiler is GCC, then you can set @CFLAGS@ to <tt>-O9</tt> for maximum optimization.
|
81
81
|
<% end %>
|
82
82
|
|
@@ -170,7 +170,7 @@
|
|
170
170
|
<% section "@vprintf@ is @printf@" do %>
|
171
171
|
The @vpi_vprintf@ and @vpi_mcd_vprintf@ VPI functions are aliased to @vpi_printf@ and @vpi_mcd_printf@ respectively because:
|
172
172
|
|
173
|
-
* Ruby represents "variable argument lists as arrays":http://
|
173
|
+
* Ruby represents "variable argument lists as arrays":http://phrogz.net/ProgrammingRuby/tut_methods.html#variablelengthargumentlists instead of defining a special datatype, such as @va_list@, for them.
|
174
174
|
|
175
175
|
* Some C compilers have trouble with pointers to the @va_list@ type. For these compilers, the third line of source code shown below causes a "type mismatch" error.
|
176
176
|
|
@@ -479,7 +479,7 @@
|
|
479
479
|
<% end %>
|
480
480
|
|
481
481
|
<% section "Sample tests", "usage.examples" do %>
|
482
|
-
The <tt>samp</tt> directory contains several sample tests which illustrate how Ruby-VPI can be used. Each sample has an associated <tt>Rakefile</tt> which simplifies the process of running it. Therefore, simply navigate into an example directory and run the <pre>rake</pre> command to get started.
|
482
|
+
The <tt>samp</tt> directory ("browse it online":<%= codeURL %>/samp/) contains several sample tests which illustrate how Ruby-VPI can be used. Each sample has an associated <tt>Rakefile</tt> which simplifies the process of running it. Therefore, simply navigate into an example directory and run the <pre>rake</pre> command to get started.
|
483
483
|
<% end %>
|
484
484
|
|
485
485
|
<% section "Tutorial", "usage.tutorial" do %>
|
@@ -581,7 +581,6 @@
|
|
581
581
|
Before we continue,
|
582
582
|
# Replace the contents of the file named <tt>RSpec/counter_spec.rb</tt> with the source code shown in <%= xref "fig:RSpec/counter_spec.rb" %>.
|
583
583
|
# Replace the contents of the file named <tt>xUnit/counter_spec.rb</tt> with the source code shown in <%= xref "fig:xUnit/counter_spec.rb" %>.
|
584
|
-
# Replace the contents of the files named <tt>RSpec/counter_design.rb</tt> and <tt>xUnit/counter_design.rb</tt> with the following code. <code><%= File.read '../samp/counter/RSpec/counter_design.rb' %></code>
|
585
584
|
<% end %>
|
586
585
|
|
587
586
|
|
@@ -711,6 +710,8 @@
|
|
711
710
|
This chapter presents known problems and possible solutions.
|
712
711
|
|
713
712
|
<% section "Icarus Verilog", "problem.ivl" do %>
|
713
|
+
The following sections describe problems that occur when Icarus Verilog is used with Ruby-VPI.
|
714
|
+
|
714
715
|
<% section "Give full paths to Verilog objects", "problems.ivl.vpi_handle_by_name.absolute-paths" do %>
|
715
716
|
In version 0.8 and snapshot 20061009 of Icarus Verilog, the @vpi_handle_by_name@ function requires an _absolute_ path (including the name of the bench which instantiates the design) to a Verilog object. In addition, @vpi_handle_by_name@ always returns @nil@ when its second parameter is specified.
|
716
717
|
|
@@ -755,10 +756,23 @@
|
|
755
756
|
</code>
|
756
757
|
<% end %>
|
757
758
|
<% end %>
|
759
|
+
|
760
|
+
<% section "Vpi::reset", "problems.ivl.vpi_reset" do %>
|
761
|
+
In version 0.8 of Icarus Verilog, the @vpi_control(vpiReset)@ VPI function causes an assertion to fail inside the simulator. As a result, the simulation terminates and a core dump is produced.
|
762
|
+
<% end %>
|
758
763
|
<% end %>
|
759
764
|
|
760
|
-
<% section "
|
761
|
-
|
765
|
+
<% section "Cadence NC-Sim", "problem.ncsim" do %>
|
766
|
+
The following sections describe problems that occur when Cadence NC-Sim (version 05.83-s003) is used with Ruby-VPI.
|
767
|
+
|
768
|
+
<% section "Cannot force values onto handles", "problem.ncsim.vpiForceFlag" do %>
|
769
|
+
When you write to a handle's value using @vpi_put_value()@ with the @VpiForceFlag@ propagation parameter, it does not have any effect. As a result, the "register_file" sample test fails when you run it with NC-Sim.
|
770
|
+
|
771
|
+
This might be a bug in NC-Sim itself: even though I specified the "+access+rwc" command-line option for NC-Sim, I'm thinking that the force/release capability is not really enabled. However, it's more likely that there's a bug in the "register_file" sample test.
|
772
|
+
|
773
|
+
If you happen to know the solution, please tell me either on the project forums or via e-mail (see the LICENSE file for my e-mail address). Thanks.
|
774
|
+
<% end %>
|
775
|
+
|
762
776
|
<% end %>
|
763
777
|
<% end %>
|
764
778
|
|
@@ -792,7 +806,7 @@
|
|
792
806
|
<% section "RSpec", "glossary.RSpec" do %>
|
793
807
|
The <%= xref "glossary.BDD", "BDD" %> framework for Ruby.
|
794
808
|
|
795
|
-
See the "RSpec website":http://rspec.rubyforge.org and "tutorial":http://rspec.rubyforge.org/
|
809
|
+
See the "RSpec website":http://rspec.rubyforge.org and "tutorial":http://rspec.rubyforge.org/documentation/index.html for more information.
|
796
810
|
<% end %>
|
797
811
|
|
798
812
|
<% section "Test driven development", "glossary.TDD" do %>
|