Version 18.0.2

Ruby-VPI

Logo of the Ruby programming language

Ruby-VPI is a platform for unit testing, rapid prototyping, and systems integration of Verilog modules through the Ruby programming language. It lets you:

Ruby-VPI is open source software released under this license.


1   Resources

Records

  • What’s new – release notes for version 18.0.2.
    • History – a record of all release notes.
    • RSS feed for release announcements RSS feed – keep track of new releases at your leisure.
  • Plans – pending tasks for future releases.
  • Talks – materials from presentations and seminars.
  • Papers – research publications.

Documentation

  • Motivation – why was Ruby-VPI developed?
  • User manual – complete documentation for users.
    • Tutorial – learn how to use Ruby-VPI quickly.
  • Reference – API documentation for Ruby libraries and C extension.

Facilities


2   Features

Portable

Agile

  • Eliminates unneccesary work:

Powerful


3   Requirements

The following software is necessary in order to use Ruby-VPI.

Verilog simulator

Ruby-VPI is known to work with the following simulators. However, you should be able to use it with any Verilog simulator that supports VPI.
  • Synopsys VCS – any version that supports the -load option is acceptable.
  • Mentor Modelsim – any version that supports the -pli option is acceptable.
  • Cadence NC-Sim – any version that supports the +loadvpi option should be acceptable. However, version 05.83-s003 is mostly acceptable because you will not be able to force values onto wires.
  • GPL Cver – version 2.11a or newer is acceptable.

Compilers

  • make – any flavor should be acceptable.
  • SWIG – version 1.3.29 or newer is necessary.
  • Ruby – version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following these instructions.

Libraries

  • POSIX threads – header and linkable object files, and operating system support for this library are necessary.


4   Applications

Examples of tasks that can be performed with Ruby-VPI are:


5   Appetizers

Here is a tiny sampling of code to whet your appetite. See the tutorial for more samples.

your_register.intVal = 2 ** 2048

your_module.all_net? { |net| net.z? }

puts your_register

your_memory.memoryWord_a[0..4]

your_memory.each_memoryWord {|w| w.intVal = 0}


6   License

Copyright 2006 Suraj N. Kurapati <SNK at GNA dot ORG>
Copyright 1999 Kazuhiro HIWADA <HIWADA at KUEE dot KYOTO-U dot AC dot JP>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

1. All copies and substantial portions of the Software, whether modified or unmodified, (the "Derivatives") and their corresponding machine-readable source code (the "Code") must include the above copyright notice and this permission notice.

2. The Derivatives, upon distribution, must be accompanied by the Code or, if the Code is obtainable for no more than the cost of distribution plus a nominal fee, by information on how to obtain the Code.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


7   Related works


7.1   Ye olde PLI

The following projects utilize the archaic tf and acc PLI interfaces, which have been officially deprecated in IEEE Std 1364-2005.