ruby-vpi 17.0.0 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/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 %>
|