Version 17.0.0

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

RSS feed for release notifications
  • What’s new – a history of all release notes.
  • Plans – pending tasks for future releases.
  • Talks – materials from presentations and seminars.
  • Papers – research publications.
  • Motivation – why does Ruby-VPI exist?

Documentation

  • User manual – complete documentation for users. Start here!
    • 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.

Compilers

  • make – any flavor should be acceptable.
  • C compiler – the GNU Compiler Collection is preferred, but any C compiler should be acceptable.
  • 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.
  • RubyGems – any recent version should be acceptable. You can install RubyGems by following these instructions.


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@gna.org>

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 modified and unmodified copies and substantial portions of the Software (the "Derivatives") and their corresponding machine-readable source code (the "Code") must include the above copyright notice and this permission notice.

2. Upon distribution, the Derivatives must be accompanied either 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.