[ANN] Ruby-VPI 20.0.0


Ruby-VPI is a Ruby interface to IEEE 1364-2005 Verilog VPI
and a platform for unit testing, rapid prototyping, and
systems integration of Verilog modules through Ruby. It
lets you create complex Verilog test benches easily and
wholly in Ruby.



Version 20.0.0


• Caution
• Improvements
• Repairs

This release shifts focus from single-module unit testing
to a system-level testing approach by adding support for
testing multiple designs in a single session, improves the
Ruby interface to VPI, fixes several bugs, and updates the

1 Caution

• The way tests are loaded has been changed to shift
focus from single-module unit testing to system level
testing. See this discussion thread and its
significance explained in the user guide.

• The excessive & verbose aliases for testing & setting
logic values introduced in the previous 19.0.0 release
have been removed in favor or short and relevant method
names following this pattern: /vpi[01XZHL][?!]/.
Furthermore, single-character aliases /[tfxzhl]/ (t & f
for 1 & 0) have been added for simplicity.

• The test runner will now chdir (change the working
directory) into same directory as the runner file
before running a test.

• The RubyVPI::SIMULATORS hash has been changed into an

• The VPI::Handle#[] method now gives access to VPI
properties (instead of child handles) by name or
integer constant. To fill the void, the VPI::Handle#/
method has been added to give access to child handles
by relative path, and the VPI::Handle.to_a method has
been added to give access to child handles by VPI type
(name or integer constant).

2 Improvements

• Upgraded and revised the website and user manual to
make use of the Gerbil project and the new project

• The ruby-vpi executable now accepts a -v option to show
the project version information.

• “t” and “f” are now synonyms of 1 & 0 in method names
for setting and testing the logic values of handles.

• API documentation for dynamically generated methods is
now present.

• Ruby’s standard output and error streams are now copied
into the simulator’s log file. This will help keep a
record of failures (stack trace) in the log file for

• In ./lib/ruby-vpi/rake.rb, the sh() method now prints
args in array form before execution to help users
readily see the ARGV being passed to the target

3 Repairs

• Fixed several Ruby warnings in the edge detection

• There was an infinite loop during recursive rake clean/

• String to integer conversion was incorrect when ‘x’ or
‘z’ present in a handle’s logic value.