[ANN] Ruby-VPI 11.1.0

Ruby-VPI is a Ruby interface to Verilog VPI. It lets you create
complex Verilog test benches easily and wholly in Ruby.

Website: http://ruby-vpi.rubyforge.org

Install: gem install ruby-vpi

Version 11.1.0 (2006-11-08)

Summary

This release fixes a bug in generated benches, improves the
the Vpi::Handle class, and improves performance by roughly
20%.

Acknowledgment

Thanks to Matt Fischler for finding the bug in generated
benches (see below).

Notice

• A bug in generated Verilog and Ruby benches, which
caused this error

ruby: no such file to load -- ruby-vpi (LoadError)

has been fixed.
  â–¡ Please regenerate your tests to apply this bug fix
    to your tests.

Detail

• The class SWIG::TYPE_p_unsigned_int has been aliased as
Vpi::Handle for easier access.

• Vpi::Handle#to_s and Vpi::Handle#inspect now produce
more informative output. For example, what used to
appear as

#<SWIG::TYPE_p_unsigned_int:0x2aaab6574fa0>

now appears as

#<Vpi::Handle vpiModule fullName=counter_rspec_bench, size=-1, 

file=counter_rspec_bench.v, lineNo=2>

in this release.
  â–¡ You can also provide a list of VPI property/type
    names or integer constants to those methods to see
    additional information in the output.

• Vpi::Handle now implements all methods from Enumerable,
such as map, each, select, and so on. However, unlike
their counterparts in Enumerable, these methods also
accept a list of VPI property/type names or integer
constants. Thus, you are now able to write
handle.select(:reg, :net) {|h| h.size > 5} to obtain a
list of child handles to registers and nets whose
capacity is greater than 5 bits.

• The Vpi::Handle#[], Vpi::Handle#get_value, and
Vpi::Handle#put_value methods now accept names of VPI
types/properties as well as their integer constants.
Thus, you are now able to write handle[:reg, :net] to
obtain a list of handles to all child registers and
nets.

• Vpi::Handle#method_missing has been refactored to cache
queries. There is now, approximately, 20% improvement
in performance.

• Vpi::Handle#method_missing has been fixed to accept
operations with multiple underscores. For example,
before this release, you could not write
handle.find_all_reg {|r| r.name =~ /foo/} because the
“find_all_reg” method would be interpreted as the
operation “find” and the VPI property “all_reg”.

• The IntegerGenerator class, in the pipelined ALU
example, has been fixed so that multiple instances do
not interfere with the generation of each other’s prime
integers.

• Due to a bug in the Rakefile, the reference
documentation was not included in the previous few
releases. This has been fixed.