Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Ruby interface to IEEE 1364-2005 Verilog VPI
Ruby C Verilog

This branch is 15 commits ahead of master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
doc
examples
ext
lib
test
BEYOND
CREDITS
EXAMPLES
FURTHER
Gemfile
HACKING
HISTORY
INSTALL
LICENSE
MANUAL
README
Rakefile
SYNOPSIS
THEORY
TODO
USAGE
gem_extconf.rb
inochi.conf

README

== DESCRIPTION

VPI4R is a <<Ruby>> interface to <<VPI, IEEE 1364-2005 Verilog VPI>>.  It
serves as a platform for unit testing, rapid prototyping, and systems
integration of Verilog modules through Ruby.  It was developed as part of
http://snk.tuxfamily.org/txt/masters_thesis.pdf[my masters thesis] in 2006.

=== Goals

* Create complex Verilog test benches easily and wholly in Ruby.

* Use agile software development practices to develop hardware.

=== Features

.Portable

* Works on Windows, Mac OSX, GNU/Linux, and UNIX.

* Supports all major Verilog simulators available today.

.Agile

* Allows http://www.testdriven.com[test-driven] and
  http://behaviour-driven.org[behavior-driven] development.

* Allows rapid prototyping for design exploration.

* Test bench generator accomodates design changes.

* There is _absolutely no compiling_ whatsoever!

.Powered by <<Ruby>>

* Unlimited-length integers!

* Automatic memory management (garbage collection).

* Regular expressions and text processing like Perl.

* Lambdas and closures for functional programming.

* Pure OOP with strong, dynamic typing.

* Portable multi-threading (green threads).

* Native system calls and I/O.

* Highly readable and maintainable code.

* <<ruby-debug>> for interactive debugging.

* <<rcov>> for test coverage analysis.

=== Applications

Adapted from http://www.sutherland-hdl.com/publications.html[The Verilog PLI
Handbook], second edition:

  * Bus-functional models in Ruby
  * Reading test vector files
  * Delay calculation
  * Custom output displays
  * Co-simulation
  * Design debug utilities
  * Simulation analysis

Adapted from http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/[Pin
Hong's] observations:

  * Writing hardware models in Ruby
  * Dumping or processing netlist data from Verilog database
  * Dumping or processing simulation data
  * Feeding dynamic simulation stimuli
  * Back-annotating delay information
  * Interactive logic simulation
  * Building a distributed simulation

=== Resources

Project website::
<%= @proj_home_url = VPI4R::WEBSITE %>

Announcements feed::
<%= @ann_feed_url = File.join(@proj_home_url, 'ann.xml') %>

API documentation::
<%= @api_docs_url = File.join(@proj_home_url, 'api/') %>

Source code (browse online, download, or checkout)::
<%= @code_repo_url = 'http://github.com/sunaku/vpi4r' %>

Issue tracker (report bugs, request features, get help)::
<%= @bug_track_url = File.join(@code_repo_url, 'issues') %>

Mailing list (ask questions, discuss ideas)::
http://rubyforge.org/mailman/listinfo/ruby-vpi-discuss
Something went wrong with that request. Please try again.