ruby-vpi 12.1.0 → 13.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 (184) hide show
  1. data/bin/generate_test.rb +4 -5
  2. data/bin/generate_test_tpl/bench.rb +2 -0
  3. data/bin/generate_test_tpl/bench.v +4 -11
  4. data/bin/header_to_ruby.rb +0 -1
  5. data/doc/history.html +281 -206
  6. data/doc/history.rb +1 -1
  7. data/doc/history.yml +66 -35
  8. data/doc/manual.html +3 -3
  9. data/doc/memo.doc +2 -0
  10. data/doc/memo.html +5 -0
  11. data/doc/readme.doc +16 -8
  12. data/doc/readme.html +19 -13
  13. data/doc/rss.xml +7 -0
  14. data/ext/common.h +1 -0
  15. data/ext/{swig.c → main.c} +32 -6
  16. data/ext/{swig.h → main.h} +8 -7
  17. data/ext/relay.c +7 -83
  18. data/ext/relay.h +7 -5
  19. data/ext/swig_vpi.i +10 -3
  20. data/ext/swig_wrap.cin +4 -1
  21. data/ext/verilog.h +26 -10
  22. data/ext/vlog.c +16 -23
  23. data/ext/vlog.h +5 -19
  24. data/lib/ruby-vpi/rcov.rb +3 -3
  25. data/lib/ruby-vpi/runner.rb +5 -2
  26. data/lib/ruby-vpi/vpi.rb +1 -1
  27. data/lib/ruby-vpi.rb +57 -5
  28. data/ref/c/annotated.html +1 -7
  29. data/ref/c/common_8h.html +2 -1
  30. data/ref/c/files.html +3 -5
  31. data/ref/c/functions.html +24 -46
  32. data/ref/c/functions_vars.html +24 -46
  33. data/ref/c/globals.html +5 -210
  34. data/ref/c/globals_0x63.html +32 -48
  35. data/ref/c/globals_0x65.html +3 -9
  36. data/ref/c/globals_0x66.html +3 -19
  37. data/ref/c/globals_0x6d.html +5 -10
  38. data/ref/c/globals_0x70.html +19 -25
  39. data/ref/c/globals_0x72.html +8 -18
  40. data/ref/c/globals_0x73.html +11 -198
  41. data/ref/c/globals_0x74.html +2 -8
  42. data/ref/c/globals_0x76.html +419 -427
  43. data/ref/c/globals_0x78.html +3 -9
  44. data/ref/c/globals_defs.html +30 -35
  45. data/ref/c/globals_defs_0x65.html +2 -7
  46. data/ref/c/globals_defs_0x70.html +3 -8
  47. data/ref/c/globals_defs_0x76.html +416 -420
  48. data/ref/c/globals_defs_0x78.html +2 -7
  49. data/ref/c/globals_enum.html +1 -1
  50. data/ref/c/globals_eval.html +1 -1
  51. data/ref/c/globals_func.html +13 -173
  52. data/ref/c/globals_type.html +26 -29
  53. data/ref/c/globals_vars.html +4 -88
  54. data/ref/c/index.html +1 -1
  55. data/ref/c/{swig_8c.html → main_8c.html} +16 -14
  56. data/ref/c/{swig_8h.html → main_8h.html} +15 -14
  57. data/ref/c/relay_8c.html +25 -38
  58. data/ref/c/relay_8h.html +16 -15
  59. data/ref/c/structt__cb__data.html +6 -23
  60. data/ref/c/structt__vpi__delay.html +3 -20
  61. data/ref/c/structt__vpi__error__info.html +3 -71
  62. data/ref/c/structt__vpi__strengthval.html +3 -3
  63. data/ref/c/structt__vpi__systf__data.html +12 -46
  64. data/ref/c/structt__vpi__time.html +3 -3
  65. data/ref/c/structt__vpi__value.html +3 -113
  66. data/ref/c/structt__vpi__vecval.html +3 -3
  67. data/ref/c/structt__vpi__vlog__info.html +3 -54
  68. data/ref/c/verilog_8h.html +69 -3
  69. data/ref/c/vlog_8c.html +16 -61
  70. data/ref/c/vlog_8h.html +14 -57
  71. data/ref/c/vpi__user_8h.html +16 -16
  72. data/ref/ruby/classes/ERB.html +5 -5
  73. data/ref/ruby/classes/ERB.src/{M000032.html → M000026.html} +0 -0
  74. data/ref/ruby/classes/FileUtils.html +10 -10
  75. data/ref/ruby/classes/FileUtils.src/{M000034.html → M000027.html} +0 -0
  76. data/ref/ruby/classes/FileUtils.src/{M000035.html → M000028.html} +0 -0
  77. data/ref/ruby/classes/Float.html +5 -5
  78. data/ref/ruby/classes/Float.src/{M000027.html → M000022.html} +0 -0
  79. data/ref/ruby/classes/Integer.html +68 -68
  80. data/ref/ruby/classes/Integer.src/M000008.html +25 -0
  81. data/ref/ruby/classes/Integer.src/M000009.html +18 -0
  82. data/ref/ruby/classes/Integer.src/{M000014.html → M000010.html} +0 -0
  83. data/ref/ruby/classes/Integer.src/{M000015.html → M000011.html} +0 -0
  84. data/ref/ruby/classes/Integer.src/M000012.html +5 -12
  85. data/ref/ruby/classes/Integer.src/M000013.html +5 -5
  86. data/ref/ruby/classes/Integer.src/M000016.html +9 -5
  87. data/ref/ruby/classes/Integer.src/M000017.html +9 -5
  88. data/ref/ruby/classes/Integer.src/{M000022.html → M000018.html} +0 -0
  89. data/ref/ruby/classes/Integer.src/{M000023.html → M000019.html} +0 -0
  90. data/ref/ruby/classes/Integer.src/M000020.html +12 -9
  91. data/ref/ruby/classes/Integer.src/M000021.html +17 -9
  92. data/ref/ruby/classes/RDoc.html +5 -5
  93. data/ref/ruby/classes/RDoc.src/{M000050.html → M000041.html} +0 -0
  94. data/ref/ruby/classes/RubyVpi.html +29 -24
  95. data/ref/ruby/classes/RubyVpi.src/M000029.html +142 -0
  96. data/ref/ruby/classes/String.html +15 -15
  97. data/ref/ruby/classes/String.src/{M000029.html → M000023.html} +0 -0
  98. data/ref/ruby/classes/String.src/{M000030.html → M000024.html} +0 -0
  99. data/ref/ruby/classes/String.src/{M000031.html → M000025.html} +0 -0
  100. data/ref/ruby/classes/VerilogParser/Module/Parameter.html +5 -5
  101. data/ref/ruby/classes/VerilogParser/Module/Parameter.src/{M000011.html → M000007.html} +0 -0
  102. data/ref/ruby/classes/VerilogParser/Module/Port.html +20 -20
  103. data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000007.html → M000003.html} +0 -0
  104. data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000008.html → M000004.html} +0 -0
  105. data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000009.html → M000005.html} +0 -0
  106. data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000010.html → M000006.html} +0 -0
  107. data/ref/ruby/classes/VerilogParser/Module.html +5 -5
  108. data/ref/ruby/classes/VerilogParser/Module.src/{M000006.html → M000002.html} +0 -0
  109. data/ref/ruby/classes/VerilogParser.html +5 -5
  110. data/ref/ruby/classes/VerilogParser.src/{M000005.html → M000001.html} +0 -0
  111. data/ref/ruby/classes/Vpi/Handle.html +56 -62
  112. data/ref/ruby/classes/Vpi/Handle.src/M000030.html +18 -0
  113. data/ref/ruby/classes/Vpi/Handle.src/{M000039.html → M000031.html} +0 -0
  114. data/ref/ruby/classes/Vpi/Handle.src/M000032.html +18 -0
  115. data/ref/ruby/classes/Vpi/Handle.src/{M000041.html → M000033.html} +0 -0
  116. data/ref/ruby/classes/Vpi/Handle.src/{M000042.html → M000034.html} +0 -0
  117. data/ref/ruby/classes/Vpi/Handle.src/{M000043.html → M000035.html} +0 -0
  118. data/ref/ruby/classes/Vpi/Handle.src/{M000044.html → M000036.html} +0 -0
  119. data/ref/ruby/classes/Vpi/Handle.src/{M000045.html → M000037.html} +0 -0
  120. data/ref/ruby/classes/Vpi/Handle.src/M000038.html +11 -5
  121. data/ref/ruby/classes/Vpi/Handle.src/M000040.html +55 -5
  122. data/ref/ruby/created.rid +1 -1
  123. data/ref/ruby/files/bin/generate_test_rb.html +1 -49
  124. data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
  125. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  126. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -48
  127. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
  128. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  129. data/ref/ruby/fr_class_index.html +0 -5
  130. data/ref/ruby/fr_method_index.html +41 -50
  131. data/samp/counter/counter_rspec_bench.rb +2 -0
  132. data/samp/counter/counter_rspec_bench.v +4 -11
  133. data/samp/counter/counter_rspec_design.rb +2 -2
  134. data/samp/counter/counter_xunit_bench.rb +2 -0
  135. data/samp/counter/counter_xunit_bench.v +4 -11
  136. data/samp/counter/counter_xunit_design.rb +2 -2
  137. data/samp/pipelined_alu/hw5_unit_test_bench.rb +2 -0
  138. data/samp/pipelined_alu/hw5_unit_test_bench.v +4 -11
  139. metadata +37 -85
  140. data/ref/c/globals_0x62.html +0 -62
  141. data/ref/c/globals_0x67.html +0 -64
  142. data/ref/c/globals_0x69.html +0 -62
  143. data/ref/c/globals_0x6c.html +0 -64
  144. data/ref/c/globals_0x6e.html +0 -63
  145. data/ref/c/globals_0x75.html +0 -63
  146. data/ref/c/globals_defs_0x6c.html +0 -57
  147. data/ref/c/globals_defs_0x6e.html +0 -56
  148. data/ref/c/globals_defs_0x72.html +0 -57
  149. data/ref/c/globals_defs_0x73.html +0 -164
  150. data/ref/c/globals_defs_0x75.html +0 -56
  151. data/ref/c/globals_func_0x66.html +0 -62
  152. data/ref/c/globals_func_0x67.html +0 -55
  153. data/ref/c/globals_func_0x69.html +0 -53
  154. data/ref/c/globals_func_0x70.html +0 -53
  155. data/ref/c/globals_func_0x72.html +0 -57
  156. data/ref/c/globals_func_0x73.html +0 -114
  157. data/ref/c/globals_func_0x76.html +0 -57
  158. data/ref/c/structrelay____RubyOptions____def.html +0 -73
  159. data/ref/c/structswig__cast__info.html +0 -98
  160. data/ref/c/structswig__class.html +0 -115
  161. data/ref/c/structswig__module__info.html +0 -132
  162. data/ref/c/structswig__type__info.html +0 -132
  163. data/ref/c/swig__vpi_8h.html +0 -8739
  164. data/ref/c/swig__wrap_8cin.html +0 -11556
  165. data/ref/c/unions__vpi__value__value.html +0 -166
  166. data/ref/ruby/classes/Integer.src/M000024.html +0 -25
  167. data/ref/ruby/classes/Integer.src/M000025.html +0 -30
  168. data/ref/ruby/classes/OutputInfo.html +0 -294
  169. data/ref/ruby/classes/OutputInfo.src/M000026.html +0 -50
  170. data/ref/ruby/classes/RubyVpi.src/M000036.html +0 -107
  171. data/ref/ruby/classes/RubyVpi.src/M000037.html +0 -20
  172. data/ref/ruby/classes/Template.html +0 -158
  173. data/ref/ruby/classes/Template.src/M000028.html +0 -18
  174. data/ref/ruby/classes/Vpi/Handle/Property.html +0 -130
  175. data/ref/ruby/classes/Vpi/Handle/Property.src/M000049.html +0 -80
  176. data/ref/ruby/classes/Vpi/Handle.src/M000046.html +0 -24
  177. data/ref/ruby/classes/Vpi/Handle.src/M000048.html +0 -68
  178. data/ref/ruby/classes/XX/XMLish.html +0 -138
  179. data/ref/ruby/classes/XX/XMLish.src/M000033.html +0 -18
  180. data/ref/ruby/classes/XX.html +0 -111
  181. data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +0 -18
  182. data/ref/ruby/files/bin/generate_test_rb.src/M000002.html +0 -38
  183. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +0 -24
  184. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000004.html +0 -26
data/doc/history.rb CHANGED
@@ -7,7 +7,7 @@ require 'yaml'
7
7
  def format_history_entry aEntry
8
8
  output = "h1(##{aEntry['Version']}). Version #{aEntry['Version']} (#{aEntry['Date']})\n\n"
9
9
 
10
- %w[Summary Acknowledgment Notice Detail].each do |key|
10
+ %w[Summary Acknowledgment Notice Details].each do |key|
11
11
  if content = aEntry[key]
12
12
  output << "h2. #{key}\n\n#{content}\n\n"
13
13
  end
data/doc/history.yml CHANGED
@@ -1,3 +1,31 @@
1
+ -
2
+ Version: 13.0.0
3
+
4
+ Date: 2006-12-27
5
+
6
+ Summary: |
7
+ This release fixes a _major_ instability bug, simplifies generated Verilog benches, and purifies the API reference documentation.
8
+
9
+ Notice: |
10
+ * The @$ruby_init@ and @$ruby_relay@ system task/functions have been removed. Generated Verilog benches no longer use them.
11
+ ** To pass your own command-line options to Ruby, set the @RUBYOPT@ environment variable before running a test.
12
+
13
+ h3. New features
14
+
15
+ * You can now choose when @Vpi::relay_verilog@ is triggered: upon positive/negative edge of the clock signal, or any other criteria. This is done by passing a block to the @RubyVpi::init_bench@ method (see "the API reference documentation":../ref/ruby/classes/RubyVpi.html for details).
16
+
17
+ Details: |
18
+ * Fixed a major instability bug that was randomly causing segmentation faults and pthread assertion failures.
19
+
20
+ The problem was that the @$ruby_init@ system task/function was mischeviously unlocking a pthread mutex. From then onward, all code assumed that the mutex was still locked -- but in reality, the mutex was already unlocked.
21
+
22
+ * Replaced the @$ruby_init@ and @$ruby_relay@ system task/functions with callbacks.
23
+
24
+ * Excluded internal stuff from the API reference documentation for Ruby.
25
+
26
+ * Removed system-dependent path <tt>/usr/bin/ruby</tt> from the tools.
27
+
28
+
1
29
  -
2
30
  Version: 12.1.0
3
31
 
@@ -7,16 +35,19 @@
7
35
  This release adds interactive debugging support, adds new sections to the user manual, and cleanses some internals.
8
36
 
9
37
  Notice: |
10
- * The <tt>lib/ruby-vpi/rspec.rb</tt> and <tt>lib/ruby-vpi/xx.rb</tt> files has been removed because they are no longer necessary.
38
+ * The <tt>lib/ruby-vpi/rspec.rb</tt> and <tt>lib/ruby-vpi/xx.rb</tt> files have been removed because they are no longer necessary.
11
39
 
12
- * rSpec 0.7.0 or newer is now required because the sample tests utilize the @should ==@ syntax -- which was introduced in rSpec 0.7.0.
40
+ * rSpec 0.7.0 or newer is now required because the sample tests utilize the @should ==@ syntax.
41
+
42
+ h3. New features
13
43
 
14
- Detail: |
15
44
  * Test runners now support the @DEBUG@ environment variable, which enables the interactive debugger (ruby-debug) in "post-mortem debugging mode":http://www.datanoise.com/articles/2006/12/20/post-mortem-debugging.
16
- ** The @debugger@ can now be used when @DEBUG@ environment variable is not activated.
17
- ** ruby-debug is now a gem dependency for Ruby-VPI.
45
+ ** The @debugger@ command can also be used when the @DEBUG@ environment variable is not activated.
46
+
47
+ * Status messages, which are shown during initialization of a Ruby bench, now appear in your simulator's log files.
18
48
 
19
- * Status messages, which are shown during initialization of a Ruby bench, now appear in simulators' log files.
49
+ Details: |
50
+ * ruby-debug is now a gem dependency for Ruby-VPI.
20
51
 
21
52
  * Added documentation about "test runners":manual.html#usage.test-runner and the "interactive debugger":manual.html#usage.debugger in the user manual.
22
53
 
@@ -45,10 +76,10 @@
45
76
  Acknowledgment: |
46
77
  Thanks to Mauricio Fernandez for helping me solve the problem.
47
78
 
48
- Detail: |
79
+ Details: |
49
80
  Previously, code coverage reports were not providing any useful information because they were being generated _before_ the test had a chance to run. This problem has been fixed -- code coverage reports are now generated _after_ the test has finished running.
50
81
 
51
- This problem was wholly due to programmer error (i.e. my mistake @;-)@) because I had forgotten that @Kernel.at_exit@ invokes the blocks passed to it in _reverse_ order. So, the coverage report was being generated before Test::Unit had a chance to run (it also uses @Kernel.at_exit@).
82
+ This problem occurred because I had forgotten that @Kernel.at_exit@ invokes the blocks passed to it in _reverse_ order. So, the coverage report was being generated before Test::Unit had a chance to run (it also uses @Kernel.at_exit@).
52
83
 
53
84
 
54
85
  -
@@ -75,7 +106,7 @@
75
106
  ** now supplies a third argument to the @MERGER@ command.
76
107
  ** no longer replaces existing files with newly generated content during the *update* action. Instead, it now writes the newly generated output to a <tt>.new</tt> file and then invokes the @MERGER@ command.
77
108
 
78
- Detail: |
109
+ Details: |
79
110
  * The @Vpi::Handle@ class has two new methods: @x!@ and @z!@, which set the handle's logic value to _unknown_ and _high impedance_ respectively.
80
111
 
81
112
  * The tests for the simple up-counter example were randomly failing because the specifications were not asserting the design's @reset@ signal long enough. So the design was getting into weird states and behaving in a non-deterministic way. This problem has been fixed.
@@ -114,7 +145,7 @@
114
145
  Notice: |
115
146
  * The user manual is now available _only_ in HTML format. If you still wish to have a plain-text version, you can use a text-based browser, such as "lynx":http://lynx.browser.org/, to perform the necessary conversion.
116
147
 
117
- Detail: |
148
+ Details: |
118
149
  * The automated test generator no longer crashes when parsing a Verilog module declaration that contains multiple module parameters.
119
150
 
120
151
  * The user manual and the website are now written using a custom documentation system based on RedCloth and ERB instead of DocBook-XML. This makes it easier to edit the user manual and reuse its content in other areas of the website.
@@ -134,7 +165,7 @@
134
165
  Notice: |
135
166
  * A bug in generated Verilog and Ruby benches, which caused the <pre>ruby: no such file to load -- ruby-vpi (LoadError)</pre> error, has been fixed. Please regenerate your tests to apply this bug fix to your tests.
136
167
 
137
- Detail: |
168
+ Details: |
138
169
  * The class @SWIG::TYPE_p_unsigned_int@ has been aliased as @Vpi::Handle@ for easier access.
139
170
 
140
171
  * @Vpi::Handle.to_s@ and @Vpi::Handle.inspect@ now produce more informative output. For example, what used to appear as <pre>#<SWIG::TYPE_p_unsigned_int:0x2aaab6574fa0></pre> now appears as <pre>#<Vpi::Handle vpiModule fullName=counter_rspec_bench, size=-1, file=counter_rspec_bench.v, lineNo=2></pre> in this release.
@@ -170,7 +201,7 @@
170
201
 
171
202
  * The source code is no longer distributed as a *zip* package, because it seems to be quite underutilized in comparison to the *tgz* and *gem* packages.
172
203
 
173
- Detail: |
204
+ Details: |
174
205
  * Generated Ruby benches have been shortened to just _one_ line of code!
175
206
 
176
207
  * The less confusing notation of <code>def some_object.a_singleton_method
@@ -205,7 +236,7 @@
205
236
  * *generate_test.rb* no longer accepts the <pre>-s</pre> and <pre>-u</pre> options. Use their longer counterparts <pre>--rspec</pre> and <pre>--xunit</pre> instead.
206
237
 
207
238
 
208
- Detail: |
239
+ Details: |
209
240
  h3. Automated test generator
210
241
 
211
242
  * Generated Verilog benches no longer divert compilation errors from Verilog design files. That is, if the Verilog simulator finds compilation errors in a Verilog design file, it will report that the Verilog design file is at fault (instead of reporting that the generated Verilog bench is at fault).
@@ -240,7 +271,7 @@
240
271
  Notice: |
241
272
  * The command-line options for *generate_test.rb* have changed. Run the command <pre>generate_test.rb --help</pre> for details.
242
273
 
243
- Detail: |
274
+ Details: |
244
275
  * Test runners now attempt to resolve paths in @SIMULATOR_SOURCES@ by searching for them within the directories specified in @SIMULATOR_INCLUDES@.
245
276
 
246
277
  * Synopsys VCS is now used in a better way (via the <pre>-load</pre> option).
@@ -275,7 +306,7 @@
275
306
  Notice: |
276
307
  * Generated runners now have a @SIMULATOR_INCLUDES@ array, whose entries specify places where Verilog source files, needed by the Verilog design, reside.
277
308
 
278
- Detail: |
309
+ Details: |
279
310
  * Generated Verilog benches now inherit all @`include@ and @`define@ directives from the Verilog design in a simpler manner.
280
311
  * A generated test no longer requires its Verilog design to reside in the same directory.
281
312
  * The sample tests have been updated accordingly.
@@ -292,7 +323,7 @@
292
323
  Notice: |
293
324
  * The *vpi_util* library has been renamed to *vpi*. This change should not affect your code unless you explicitly imported this library via @require 'ruby-vpi/vpi_util'@. In which case, you should update your code to use @require 'ruby-vpi/vpi'@ accordingly.
294
325
 
295
- Detail: |
326
+ Details: |
296
327
  * An integer library has been added to simplify common tasks related to hardware and the binary number system. You can import this library for use via @require 'ruby-vpi/integer'@.
297
328
 
298
329
 
@@ -310,7 +341,7 @@
310
341
  * The @PROTO@ environment variable has been renamed to @PROTOTYPE@.
311
342
  ** In addition to using *unset*, you can now disable simulation of the prototype by assigning an empty value to this variable.
312
343
 
313
- Detail: |
344
+ Details: |
314
345
  * We now use "Darcs":http://darcs.net for revision control, instead of Subversion. The source repository can now be accessed at "http://ruby-vpi.rubyforge.org/src/ruby-vpi":http://ruby-vpi.rubyforge.org/src/ruby-vpi.
315
346
 
316
347
  * The source code is now distributed in tar.gz and zip form, in addition to gem.
@@ -336,7 +367,7 @@
336
367
  ** @handle.x?@ checks if the logic value is "don't care"
337
368
  ** @handle.z?@ checks if the logic value is high impedance
338
369
 
339
- Detail: |
370
+ Details: |
340
371
  * Module instantiation code in generated Verilog benches has been fixed. Whitespace between the module type and instance variable was missing.
341
372
 
342
373
  * The test generator tool now provides parsed Verilog constants and include-directives in generated Verilog benches; and parsed Verilog constants in generated Ruby designs.
@@ -356,7 +387,7 @@
356
387
  Acknowledgment: |
357
388
  Thanks to Mauricio Fernandez for helping me use rcov without its runner.
358
389
 
359
- Detail: |
390
+ Details: |
360
391
  * Added initial support (full capabilites of the rcov library, such as its various analysis modes, are not yet utilized) for code coverage analysis, which can be enabled by setting the @COVERAGE@ environment variable to a non-empty value before running a test.
361
392
  ** For example, you can run a test with the GPL Cver simulator while enabling the generation of code coverage reports as follows: <pre>export COVERAGE=1; rake cver</pre>
362
393
 
@@ -371,7 +402,7 @@
371
402
  Summary: |
372
403
  This release simplifies running of multiple tests, restores compatibility with Synopsys VCS, and better integrates with RubyGems.
373
404
 
374
- Detail: |
405
+ Details: |
375
406
  * Added <tt>lib/ruby-vpi/runner_proxy.rb</tt> library which, when embedded into a Rakefile, runs all generated tests in the working directory with any specified arguments. For example, have a look at the <tt>samp/counter/Rakefile</tt> file.
376
407
 
377
408
  * Fixed a bug that prevented one from running tests with Synopsys VCS.
@@ -402,7 +433,7 @@
402
433
 
403
434
  * The <tt>src/</tt> directory has been renamed to <tt>ext/</tt> to follow RubyGems convention.
404
435
 
405
- Detail: |
436
+ Details: |
406
437
  * Ruby-VPI is now distributed only as a "source gem":http://www.rubygems.org. You can decompress the gem without installing it onto your system by running the command <pre>gem install -i output_directory ruby-vpi-7.0.0.gem</pre>. In addition, you can still obtain the source code directly from the Subversion repository.
407
438
 
408
439
  * The tools in <tt>bin/</tt> become available in your system's <tt>bin/</tt> directory when the gem is installed.
@@ -427,7 +458,7 @@
427
458
  * Ruby-VPI now only needs to be built once.
428
459
  ** You can run tests with different Verilog simulators without having to re-compile Ruby-VPI.
429
460
 
430
- Detail: |
461
+ Details: |
431
462
  * The GPL Cver simulator is now supported.
432
463
 
433
464
  * Release packages are now available in both source and binary form.
@@ -463,7 +494,7 @@
463
494
 
464
495
  * @put_value()@ now verifies that the value it puts was written correctly. This helps to find bugs regarding invalid assumptions about the number of bits supported by a signal.
465
496
 
466
- Detail: |
497
+ Details: |
467
498
  * The test generator now uses ERB templates which ensures nice indentation of generated output.
468
499
 
469
500
  * The test generator now decouples Ruby-VPI paths from Verilog benches via the RUBYLIB environment variable.
@@ -481,7 +512,7 @@
481
512
  Summary: |
482
513
  This release simplifies generated tests and fixes a bug.
483
514
 
484
- Detail: |
515
+ Details: |
485
516
  * The test generator now produces simpler Ruby benches and specifications.
486
517
  ** A template used by generated specifications has been added.
487
518
  ** The counter example and tutorial have also been simplified accordingly.
@@ -505,7 +536,7 @@
505
536
 
506
537
  * All template files have been moved into the <tt>tpl</tt> directory.
507
538
 
508
- Detail: |
539
+ Details: |
509
540
  * Support for prototyping designs in Ruby, before they are implemented in Verilog, has been added.
510
541
  ** The _same_ specification can be used to verify both prototype _and_ design! :-)
511
542
  ** The tutorial in the user manual has been updated to discuss prototyping.
@@ -525,7 +556,7 @@
525
556
  Acknowledgment: |
526
557
  * Thanks to Todd Nagengast and Matt Fischler for notifying me about unreadable text in the user manual.
527
558
 
528
- Detail: |
559
+ Details: |
529
560
  * Source code comments in the user manual are now readable.
530
561
 
531
562
  * The <tt>README</tt> and <tt>HISTORY</tt> files have been converted to "textile":http://www.textism.com/tools/textile/ format.
@@ -542,7 +573,7 @@
542
573
  Acknowledgment: |
543
574
  * Thanks to Phil Tomson for correcting the URL of the RHDL website, in the user manual.
544
575
 
545
- Detail: |
576
+ Details: |
546
577
  h3. User manual
547
578
 
548
579
  * A tutorial, based on the counter example, has been added to the user manual.
@@ -582,7 +613,7 @@
582
613
 
583
614
  * The @handle.value@ and @handle.value=@ methods have been removed.
584
615
 
585
- Detail: |
616
+ Details: |
586
617
  * The VPI utility layer provides access to VPI properties of handles in a "simpler, more powerful way":manual.html#background.org.vpi.
587
618
 
588
619
  ** All VPI properties, except delay values, are now accessible from a handle.
@@ -610,7 +641,7 @@
610
641
 
611
642
  * The test generation tool now generates multiple files (runner, bench, design, spec) and makes backups of existing files. See its help information for details.
612
643
 
613
- Detail: |
644
+ Details: |
614
645
  * A comprehensive user manual, written in DocBook-XML, has been added.
615
646
 
616
647
  * Support for RSpec 0.5.4 has been added.
@@ -632,7 +663,7 @@
632
663
  Acknowledgment: |
633
664
  * Thanks to Scott L Holmes for helping me "use the RSpec library without its runner":http://article.gmane.org/gmane.comp.lang.ruby.general/150087 program.
634
665
 
635
- Detail: |
666
+ Details: |
636
667
  * A tool, which generates most of a Ruby-VPI test bench from a Verilog 2001 module declaration, has been added.
637
668
 
638
669
  * Ability to use RSpec in a test bench has been added.
@@ -655,7 +686,7 @@
655
686
  Notice: |
656
687
  * The *msim* Makefile target for Mentor Modelsim has been renamed back to *vsim*.
657
688
 
658
- Detail: |
689
+ Details: |
659
690
  * Simple, consistent ways of reading and writing values to handles have been added to the VPI utility layer. These ways are described in the @SWIG::TYPE_p_unsigned_int@ class' documentation.
660
691
 
661
692
  * The makefiles now use the *rbconfig* library to determine the default compiler and linker flags for Ruby.
@@ -685,7 +716,7 @@
685
716
  Notice: |
686
717
  * The *vsim* Makefile target for Mentor Modelsim has been renamed to *msim*.
687
718
 
688
- Detail: |
719
+ Details: |
689
720
  * The Ruby interface to VPI is now generated by "SWIG":http://www.swig.org.
690
721
  ** The main @VPI@ module has been renamed to @Vpi@.
691
722
  ** The @VPI::Handle@ class has been removed.
@@ -718,7 +749,7 @@
718
749
  Notice: |
719
750
  * Removed @$ruby_task@ callback and ability to dynamically register system tasks from Ruby because inter-process communication is complicated at present.
720
751
 
721
- Detail: |
752
+ Details: |
722
753
  * The "cross-thread violation on rb_gc()" error has been fixed.
723
754
  ** The "stack level too deep (SystemStackError)" error has been fixed.
724
755
  ** The test/unit library can be used in Ruby test bench.
@@ -748,7 +779,7 @@
748
779
 
749
780
  * Thanks to Ross Bamford, Eric Hodel, and Yukihiro Matsumoto for "helping me discover":http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662 why the @SystemStackError@ was happening.
750
781
 
751
- Detail: |
782
+ Details: |
752
783
  * Implemented some Verilog VPI functionality:
753
784
  ** @VPI::handle_by_name(string, VPI::Handle)@ &rarr; @VPI::Handle@
754
785
  ** @VPI::handle_by_name(string)@ &rarr; @VPI::Handle@
@@ -782,7 +813,7 @@
782
813
  Summary: |
783
814
  This is Kazuhiro HIWADA's initial testing release of Ruby-VPI. See its "original announcement":http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-list/18193 and "source code":http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/memo/src/ruby-vpi-test.tgz.
784
815
 
785
- Detail: |
816
+ Details: |
786
817
  * Added ability to relay control from Verilog test bench to Ruby (using @$ruby_callback@) and vice versa (using @PLI::relay_Verilog@).
787
818
 
788
819
  * Tested and developed using Ruby 1.4 and Verilog-XL from Cadence systems, on a SPARC machine running Solaris 2.6.
data/doc/manual.html CHANGED
@@ -219,7 +219,7 @@
219
219
  <p>Suraj N. Kurapati</p>
220
220
 
221
221
 
222
- <p>Fri Dec 22 21:43:06 <span class="caps">PST 2006</span></p>
222
+ <p>Wed Dec 27 22:29:49 <span class="caps">PST 2006</span></p>
223
223
 
224
224
 
225
225
  </div>
@@ -1539,9 +1539,9 @@ context <span style="background-color:#fff0f0"><span style="color:#710">&quot;</
1539
1539
 
1540
1540
  <span style="color:#888"># This method resets the design under test.</span>
1541
1541
  <span style="color:#080; font-weight:bold">def</span> <span style="color:#036; font-weight:bold">Counter</span>.reset!
1542
- <span style="color:#888"># assert the reset signal for five clock cycles</span>
1542
+ <span style="color:#888"># assert the reset signal for two clock cycles</span>
1543
1543
  reset.intVal = <span style="color:#00D; font-weight:bold">1</span>
1544
- <span style="color:#00D; font-weight:bold">5</span>.times {relay_verilog}
1544
+ <span style="color:#00D; font-weight:bold">2</span>.times {relay_verilog}
1545
1545
  reset.intVal = <span style="color:#00D; font-weight:bold">0</span>
1546
1546
  <span style="color:#080; font-weight:bold">end</span>
1547
1547
  </pre></li>
data/doc/memo.doc CHANGED
@@ -1,5 +1,7 @@
1
1
  h1. Pending tasks
2
2
 
3
+ * add support for VPI callbacks which execute Ruby blocks
4
+
3
5
  * add support for reading & writing VPI delay values
4
6
 
5
7
  * GHDL simulator supports VPI
data/doc/memo.html CHANGED
@@ -26,6 +26,11 @@
26
26
  <h1 id="anchor1">Pending tasks</h1>
27
27
 
28
28
 
29
+ <ul>
30
+ <li>add support for <span class="caps">VPI</span> callbacks which execute Ruby blocks</li>
31
+ </ul>
32
+
33
+
29
34
  <ul>
30
35
  <li>add support for reading &#38; writing <span class="caps">VPI</span> delay values</li>
31
36
  </ul>
data/doc/readme.doc CHANGED
@@ -10,24 +10,32 @@
10
10
  * "Reference":../ref/
11
11
  - API documentation for Ruby libraries and C extension.
12
12
 
13
- * "History":history.html
14
- - record of all release notes.
15
-
16
- * "Memo":memo.html
17
- - pending tasks for future releases.
18
13
 
19
14
  * "Facilities":http://rubyforge.org/projects/ruby-vpi
20
- - issue tracker, file downloads, support requests, discussion forums, and more.
15
+ ** "Downloads":http://rubyforge.org/frs/?group_id=1339
16
+ ** "Bugs":http://rubyforge.org/tracker/?group_id=1339
17
+ ** "Patches":http://rubyforge.org/tracker/?group_id=1339
18
+ ** "Requests":http://rubyforge.org/tracker/?group_id=1339
19
+ ** "Forums":http://rubyforge.org/forum/?group_id=1339
21
20
 
22
21
  * "Sources":http://ruby-vpi.rubyforge.org/src/ruby-vpi
23
22
  - browse or access the "Darcs":http://abridgegame.org/darcs/ source code repository.
24
23
 
25
- * "Talks":http://ruby-vpi.rubyforge.org/talks
26
- - slides from public presentations about Ruby-VPI.
27
24
 
28
25
  * "News":http://ruby-vpi.rubyforge.org/news
29
26
  - see what's cooking for the next release.
30
27
 
28
+ * "Talks":http://ruby-vpi.rubyforge.org/talks
29
+ - slides from public presentations about Ruby-VPI.
30
+
31
+
32
+ * "Memo":memo.html
33
+ - pending tasks for future releases.
34
+
35
+ * "History":history.html
36
+ - record of all release notes.
37
+
38
+
31
39
  </div>
32
40
 
33
41
 
data/doc/readme.html CHANGED
@@ -28,44 +28,50 @@
28
28
 
29
29
 
30
30
  <ul>
31
- <li><a href="history.html">History</a>
32
- &#8211; record of all release notes.</li>
31
+ <li><a href="http://rubyforge.org/projects/ruby-vpi">Facilities</a>
32
+ <ul>
33
+ <li><a href="http://rubyforge.org/frs/?group_id=1339">Downloads</a></li>
34
+ <li><a href="http://rubyforge.org/tracker/?group_id=1339">Bugs</a></li>
35
+ <li><a href="http://rubyforge.org/tracker/?group_id=1339">Patches</a></li>
36
+ <li><a href="http://rubyforge.org/tracker/?group_id=1339">Requests</a></li>
37
+ <li><a href="http://rubyforge.org/forum/?group_id=1339">Forums</a></li>
38
+ </ul></li>
33
39
  </ul>
34
40
 
35
41
 
36
42
  <ul>
37
- <li><a href="memo.html">Memo</a>
38
- &#8211; pending tasks for future releases.</li>
43
+ <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Sources</a>
44
+ &#8211; browse or access the <a href="http://abridgegame.org/darcs/">Darcs</a> source code repository.</li>
39
45
  </ul>
40
46
 
41
47
 
42
48
  <ul>
43
- <li><a href="http://rubyforge.org/projects/ruby-vpi">Facilities</a>
44
- &#8211; issue tracker, file downloads, support requests, discussion forums, and more.</li>
49
+ <li><a href="http://ruby-vpi.rubyforge.org/news">News</a>
50
+ &#8211; see what&#8217;s cooking for the next release.</li>
45
51
  </ul>
46
52
 
47
53
 
48
54
  <ul>
49
- <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Sources</a>
50
- &#8211; browse or access the <a href="http://abridgegame.org/darcs/">Darcs</a> source code repository.</li>
55
+ <li><a href="http://ruby-vpi.rubyforge.org/talks">Talks</a>
56
+ &#8211; slides from public presentations about Ruby-VPI.</li>
51
57
  </ul>
52
58
 
53
59
 
54
60
  <ul>
55
- <li><a href="http://ruby-vpi.rubyforge.org/talks">Talks</a>
56
- &#8211; slides from public presentations about Ruby-VPI.</li>
61
+ <li><a href="memo.html">Memo</a>
62
+ &#8211; pending tasks for future releases.</li>
57
63
  </ul>
58
64
 
59
65
 
60
66
  <ul>
61
- <li><a href="http://ruby-vpi.rubyforge.org/news">News</a>
62
- &#8211; see what&#8217;s cooking for the next release.</li>
67
+ <li><a href="history.html">History</a>
68
+ &#8211; record of all release notes.</li>
63
69
  </ul>
64
70
 
65
71
 
66
72
  </div>
67
73
 
68
- <h1 id="anchor108">Welcome to Ruby-VPI
74
+ <h1 id="anchor113">Welcome to Ruby-VPI
69
75
  <a type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml"><img src="images/feed-icon.png" title="RSS feed for this project." alt="RSS feed for this project." /></a></h1>
70
76
 
71
77
 
data/doc/rss.xml CHANGED
@@ -4,6 +4,13 @@
4
4
  <title>Ruby-VPI</title>
5
5
  <link>http://ruby-vpi.rubyforge.org</link>
6
6
  <description>Ruby-VPI is a Ruby interface to IEEE 1364-2005 Verilog VPI. It lets you create complex Verilog test benches easily and wholly in Ruby.</description>
7
+ <item>
8
+ <title>Version 13.0.0 released</title>
9
+ <link>http://ruby-vpi.rubyforge.org/doc/history.html#13.0.0</link>
10
+ <guid>http://ruby-vpi.rubyforge.org/doc/history.html#13.0.0</guid>
11
+ <description>&lt;p&gt;This release fixes a &lt;em&gt;major&lt;/em&gt; instability bug, simplifies generated Verilog benches, and purifies the &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; reference documentation.&lt;/p&gt;</description>
12
+ <pubDate>Wed, 27 Dec 2006 00:00:00 PST</pubDate>
13
+ </item>
7
14
  <item>
8
15
  <title>Version 12.1.0 released</title>
9
16
  <link>http://ruby-vpi.rubyforge.org/doc/history.html#12.1.0</link>
data/ext/common.h CHANGED
@@ -24,6 +24,7 @@
24
24
  #ifndef COMMON_H
25
25
  #define COMMON_H
26
26
 
27
+ #include <stddef.h>
27
28
  #include "verilog.h"
28
29
 
29
30
 
@@ -19,18 +19,44 @@
19
19
  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
20
  */
21
21
 
22
- #include "swig.h"
23
-
22
+ #include "main.h"
24
23
  #include "relay.h"
24
+ #include <stdlib.h>
25
+ #include <stdio.h>
26
+
27
+
28
+ // load the SWIG-generated Ruby interface to VPI
25
29
  #include "swig_wrap.cin"
26
30
 
27
31
 
28
- void swig_init() {
29
- Init_vpi();
30
- rb_define_module_function(mVpi, "relay_verilog", swig_rb_relay_verilog, 0);
32
+ void main_init() {
33
+ ruby_init();
34
+ ruby_init_loadpath();
35
+
36
+ // load the VPI interface for Ruby
37
+ Init_vpi();
38
+ rb_define_module_function(mVpi, "relay_verilog", main_relay_verilog, 0);
39
+
40
+ // initialize the Ruby bench
41
+ char* benchFile = getenv("RUBY_VPI__RUBY_BENCH_FILE");
42
+
43
+ if (benchFile != NULL) {
44
+ rb_load_file(benchFile);
45
+ }
46
+ else {
47
+ common_printf("error: environment variable RUBY_VPI__RUBY_BENCH_FILE is not set.");
48
+ exit(EXIT_FAILURE);
49
+ }
50
+
51
+ ruby_script(benchFile);
52
+
53
+ // run the test bench
54
+ ruby_run();
55
+
56
+ ruby_finalize();
31
57
  }
32
58
 
33
- VALUE swig_rb_relay_verilog(VALUE arSelf) {
59
+ VALUE main_relay_verilog(VALUE arSelf) {
34
60
  relay_verilog();
35
61
  return arSelf;
36
62
  }
@@ -18,22 +18,23 @@
18
18
  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
19
  */
20
20
  /**\file
21
- C interface to the SWIG-generated VPI interface.
21
+ The C extension for Ruby-VPI.
22
22
  */
23
23
 
24
- #ifndef SWIG_H
25
- #define SWIG_H
24
+ #ifndef MAIN_H
25
+ #define MAIN_H
26
26
 
27
+ #include "common.h"
27
28
  #include <ruby.h>
28
29
 
29
30
  /**
30
- Registers the SWIG-generated VPI interface with Ruby, so that Ruby code can access it.
31
+ Runs the test bench.
31
32
  */
32
- void swig_init();
33
+ void main_init();
33
34
 
34
35
  /**
35
- Transfers control from Ruby code to Verilog code.
36
+ Transfers control from Ruby to Verilog.
36
37
  */
37
- VALUE swig_rb_relay_verilog(VALUE arSelf);
38
+ VALUE main_relay_verilog(VALUE arSelf);
38
39
 
39
40
  #endif