Forum: Ruby [ANN] Ruby-VPI 18.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-08-01 09:47
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 18.0.0 (2007-07-31)

This release restores support for Synopsys VCS and Cadence
NC-Sim, improves portability and performance, and enhances
the VPI abstraction layer.


  • Calvin Wong discovered how to bypass the following
    error emitted by Synopsys VCS when loading the Ruby-VPI
    shared object file.

      Could not open library specified in -load option obj/vcs
      obj/vcs: undefined symbol: vpi_put_data


  • SWIG is now required in order to compile and install

  • Vpi::Handle.put_value no longer checks whether the
    value written matches the value read back after writing
    because that only works when there is no VPI delay
    associated with the write.

  • When Vpi::Handle.put_value is used to write a value to
    a wire (VpiNet), it now forces the value. This is done
    to ensure portability:

    Synopsys VCS and Cadence NC-Sim forget the value
    written to a wire during the next simulation time step,
    whereas Mentor Modelsim and GPL Cver remember the value
    (thereby treating wires as registers).

    Note that you have to release a forced value (using
    Vpi::Handle.release_value) on a wire after writing to
    the wire if you want the design under test have the
    ability to update the value of the wire later on:

      your_wire.intVal = 15
      advance_time # let the Verilog DUT modify your_wire

    In addition, you can check if a wire has a forced value
    using the Vpi::Handle.value_forced? method.

  • If the format is not specified, Vpi::Handle.get_value
    now assumes that you want to read the value in
    VpiIntVal format (because this is the most common

  • The definition of “Derivatives” has been reworded for
    clarity in the project license.


  • Synopsys VCS and Cadence NC-Sim simulators now
    correctly load Ruby-VPI. Also, the 64-bit versions of
    these simulators are now supported.


  • Added “force_value”, “release_value”, and
    “value_forced?” methods to the Vpi::Handle class.

  • Vpi::Handle.put_value now tries to automatically detect
    the format of the value to be written. As a result, you
    can now write your_handle.put_value 35 in lieu of
    writing your_handle.intVal = 35.

  • Vpi::Handle.inspect now shows the hexStrVal of the
    handle (because it is a common case to want to see a
    handle’s logic value along with its other information).

  • Added method caching (memoizing) for VPI property
    accesses on handles.
This topic is locked and can not be replied to.