# \[ANN\] Ruby-VPI 16.0.0

**URL:** <https://www.ruby-forum.com/t/ann-ruby-vpi-16-0-0/103233>\
**Category:** Ruby\
**Created:** [May 3, 2007, 6:55am UTC](https://www.ruby-forum.com/t/ann-ruby-vpi-16-0-0/103233 "2007-05-03T06:55:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![snk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@snk](https://www.ruby-forum.com/u/snk)\
**Post date:** [May 3, 2007, 6:55am UTC](https://www.ruby-forum.com/t/ann-ruby-vpi-16-0-0/103233/1 "2007-05-03T06:55:46Z")

</div>

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 [http://ruby-vpi.rubyforge.org](http://ruby-vpi.rubyforge.org) for details.

â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”

Version 16.0.0 (2007-05-02)

This release adds support for the Cadence NC-Sim /  
NC-Verilog simulator, improves the project website and  
documentation, simplifies interaction with VPI, and comes  
with a more permissive license.

Caution

â€¢ The Integer.ensure\_min and Integer.ensure\_max methods  
have been removed from the ruby-vpi/integer.rb library  
because Ruby already has idioms for these operations:

```
>> 5.ensure_min 10
=> 10
>> [5, 10].max
=> 10

>> 5.ensure_max 10
=> 5
>> [5, 10].min
=> 5

```

â€¢ Ruby-VPI is now developed under a more permissive  
license that better reflects my ethical beliefs than  
the previous license.

New features

â€¢ The Cadence NC-Sim / NC-Verilog (ncsim) simulator is  
now supported.

â€¢ VPI structures (whose names begin with â€œS\_â€) now allow  
initialization of their members through their  
constructor, in the style of Ruby on Rails. For  
example, the expression time = S\_vpi\_time.new :type =\>  
VpiSuppressTime is equivalent to:

```
time = S_vpi_time.new
time.type = VpiSuppressTime

```

â€¢ Added the Vpi::Handle.cbValueChange method which  
simplifies the registration of a value-change callback  
for a particular VPI handle. For instance, the user  
manualâ€™s example of setting up a value-change callback  
can now be written as follows:

```
Counter.count.cbValueChange do |s_cb_data|
  puts "hello from callback! time=#{s_cb_data.time.to_i}

```

count=#{s\_cb\_data.obj.intVal}"  
end

Details

â€¢ Revised the project website according to the Producing  
OSS guidelines.

â€¢ Added instructions for checking out source code and  
generating documentation.
