S
Suraj Kurapati
Ruby-VPI
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.
http://ruby-vpi.rubyforge.org
â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
Version 20.0.0
Contents
• 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
documentation.
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
array.
• 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
organization.
• 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
debugging.
• 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
program.
3 Repairs
• Fixed several Ruby warnings in the edge detection
logic.
• There was an infinite loop during recursive rake clean/
clobber.
• String to integer conversion was incorrect when ‘x’ or
‘z’ present in a handle’s logic value.
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.
http://ruby-vpi.rubyforge.org
â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
Version 20.0.0
Contents
• 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
documentation.
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
array.
• 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
organization.
• 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
debugging.
• 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
program.
3 Repairs
• Fixed several Ruby warnings in the edge detection
logic.
• There was an infinite loop during recursive rake clean/
clobber.
• String to integer conversion was incorrect when ‘x’ or
‘z’ present in a handle’s logic value.