- Tutorial
– learn how to use Ruby-VPI quickly.
- Manual
– complete documentation for users. Start here!
- Reference
– API documentation for Ruby libraries and C extension.
- History
– record of all release notes.
- Memo
– pending tasks for future releases.
- Facilities
– issue tracker, file downloads, support requests, discussion forums, and more.
- Sources
– browse or access the Darcs source code repository.
- Talks
– slides from public presentations about Ruby-VPI.
- News
– see what’s cooking for the next release.
Welcome to Ruby-VPI
Ruby-VPI is a Ruby interface to Verilog VPI. It lets you create complex Verilog test benches easily and wholly in Ruby.
Features
- Eliminates unneccesary work:
Applications
Here is a modest sampling of tasks, paraphrased from Pin Hong, that Ruby-VPI can be used to perform.
- Writing hardware models in Ruby
- Dumping/processing netlist data from Verilog database
- Dumping/processing simulation data
- Feeding dynamic simulation stimuli
- Back-annotating delay information
- Interactive logic simulation
- Building a distributed simulation
Appetizers
Here is a modest sampling of code to whet your appetite.
- Assign the value 22048 to a register:
some_register.intVal = 2 ** 2048
- Check if all nets in a module are at high impedance:
some_module.all_net? { |net| net.z? }
- See a register’s path, width, and location (file & line number):
puts some_register
- Simulate fifteen clock cycles:
15.times { relay_verilog }