# \[ANN\] Ruby-VPI 19.0.0

**URL:** <https://www.ruby-forum.com/t/ann-ruby-vpi-19-0-0/113149>\
**Category:** Ruby\
**Created:** [August 28, 2007, 4:33am UTC](https://www.ruby-forum.com/t/ann-ruby-vpi-19-0-0/113149 "2007-08-28T04:33:26Z")\
**Posts on this page:** 4\
**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:** [August 28, 2007, 4:33am UTC](https://www.ruby-forum.com/t/ann-ruby-vpi-19-0-0/113149/1 "2007-08-28T04:33:26Z")

</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 19.0.0 (2007-08-27)

This release restores support for Cadence NC-Sim, breaks  
support for Mentor Modelsim, adds support for concurrent  
processes which simplify implementing Ruby prototypess, and  
offers numerous other improvements.

Mentor Modelsim users, take note: this release does not  
work very well with Mentor Modelsim, so do not upgrade  
until compatibility is restored in a future release. In the  
mean time, consider using this release with another  
simulator, such as GPL Cver.

Thanks

â€¢ Calvin Wong requested the concurrent processes feature,  
helped test it, and provided useful feedback.

Caution

â€¢ Prototypes no longer have a feign! method. Instead,  
they emulate the behavior of the real Verilog DUT using  
the new concurrency model.

â€¢ All â€œinitialâ€ blocks in Verilog code are now evaluated  
before the specification begins executing. This allows  
you to set the initial value of registers in Verilog  
before the specification interacts with them.

â€¢ The Vpi module has been renamed to VPI for consistency  
with the project name.

â€¢ The VPI::simulation\_time method has been renamed to  
VPI::current\_time.

â€¢ The VPI::Handle.value\_forced? method has been renamed  
to VPI::Handle.force?

â€¢ The samp/ directory has been renamed to examples/.

â€¢ Code coverage analysis results are now produced only in  
plain-text format.

Repairs

â€¢ You can now access VPI constants using their original  
uncapitalized names. For example, you can now write  
â€œvpiIntValâ€ instead of having to write â€œVpiIntValâ€.  
However, note that the capitalized names are still  
supported, so you are not required to change your code.

â€¢ Value change / edge detection for VPI handles was  
previously incorrect: if you called the  
VPI::Handle.posedge? function twice in the same time  
step, it would give you two different answers.

â€¢ The problem of not being able to write values to nets  
in Cadence NC-Sim has been fixed.

Additions

â€¢ Added support for concurrent processes, which make Ruby  
prototypes appear more like Verilog code and also give  
the ability to write parallel tests.

â€¢ Added support for performance profiling using the  
ruby-prof project. The profiler can be enabled by  
setting the PROFILER environment variable to â€œ1â€ before  
running a Ruby-VPI test.

â€¢ Added new method aliases to VPI::Handle for value  
detection. The complete list of aliases is now:  
â–¡ Tests if the logic value of this handle is unknown (x).  
â˜† x?  
â˜† unknown?  
â˜† dont\_care?  
â–¡ Sets the logic value of this handle to unknown (x).  
â˜† x!  
â˜† unknown!  
â˜† dont\_care!  
â–¡ Tests if the logic value of this handle is high  
impedance (z).  
â˜† z?  
â˜† hi\_z?  
â˜† high\_z?  
â˜† high\_impedance?  
â˜† tri\_state?  
â˜† floating?  
â–¡ Sets the logic value of this handle to high  
impedance (z).  
â˜† z!  
â˜† hi\_z!  
â˜† high\_z!  
â˜† high\_impedance!  
â˜† tri\_state!  
â˜† floating!  
â–¡ Tests if the logic value of this handle is at  
â€œlogic highâ€ level.  
â˜† high?  
â˜† one?  
â–¡ Sets the logic value of this handle to â€œlogic highâ€  
level.  
â˜† high!  
â˜† one!  
â–¡ Tests if the logic value of this handle is at  
â€œlogic lowâ€ level.  
â˜† low?  
â˜† zero?  
â–¡ Sets the logic value of this handle to â€œlogic lowâ€  
level.  
â˜† low!  
â˜† zero!

â€¢ Added new methods to VPI::Handle for value change /  
edge detection:  
â–¡ edge? â€“ detects positive and negative edges  
â–¡ change? â€“ detects any kind of value change  
â–¡ change\_00? â€“ detects a value change from 0 to 0  
â–¡ change\_01? â€“ detects a value change from 0 to 1  
â–¡ change\_0x? â€“ detects a value change from 0 to unknown  
â–¡ change\_0z? â€“ detects a value change from 0 to high-Z  
â–¡ change\_10? â€“ detects a value change from 1 to 0  
â–¡ change\_11? â€“ detects a value change from 1 to 1  
â–¡ change\_1x? â€“ detects a value change from 1 to unknown  
â–¡ change\_1z? â€“ detects a value change from 1 to high-Z  
â–¡ change\_x0? â€“ detects a value change from unknown to 0  
â–¡ change\_x1? â€“ detects a value change from unknown to 1  
â–¡ change\_xx? â€“ detects a value change from unknown to unknown  
â–¡ change\_xz? â€“ detects a value change from unknown to high-Z  
â–¡ change\_z0? â€“ detects a value change from high-Z to 0  
â–¡ change\_z1? â€“ detects a value change from high-Z to 1  
â–¡ change\_zx? â€“ detects a value change from high-Z to unknown  
â–¡ change\_zz? â€“ detects a value change from high-Z to high-Z

---

<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:** [August 28, 2007, 3:41pm UTC](https://www.ruby-forum.com/t/ann-ruby-vpi-19-0-0/113149/2 "2007-08-28T15:41:22Z")

</div>

unsubscribe

---

<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:** [August 28, 2007, 6:01pm UTC](https://www.ruby-forum.com/t/ann-ruby-vpi-19-0-0/113149/3 "2007-08-28T18:01:30Z")

</div>

Shawn Sullivan wrote:

> unsubscribe

I don’t understand. Are you saying that (1) I should stop posting  
release announcements to ruby-talk, (2) I should stop posting anything  
to ruby-talk and unsubscribe myself, or (3) you want to unsubscribe from  
ruby-talk?

---

<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:** [August 30, 2007, 11:25pm UTC](https://www.ruby-forum.com/t/ann-ruby-vpi-19-0-0/113149/4 "2007-08-30T23:25:56Z")

</div>

Suraj K. wrote:

> Shawn Sullivan wrote:
> 
> > unsubscribe
> 
> I don’t understand. Are you saying that (1) I should stop posting  
> release announcements to ruby-talk, (2) I should stop posting anything  
> to ruby-talk and unsubscribe myself, or (3) you want to unsubscribe from  
> ruby-talk?

He must have unsubscribed. Please keep posting!
