ruby-vpi 12.1.0 → 13.0.0

Sign up to get free protection for your applications and to get access to all the features.
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