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.
Files changed (126) hide show
  1. data/LICENSE +8 -6
  2. data/Rakefile +4 -4
  3. data/doc/common.css +6 -9
  4. data/doc/common.inc +3 -3
  5. data/doc/common.tpl +14 -6
  6. data/doc/history.html +152 -44
  7. data/doc/history.inc +55 -3
  8. data/doc/history.yaml +62 -2
  9. data/doc/intro.inc +20 -16
  10. data/doc/manual.doc +23 -9
  11. data/doc/manual.html +232 -200
  12. data/doc/memo.doc +7 -6
  13. data/doc/memo.html +28 -17
  14. data/doc/readme.doc +1 -1
  15. data/doc/readme.html +51 -35
  16. data/doc/rss.xml +96 -70
  17. data/ext/Rakefile +24 -11
  18. data/ext/swig_vpi.h +1 -1
  19. data/ext/swig_wrap.cin +17 -42
  20. data/lib/ruby-vpi/pli.tab +1 -0
  21. data/lib/ruby-vpi/runner.rb +34 -10
  22. data/lib/ruby-vpi/vpi.rb +483 -438
  23. data/ref/c/annotated.html +1 -1
  24. data/ref/c/common_8h.html +1 -1
  25. data/ref/c/files.html +1 -1
  26. data/ref/c/functions.html +1 -1
  27. data/ref/c/functions_vars.html +1 -1
  28. data/ref/c/globals.html +1 -1
  29. data/ref/c/globals_0x63.html +1 -1
  30. data/ref/c/globals_0x65.html +1 -1
  31. data/ref/c/globals_0x66.html +1 -1
  32. data/ref/c/globals_0x6d.html +1 -1
  33. data/ref/c/globals_0x70.html +1 -1
  34. data/ref/c/globals_0x72.html +1 -1
  35. data/ref/c/globals_0x73.html +1 -1
  36. data/ref/c/globals_0x74.html +1 -1
  37. data/ref/c/globals_0x76.html +1 -1
  38. data/ref/c/globals_0x78.html +1 -1
  39. data/ref/c/globals_defs.html +1 -1
  40. data/ref/c/globals_defs_0x65.html +1 -1
  41. data/ref/c/globals_defs_0x70.html +1 -1
  42. data/ref/c/globals_defs_0x76.html +1 -1
  43. data/ref/c/globals_defs_0x78.html +1 -1
  44. data/ref/c/globals_enum.html +1 -1
  45. data/ref/c/globals_eval.html +1 -1
  46. data/ref/c/globals_func.html +1 -1
  47. data/ref/c/globals_type.html +1 -1
  48. data/ref/c/globals_vars.html +1 -1
  49. data/ref/c/index.html +1 -1
  50. data/ref/c/main_8c.html +1 -1
  51. data/ref/c/main_8h.html +1 -1
  52. data/ref/c/relay_8c.html +1 -1
  53. data/ref/c/relay_8h.html +1 -1
  54. data/ref/c/structt__cb__data.html +1 -1
  55. data/ref/c/structt__vpi__delay.html +1 -1
  56. data/ref/c/structt__vpi__error__info.html +1 -1
  57. data/ref/c/structt__vpi__strengthval.html +1 -1
  58. data/ref/c/structt__vpi__systf__data.html +1 -1
  59. data/ref/c/structt__vpi__time.html +1 -1
  60. data/ref/c/structt__vpi__value.html +1 -1
  61. data/ref/c/structt__vpi__vecval.html +1 -1
  62. data/ref/c/structt__vpi__vlog__info.html +1 -1
  63. data/ref/c/verilog_8h.html +1 -1
  64. data/ref/c/vlog_8c.html +1 -1
  65. data/ref/c/vlog_8h.html +1 -1
  66. data/ref/c/vpi__user_8h.html +1 -1
  67. data/ref/ruby/classes/RDoc.html +5 -5
  68. data/ref/ruby/classes/RDoc.src/{M000058.html → M000061.html} +0 -0
  69. data/ref/ruby/classes/String.html +24 -24
  70. data/ref/ruby/classes/String.src/M000022.html +23 -5
  71. data/ref/ruby/classes/String.src/M000023.html +28 -5
  72. data/ref/ruby/classes/String.src/M000024.html +5 -23
  73. data/ref/ruby/classes/String.src/M000025.html +5 -28
  74. data/ref/ruby/classes/Vpi/Handle.html +94 -49
  75. data/ref/ruby/classes/Vpi/Handle.src/M000035.html +4 -4
  76. data/ref/ruby/classes/Vpi/Handle.src/M000036.html +4 -4
  77. data/ref/ruby/classes/Vpi/Handle.src/M000037.html +4 -4
  78. data/ref/ruby/classes/Vpi/Handle.src/M000038.html +4 -4
  79. data/ref/ruby/classes/Vpi/Handle.src/M000039.html +4 -4
  80. data/ref/ruby/classes/Vpi/Handle.src/M000040.html +4 -4
  81. data/ref/ruby/classes/Vpi/Handle.src/M000041.html +4 -4
  82. data/ref/ruby/classes/Vpi/Handle.src/M000042.html +4 -4
  83. data/ref/ruby/classes/Vpi/Handle.src/M000043.html +7 -7
  84. data/ref/ruby/classes/Vpi/Handle.src/M000044.html +7 -7
  85. data/ref/ruby/classes/Vpi/Handle.src/M000045.html +8 -8
  86. data/ref/ruby/classes/Vpi/Handle.src/M000046.html +36 -30
  87. data/ref/ruby/classes/Vpi/Handle.src/M000047.html +72 -67
  88. data/ref/ruby/classes/Vpi/Handle.src/M000048.html +6 -17
  89. data/ref/ruby/classes/Vpi/Handle.src/M000049.html +19 -0
  90. data/ref/ruby/classes/Vpi/Handle.src/M000050.html +5 -5
  91. data/ref/ruby/classes/Vpi/Handle.src/M000051.html +16 -10
  92. data/ref/ruby/classes/Vpi/Handle.src/M000053.html +5 -18
  93. data/ref/ruby/classes/Vpi/Handle.src/M000054.html +11 -76
  94. data/ref/ruby/classes/Vpi/Handle.src/M000056.html +31 -0
  95. data/ref/ruby/classes/Vpi/Handle.src/M000057.html +40 -0
  96. data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
  97. data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000055.html → M000058.html} +4 -4
  98. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +19 -0
  99. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +4 -4
  100. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +4 -4
  101. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +4 -4
  102. data/ref/ruby/classes/Vpi.html +0 -7
  103. data/ref/ruby/classes/Vpi.src/M000029.html +14 -14
  104. data/ref/ruby/classes/Vpi.src/M000030.html +25 -24
  105. data/ref/ruby/classes/Vpi.src/M000031.html +6 -6
  106. data/ref/ruby/created.rid +1 -1
  107. data/ref/ruby/files/bin/convert_rb.html +1 -1
  108. data/ref/ruby/files/bin/generate_rb.html +1 -1
  109. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  110. data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
  111. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  112. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  113. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  114. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  115. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +1 -1
  116. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  117. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
  118. data/ref/ruby/files/lib/ruby-vpi/util_rb.html +1 -1
  119. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
  120. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +8 -1
  121. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  122. data/ref/ruby/fr_method_index.html +19 -16
  123. data/samp/register_file/register_file.v +1 -1
  124. data/samp/register_file/register_file_spec.rb +9 -5
  125. metadata +42 -38
  126. 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 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.
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 / NC-Verilog":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.
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 / NC-Verilog":http://www.cadence.com/products/functional_ver/nc-verilog/ (ncsim) simulator is now supported.
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 / NC-Verilog":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.
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 / NC-Verilog":http://www.cadence.com/products/functional_ver/nc-verilog/ (ncsim) simulator is now supported.
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
- <a type="application/rss+xml" href="<%= RSS_URL %>"><img src="images/feed-icon-28x28.png" alt="RSS feed for release notifications" style="float: right"/></a>
14
-
15
- * "What's new":history.html
16
- - a history of all release notes.
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. _Start here!_
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.installation and used forever!
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-test helps you accomodate design changes with _minimal_ effort.
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 / NC-Verilog":http://www.cadence.com/products/functional_ver/nc-verilog/
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.icarus.com/eda/Verilog/
103
- - version 0.8 is _mostly_ acceptable -- you *will not* be able to "access child handles through method calls":manual.html#background.org.vpi.util. The reason for this limitation is explained "in the user manual":manual.html#problems.ivl.vpi_handle_by_name.absolute-paths.
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
- * "Ruby":http://www.ruby-lang.org
112
- - 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.rubygarden.org/faq/section/show/3.
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 File.read('../LICENSE') %>
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 /usr/lib/ruby/gems/1.8/gems/ruby-vpi*
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
- <% note "Tuning for maximum performance" do %>
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://www.rubycentral.com/book/tut_methods.html#UA instead of defining a special datatype, such as @va_list@, for them.
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 "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.
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/tutorials/index.html for more information.
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 %>