Forum: Ruby [ANN] Ruby-VPI 17.0.0

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Suraj K. (Guest)
on 2007-07-23 02:02
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.

  • See for details.


Version 17.0.0 (2007-07-22)

  This release makes the Ruby-VPI testing framework more
  lightweight by reducing the number of files and
  parameters involved.


  • The generate_test.rb and convert.rb executables have
    been replaced by a single ruby-vpi executable to avoid
    name conflicts with other software. They are now
    accessed using the

    ruby-vpi generate


    ruby-vpi convert

    commands respectively.

  • The --name parameter has been removed from the
    automated test generator. Similarly, you can no longer
    insert an arbitrary name in a test’s file names (see
    the user manual for details).

  • The DEBUG environment variable, which controls wether
    the test runner starts the interactive debugger, has
    been renamed to DEBUGGER.

    have been eliminated from test runners. The former is
    detected automatically. As for the latter, you can
    specify paths to directories in the SIMULATOR_SOURCES
    parameter instead.

  • The bench.rb and bench.v files of a generated test are
    (1) no longer generated by the test generator and (2)
    are now ignored. You must move the functionality
    provided by these files into design.rb and your Verilog
    module’s source file respectively.

  • The design.rb and proto.rb files are now loaded into a
    separate namespace (Ruby module). For example, if the
    Verilog module under test has the name “counter” and
    the design.rb file defines a class named “Foo”, then
    that class will be accessible as “Counter::Foo”.

  • The global Vpi::simulate method has been replaced by
    the cycle! method in the design.rb file.

  • The simulate! method in the proto.rb file has been
    renamed to feign! for accuracy.

  • The RubyVpi module has been renamed to RubyVPI.

  • RSpec >= 1.0.0 is now required by Ruby-VPI.

  • The project license has been further simplified.


  • Restored support for Enumerable methods in Vpi::Handle.

  • The specification now begins to execute at simulation
    time 0. Previously it began at simulation time 1.


  • The bench.rb and bench.v files of a generated test have
    been eliminated!

    One important benefit is that the Ruby interface to the
    Verilog module under test is now a direct reference,
    whereas previously it was an indirect reference (it
    pointed to the Verilog module defined in bench.v, which
    in turn wrapped around the actual Verilog module under

    As a result, you can now access the internals of the
    Verilog module under test by simply calling methods on
    the Ruby interface, as you would naturally expect to be
    the case.

  • The “a” accessor, which returns an array of child
    handles, has been added to the method naming format for
    accessing child handles.

  • All parameter objects in the Verilog module under test
    are automatically made available as constants. For
    example, if the Verilog module under test has the name
    counter and has a parameter object named WIDTH, then
    you can access the integer value of that parameter
    using Counter::WIDTH.

  • The automated test generator now tries to automatically
    detect the clock and reset signal from Verilog module

  • Exceptions are now raised when you try to write to a
    read-only VPI property, such as VpiName.

  • Added high?, high!, low?, and low! methods to the
    Vpi::Handle class.

  • Revised the user manual by removing unnecessary
    sections and adding newer material from my master’s


  • Added Jacinto Shy II’s register file example to
    Ruby-VPI. It can be found in samp/register_file/.
This topic is locked and can not be replied to.