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.
- data/bin/generate_test.rb +4 -5
- data/bin/generate_test_tpl/bench.rb +2 -0
- data/bin/generate_test_tpl/bench.v +4 -11
- data/bin/header_to_ruby.rb +0 -1
- data/doc/history.html +281 -206
- data/doc/history.rb +1 -1
- data/doc/history.yml +66 -35
- data/doc/manual.html +3 -3
- data/doc/memo.doc +2 -0
- data/doc/memo.html +5 -0
- data/doc/readme.doc +16 -8
- data/doc/readme.html +19 -13
- data/doc/rss.xml +7 -0
- data/ext/common.h +1 -0
- data/ext/{swig.c → main.c} +32 -6
- data/ext/{swig.h → main.h} +8 -7
- data/ext/relay.c +7 -83
- data/ext/relay.h +7 -5
- data/ext/swig_vpi.i +10 -3
- data/ext/swig_wrap.cin +4 -1
- data/ext/verilog.h +26 -10
- data/ext/vlog.c +16 -23
- data/ext/vlog.h +5 -19
- data/lib/ruby-vpi/rcov.rb +3 -3
- data/lib/ruby-vpi/runner.rb +5 -2
- data/lib/ruby-vpi/vpi.rb +1 -1
- data/lib/ruby-vpi.rb +57 -5
- data/ref/c/annotated.html +1 -7
- data/ref/c/common_8h.html +2 -1
- data/ref/c/files.html +3 -5
- data/ref/c/functions.html +24 -46
- data/ref/c/functions_vars.html +24 -46
- data/ref/c/globals.html +5 -210
- data/ref/c/globals_0x63.html +32 -48
- data/ref/c/globals_0x65.html +3 -9
- data/ref/c/globals_0x66.html +3 -19
- data/ref/c/globals_0x6d.html +5 -10
- data/ref/c/globals_0x70.html +19 -25
- data/ref/c/globals_0x72.html +8 -18
- data/ref/c/globals_0x73.html +11 -198
- data/ref/c/globals_0x74.html +2 -8
- data/ref/c/globals_0x76.html +419 -427
- data/ref/c/globals_0x78.html +3 -9
- data/ref/c/globals_defs.html +30 -35
- data/ref/c/globals_defs_0x65.html +2 -7
- data/ref/c/globals_defs_0x70.html +3 -8
- data/ref/c/globals_defs_0x76.html +416 -420
- data/ref/c/globals_defs_0x78.html +2 -7
- data/ref/c/globals_enum.html +1 -1
- data/ref/c/globals_eval.html +1 -1
- data/ref/c/globals_func.html +13 -173
- data/ref/c/globals_type.html +26 -29
- data/ref/c/globals_vars.html +4 -88
- data/ref/c/index.html +1 -1
- data/ref/c/{swig_8c.html → main_8c.html} +16 -14
- data/ref/c/{swig_8h.html → main_8h.html} +15 -14
- data/ref/c/relay_8c.html +25 -38
- data/ref/c/relay_8h.html +16 -15
- data/ref/c/structt__cb__data.html +6 -23
- data/ref/c/structt__vpi__delay.html +3 -20
- data/ref/c/structt__vpi__error__info.html +3 -71
- data/ref/c/structt__vpi__strengthval.html +3 -3
- data/ref/c/structt__vpi__systf__data.html +12 -46
- data/ref/c/structt__vpi__time.html +3 -3
- data/ref/c/structt__vpi__value.html +3 -113
- data/ref/c/structt__vpi__vecval.html +3 -3
- data/ref/c/structt__vpi__vlog__info.html +3 -54
- data/ref/c/verilog_8h.html +69 -3
- data/ref/c/vlog_8c.html +16 -61
- data/ref/c/vlog_8h.html +14 -57
- data/ref/c/vpi__user_8h.html +16 -16
- data/ref/ruby/classes/ERB.html +5 -5
- data/ref/ruby/classes/ERB.src/{M000032.html → M000026.html} +0 -0
- data/ref/ruby/classes/FileUtils.html +10 -10
- data/ref/ruby/classes/FileUtils.src/{M000034.html → M000027.html} +0 -0
- data/ref/ruby/classes/FileUtils.src/{M000035.html → M000028.html} +0 -0
- data/ref/ruby/classes/Float.html +5 -5
- data/ref/ruby/classes/Float.src/{M000027.html → M000022.html} +0 -0
- data/ref/ruby/classes/Integer.html +68 -68
- data/ref/ruby/classes/Integer.src/M000008.html +25 -0
- data/ref/ruby/classes/Integer.src/M000009.html +18 -0
- data/ref/ruby/classes/Integer.src/{M000014.html → M000010.html} +0 -0
- data/ref/ruby/classes/Integer.src/{M000015.html → M000011.html} +0 -0
- data/ref/ruby/classes/Integer.src/M000012.html +5 -12
- data/ref/ruby/classes/Integer.src/M000013.html +5 -5
- data/ref/ruby/classes/Integer.src/M000016.html +9 -5
- data/ref/ruby/classes/Integer.src/M000017.html +9 -5
- data/ref/ruby/classes/Integer.src/{M000022.html → M000018.html} +0 -0
- data/ref/ruby/classes/Integer.src/{M000023.html → M000019.html} +0 -0
- data/ref/ruby/classes/Integer.src/M000020.html +12 -9
- data/ref/ruby/classes/Integer.src/M000021.html +17 -9
- data/ref/ruby/classes/RDoc.html +5 -5
- data/ref/ruby/classes/RDoc.src/{M000050.html → M000041.html} +0 -0
- data/ref/ruby/classes/RubyVpi.html +29 -24
- data/ref/ruby/classes/RubyVpi.src/M000029.html +142 -0
- data/ref/ruby/classes/String.html +15 -15
- data/ref/ruby/classes/String.src/{M000029.html → M000023.html} +0 -0
- data/ref/ruby/classes/String.src/{M000030.html → M000024.html} +0 -0
- data/ref/ruby/classes/String.src/{M000031.html → M000025.html} +0 -0
- data/ref/ruby/classes/VerilogParser/Module/Parameter.html +5 -5
- data/ref/ruby/classes/VerilogParser/Module/Parameter.src/{M000011.html → M000007.html} +0 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.html +20 -20
- data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000007.html → M000003.html} +0 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000008.html → M000004.html} +0 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000009.html → M000005.html} +0 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000010.html → M000006.html} +0 -0
- data/ref/ruby/classes/VerilogParser/Module.html +5 -5
- data/ref/ruby/classes/VerilogParser/Module.src/{M000006.html → M000002.html} +0 -0
- data/ref/ruby/classes/VerilogParser.html +5 -5
- data/ref/ruby/classes/VerilogParser.src/{M000005.html → M000001.html} +0 -0
- data/ref/ruby/classes/Vpi/Handle.html +56 -62
- data/ref/ruby/classes/Vpi/Handle.src/M000030.html +18 -0
- data/ref/ruby/classes/Vpi/Handle.src/{M000039.html → M000031.html} +0 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000032.html +18 -0
- data/ref/ruby/classes/Vpi/Handle.src/{M000041.html → M000033.html} +0 -0
- data/ref/ruby/classes/Vpi/Handle.src/{M000042.html → M000034.html} +0 -0
- data/ref/ruby/classes/Vpi/Handle.src/{M000043.html → M000035.html} +0 -0
- data/ref/ruby/classes/Vpi/Handle.src/{M000044.html → M000036.html} +0 -0
- data/ref/ruby/classes/Vpi/Handle.src/{M000045.html → M000037.html} +0 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000038.html +11 -5
- data/ref/ruby/classes/Vpi/Handle.src/M000040.html +55 -5
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/generate_test_rb.html +1 -49
- data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -48
- data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
- data/ref/ruby/fr_class_index.html +0 -5
- data/ref/ruby/fr_method_index.html +41 -50
- data/samp/counter/counter_rspec_bench.rb +2 -0
- data/samp/counter/counter_rspec_bench.v +4 -11
- data/samp/counter/counter_rspec_design.rb +2 -2
- data/samp/counter/counter_xunit_bench.rb +2 -0
- data/samp/counter/counter_xunit_bench.v +4 -11
- data/samp/counter/counter_xunit_design.rb +2 -2
- data/samp/pipelined_alu/hw5_unit_test_bench.rb +2 -0
- data/samp/pipelined_alu/hw5_unit_test_bench.v +4 -11
- metadata +37 -85
- data/ref/c/globals_0x62.html +0 -62
- data/ref/c/globals_0x67.html +0 -64
- data/ref/c/globals_0x69.html +0 -62
- data/ref/c/globals_0x6c.html +0 -64
- data/ref/c/globals_0x6e.html +0 -63
- data/ref/c/globals_0x75.html +0 -63
- data/ref/c/globals_defs_0x6c.html +0 -57
- data/ref/c/globals_defs_0x6e.html +0 -56
- data/ref/c/globals_defs_0x72.html +0 -57
- data/ref/c/globals_defs_0x73.html +0 -164
- data/ref/c/globals_defs_0x75.html +0 -56
- data/ref/c/globals_func_0x66.html +0 -62
- data/ref/c/globals_func_0x67.html +0 -55
- data/ref/c/globals_func_0x69.html +0 -53
- data/ref/c/globals_func_0x70.html +0 -53
- data/ref/c/globals_func_0x72.html +0 -57
- data/ref/c/globals_func_0x73.html +0 -114
- data/ref/c/globals_func_0x76.html +0 -57
- data/ref/c/structrelay____RubyOptions____def.html +0 -73
- data/ref/c/structswig__cast__info.html +0 -98
- data/ref/c/structswig__class.html +0 -115
- data/ref/c/structswig__module__info.html +0 -132
- data/ref/c/structswig__type__info.html +0 -132
- data/ref/c/swig__vpi_8h.html +0 -8739
- data/ref/c/swig__wrap_8cin.html +0 -11556
- data/ref/c/unions__vpi__value__value.html +0 -166
- data/ref/ruby/classes/Integer.src/M000024.html +0 -25
- data/ref/ruby/classes/Integer.src/M000025.html +0 -30
- data/ref/ruby/classes/OutputInfo.html +0 -294
- data/ref/ruby/classes/OutputInfo.src/M000026.html +0 -50
- data/ref/ruby/classes/RubyVpi.src/M000036.html +0 -107
- data/ref/ruby/classes/RubyVpi.src/M000037.html +0 -20
- data/ref/ruby/classes/Template.html +0 -158
- data/ref/ruby/classes/Template.src/M000028.html +0 -18
- data/ref/ruby/classes/Vpi/Handle/Property.html +0 -130
- data/ref/ruby/classes/Vpi/Handle/Property.src/M000049.html +0 -80
- data/ref/ruby/classes/Vpi/Handle.src/M000046.html +0 -24
- data/ref/ruby/classes/Vpi/Handle.src/M000048.html +0 -68
- data/ref/ruby/classes/XX/XMLish.html +0 -138
- data/ref/ruby/classes/XX/XMLish.src/M000033.html +0 -18
- data/ref/ruby/classes/XX.html +0 -111
- data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +0 -18
- data/ref/ruby/files/bin/generate_test_rb.src/M000002.html +0 -38
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +0 -24
- 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
|
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
|
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
|
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
|
17
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
782
|
+
Details: |
|
752
783
|
* Implemented some Verilog VPI functionality:
|
753
784
|
** @VPI::handle_by_name(string, VPI::Handle)@ → @VPI::Handle@
|
754
785
|
** @VPI::handle_by_name(string)@ → @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
|
-
|
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>
|
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">"</
|
|
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
|
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">
|
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
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 & 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
|
-
|
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="
|
32
|
-
|
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="
|
38
|
-
–
|
43
|
+
<li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Sources</a>
|
44
|
+
– 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/
|
44
|
-
–
|
49
|
+
<li><a href="http://ruby-vpi.rubyforge.org/news">News</a>
|
50
|
+
– see what’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/
|
50
|
-
–
|
55
|
+
<li><a href="http://ruby-vpi.rubyforge.org/talks">Talks</a>
|
56
|
+
– slides from public presentations about Ruby-VPI.</li>
|
51
57
|
</ul>
|
52
58
|
|
53
59
|
|
54
60
|
<ul>
|
55
|
-
<li><a href="
|
56
|
-
–
|
61
|
+
<li><a href="memo.html">Memo</a>
|
62
|
+
– pending tasks for future releases.</li>
|
57
63
|
</ul>
|
58
64
|
|
59
65
|
|
60
66
|
<ul>
|
61
|
-
<li><a href="
|
62
|
-
–
|
67
|
+
<li><a href="history.html">History</a>
|
68
|
+
– record of all release notes.</li>
|
63
69
|
</ul>
|
64
70
|
|
65
71
|
|
66
72
|
</div>
|
67
73
|
|
68
|
-
<h1 id="
|
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><p>This release fixes a <em>major</em> instability bug, simplifies generated Verilog benches, and purifies the <span class="caps">API</span> reference documentation.</p></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
data/ext/{swig.c → main.c}
RENAMED
@@ -19,18 +19,44 @@
|
|
19
19
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
20
20
|
*/
|
21
21
|
|
22
|
-
#include "
|
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
|
29
|
-
|
30
|
-
|
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
|
59
|
+
VALUE main_relay_verilog(VALUE arSelf) {
|
34
60
|
relay_verilog();
|
35
61
|
return arSelf;
|
36
62
|
}
|
data/ext/{swig.h → main.h}
RENAMED
@@ -18,22 +18,23 @@
|
|
18
18
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
19
19
|
*/
|
20
20
|
/**\file
|
21
|
-
C
|
21
|
+
The C extension for Ruby-VPI.
|
22
22
|
*/
|
23
23
|
|
24
|
-
#ifndef
|
25
|
-
#define
|
24
|
+
#ifndef MAIN_H
|
25
|
+
#define MAIN_H
|
26
26
|
|
27
|
+
#include "common.h"
|
27
28
|
#include <ruby.h>
|
28
29
|
|
29
30
|
/**
|
30
|
-
|
31
|
+
Runs the test bench.
|
31
32
|
*/
|
32
|
-
void
|
33
|
+
void main_init();
|
33
34
|
|
34
35
|
/**
|
35
|
-
Transfers control from Ruby
|
36
|
+
Transfers control from Ruby to Verilog.
|
36
37
|
*/
|
37
|
-
VALUE
|
38
|
+
VALUE main_relay_verilog(VALUE arSelf);
|
38
39
|
|
39
40
|
#endif
|