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.
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 %>