<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link rel="stylesheet" type="text/css" href="common.css" media="screen" /> <link rel="stylesheet" type="text/css" href="print.css" media="print" /> <link rel="alternate" type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml" title="RSS feed for this project." /> <title>Release history</title> </head> <body> <div id="site-links"> <a href="readme.html">Home</a> · <a href="manual.html">Manual</a> · <a href="memo.html">Memo</a> · <a href="history.html">History</a> <hr style="display: none"/> </div> <div id="toc-links"> <a href="#toc:contents">Contents</a> </div> <div id="body"> <hr style="display: none"/> <div id="Release_history" class="front_cover"> <h1 class="title"><big>Release history</big></h1> <p>This is a record of important changes that have occurred with each release.</p> <p> <div id="Version_numbering_system" class="paragraph"> <p class="title">Version numbering system</p> Ruby-VPI uses the <a href="http://www.rubygems.org/read/chapter/7">RubyGems rational versioning policy</a> to number its releases. This “major.minor.build” numbering policy <a href="http://ablog.apress.com/?p=738">is summarized</a> as follows. <ul> <li>When the <strong>major</strong> number increases, functionally <em>incompatible changes</em> have occurred. Thus, what may have worked in the previous version may not work in the new one.</li> </ul> <ul> <li>When the <strong>minor</strong> number increases, functionally <em>compatible changes</em> have occurred. Thus, what worked in the previous version will work in the new one.</li> </ul> <ul> <li>When the <strong>build</strong> number increases, the <em>underlying implementation</em> has changed. The functionality has not changed and no features have been added. Thus, what worked in the previous version will work in the new one.</li> </ul> </div> </p> </div> <hr style="display: none"/> <div id="a18.0.0" class="section"> <h1 class="title"> <a href="#a-607182658">2</a> Version 18.0.0 (2007-07-31) </h1> <p>This release restores support for Synopsys VCS and Cadence NC-Sim, improves portability and performance, and enhances the VPI abstraction layer.</p> <h2>Thanks</h2> <ul> <li>Calvin Wong discovered <a href="http://rubyforge.org/forum/message.php?msg_id=25691">how to bypass the following error</a> emitted by Synopsys VCS when loading the Ruby-VPI shared object file. <pre> Could not open library specified in -load option obj/vcs obj/vcs: undefined symbol: vpi_put_data </pre></li> </ul> <h2>Caution</h2> <ul> <li><a href="http://www.swig.org/">SWIG</a> is now required in order to compile and install Ruby-VPI.</li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> no longer checks whether the value written matches the value read back after writing because that only works when there is no VPI delay associated with the write.</li> </ul> <ul> <li>When <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> is used to write a value to a wire (VpiNet), it now <em>forces</em> the value. This is done to ensure portability: <p>Synopsys VCS and Cadence NC-Sim forget the value written to a wire during the next simulation time step, whereas Mentor Modelsim and GPL Cver remember the value (thereby treating wires as registers).</p> <p>Note that you have to release a forced value (using <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.release_value</code>) on a wire after writing to the wire if you want the design under test have the ability to update the value of the wire later on:</p> <pre class="code"> your_wire.intVal = <span style="color:#00D; font-weight:bold">15</span> your_wire.release_value advance_time <span style="color:#888"># let the Verilog DUT modify your_wire</span> </pre> <p>In addition, you can check if a wire has a forced value using the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.value_forced?</code> method.</p></li> </ul> <ul> <li>If the format is not specified, <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.get_value</code> now assumes that you want to read the value in VpiIntVal format (because this is the most common case).</li> </ul> <ul> <li>The definition of “Derivatives” has been reworded for clarity in the <a href="readme.html#intro.license">project license</a>.</li> </ul> <h2>Repairs</h2> <ul> <li>Synopsys VCS and Cadence NC-Sim simulators now correctly load Ruby-VPI. Also, the 64-bit versions of these simulators are now supported.</li> </ul> <h2>Improvements</h2> <ul> <li>Added “force_value”, “release_value”, and “value_forced?” methods to the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code> class.</li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> now tries to automatically detect the format of the value to be written. As a result, you can now write <code class="code">your_handle.put_value <span style="color:#00D; font-weight:bold">35</span></code> in lieu of writing <code class="code">your_handle.intVal = <span style="color:#00D; font-weight:bold">35</span></code>.</li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.inspect</code> now shows the hexStrVal of the handle (because it is a common case to want to see a handle’s logic value along with its other information).</li> </ul> <ul> <li>Added method caching (memoizing) for VPI property accesses on handles.</li> </ul> </div> <hr style="display: none"/> <div id="a17.0.0" class="section"> <h1 class="title"> <a href="#a-607186018">3</a> Version 17.0.0 (2007-07-22) </h1> <p>This release makes the Ruby-VPI testing framework more lightweight by reducing the number of files and parameters involved.</p> <h2>Caution</h2> <ul> <li>The <strong>generate_test.rb</strong> and <strong>convert.rb</strong> executables have been replaced by a single <strong>ruby-vpi</strong> executable to avoid name conflicts with other software. They are now accessed using the <pre>ruby-vpi generate</pre> and <pre>ruby-vpi convert</pre> commands respectively.</li> </ul> <ul> <li>The <tt>--name</tt> parameter has been removed from the automated test generator. Similarly, you can no longer insert an arbitrary name in a test’s file names (see the <a href="manual.html#Do_not_rename_generated_files">user manual</a> for details).</li> </ul> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">DEBUG</span></code> environment variable, which controls wether the test runner starts the interactive debugger, has been renamed to <code class="code"><span style="color:#036; font-weight:bold">DEBUGGER</span></code>.</li> </ul> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_TARGET</span></code> and <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_INCLUDES</span></code> parameters have been eliminated from test runners. The former is detected automatically. As for the latter, you can specify paths to directories in the <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_SOURCES</span></code> parameter instead.</li> </ul> <ul> <li>The <tt>bench.rb</tt> and <tt>bench.v</tt> files of a generated test are (1) no longer generated by the test generator and (2) are now ignored. You must move the functionality provided by these files into <tt>design.rb</tt> and your Verilog module’s source file respectively.</li> </ul> <ul> <li>The <tt>design.rb</tt> and <tt>proto.rb</tt> files are now loaded into a separate namespace (Ruby module). For example, if the Verilog module under test has the name “counter” and the <tt>design.rb</tt> file defines a class named “Foo”, then that class will be accessible as “Counter::Foo”.</li> </ul> <ul> <li>The global <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::simulate</code> method has been replaced by the <code class="code">cycle!</code> method in the <tt>design.rb</tt> file.</li> </ul> <ul> <li>The <code class="code">simulate!</code> method in the <tt>proto.rb</tt> file has been renamed to <code class="code">feign!</code> for accuracy.</li> </ul> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">RubyVpi</span></code> module has been renamed to <code class="code"><span style="color:#036; font-weight:bold">RubyVPI</span></code>.</li> </ul> <ul> <li>RSpec >= 1.0.0 is now required by Ruby-VPI.</li> </ul> <ul> <li>The <a href="readme.html#intro.license">project license</a> has been further simplified.</li> </ul> <h2>Repairs</h2> <ul> <li>Restored support for Enumerable methods in <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code>.</li> </ul> <ul> <li>The specification now begins to execute at simulation time 0. Previously it began at simulation time 1.</li> </ul> <h2>Improvements</h2> <ul> <li>The <tt>bench.rb</tt> and <tt>bench.v</tt> files of a generated test have been eliminated! <p>One important benefit is that the Ruby interface to the Verilog module under test is now a direct reference, whereas previously it was an <em>indirect</em> reference (it pointed to the Verilog module defined in <tt>bench.v</tt>, which in turn wrapped around the actual Verilog module under test).</p> <p>As a result, you can now access the internals of the Verilog module under test by simply calling methods on the Ruby interface, as you would naturally expect to be the case.</p></li> </ul> <ul> <li>The “a” accessor, which returns an <em>array</em> of child handles, has been added to <a href="manual.html#tbl:accessors">the method naming format</a> for accessing child handles.</li> </ul> <ul> <li>All parameter objects in the Verilog module under test are automatically made available as constants. For example, if the Verilog module under test has the name <code class="code">counter</code> and has a parameter object named <code class="code"><span style="color:#036; font-weight:bold">WIDTH</span></code>, then you can access the integer value of that parameter using <code class="code"><span style="color:#036; font-weight:bold">Counter</span>::<span style="color:#036; font-weight:bold">WIDTH</span></code>.</li> </ul> <ul> <li>The automated test generator now tries to automatically detect the clock and reset signal from Verilog module declarations.</li> </ul> <ul> <li>The automated test generator now supports Verilog 95 style module declarations.</li> </ul> <ul> <li>Exceptions are now raised when you try to write to a read-only VPI property, such as <code class="code"><span style="color:#036; font-weight:bold">VpiName</span></code>.</li> </ul> <ul> <li>Added <code class="code">high?</code>, <code class="code">high!</code>, <code class="code">low?</code>, and <code class="code">low!</code> methods to the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code> class.</li> </ul> <ul> <li>Revised the user manual by removing unnecessary sections and adding newer material from my master’s thesis.</li> </ul> <h2>Contributions</h2> <ul> <li>Added Jacinto Shy II’s <a href="http://jacintoshy.blogspot.com/2007/05/hacking-verilog-with-ruby-part-2.html">register file example</a> to Ruby-VPI. It can be found in <tt>samp/register_file/</tt>.</li> </ul> </div> <hr style="display: none"/> <div id="a16.0.1" class="section"> <h1 class="title"> <a href="#a-607188328">4</a> Version 16.0.1 (2007-05-27) </h1> This release restores support for installation on Mac <span class="caps">OS X</span>. <h2>Thanks</h2> <ul> <li>Mark Thompson <a href="http://rubyforge.org/tracker/index.php?func=detail&aid=11125&group_id=1339&atid=5281">reported and solved</a> the problem.</li> </ul> <h2>Repairs</h2> <ul> <li>Shared-object files have a file extension of <tt>.so</tt> in Linux and <tt>.bundle</tt> on Mac <span class="caps">OS X</span>. Previously, only the Linux file extension was supported.</li> </ul> </div> <hr style="display: none"/> <div id="a16.0.0" class="section"> <h1 class="title"> <a href="#a-607191278">5</a> Version 16.0.0 (2007-05-02) </h1> This release adds support for the <a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a> simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license. <h2>Caution</h2> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">Integer</span>.ensure_min</code> and <code class="code"><span style="color:#036; font-weight:bold">Integer</span>.ensure_max</code> methods have been removed from the <tt>ruby-vpi/integer.rb</tt> library because Ruby already has idioms for these operations: <pre> >> 5.ensure_min 10 => 10 >> [5, 10].max => 10 >> 5.ensure_max 10 => 5 >> [5, 10].min => 5 </pre></li> </ul> <ul> <li>Ruby-VPI is now developed under a <a href="readme.html#intro.license">more permissive license</a> that better reflects my ethical beliefs than <a href="http://www.gnu.org/copyleft/gpl.html">the previous license</a>.</li> </ul> <h2>New features</h2> <ul> <li>The <a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a> (ncsim) simulator is now supported.</li> </ul> <ul> <li>VPI structures (whose names begin with “S_”) now allow initialization of their members through their constructor, in the style of Ruby on Rails. For example, the expression <code class="code">time = <span style="color:#036; font-weight:bold">S_vpi_time</span>.new <span style="color:#A60">:type</span> => <span style="color:#036; font-weight:bold">VpiSuppressTime</span></code> is equivalent to: <pre class="code"> time = <span style="color:#036; font-weight:bold">S_vpi_time</span>.new time.type = <span style="color:#036; font-weight:bold">VpiSuppressTime</span> </pre></li> </ul> <ul> <li>Added the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.cbValueChange</code> method which simplifies the registration of a value-change callback for a particular VPI handle. For instance, the user manual’s <a href="manual.html#ex..callback">example of setting up a value-change callback</a> can now be written as follows: <pre class="code"> <span style="color:#036; font-weight:bold">Counter</span>.count.cbValueChange <span style="color:#080; font-weight:bold">do</span> |s_cb_data| puts <span style="background-color:#fff0f0"><span style="color:#710">"</span><span style="color:#D20">hello from callback! time=</span><span style="background: #eee"><span style="font-weight: bold; color: #888">#{</span>s_cb_data.time.to_i<span style="font-weight: bold; color: #888">}</span></span><span style="color:#D20"> count=</span><span style="background: #eee"><span style="font-weight: bold; color: #888">#{</span>s_cb_data.obj.intVal<span style="font-weight: bold; color: #888">}</span></span><span style="color:#710">"</span></span> <span style="color:#080; font-weight:bold">end</span> </pre></li> </ul> <h2>Details</h2> <ul> <li>Revised the project website according to the <a href="http://producingoss.com">Producing OSS</a> guidelines.</li> </ul> <ul> <li>Added instructions for checking out source code and generating documentation.</li> </ul> </div> <hr style="display: none"/> <div id="a15.0.2" class="section"> <h1 class="title"> <a href="#a-607193568">6</a> Version 15.0.2 (2007-01-22) </h1> This release fixes problems with linking of the C extension and installation of the gem. <h2>Details</h2> <ul> <li>Added checks for POSIX threads & Ruby libraries before creating makefile. Otherwise the <tt>.so</tt> files were not being linked to those libraries on the MASC machine!</li> </ul> <ul> <li>The <strong>make</strong> program on the MASC machine does not like an empty Makefile. It was causing gem installation to fail.</li> </ul> </div> <hr style="display: none"/> <div id="a15.0.1" class="section"> <h1 class="title"> <a href="#a-607195998">7</a> Version 15.0.1 (2007-01-15) </h1> This release fixes another problem with compilation of the C extension and improves the user documentation’s appearance. <h2>Thanks</h2> <ul> <li>Derek Graham reported the problem with compilation of the C extension.</li> </ul> <h2>Details</h2> <ul> <li>Restored the monkey patch, which was removed in release 14.0.0, for the SWIG <code class="code">va_list</code> problem.</li> </ul> <ul> <li>Made table of contents in-line with the content in user documentation.</li> </ul> <ul> <li>Added printer-friendly stylesheet for user documentation.</li> </ul> </div> <hr style="display: none"/> <div id="a15.0.0" class="section"> <h1 class="title"> <a href="#a-607198768">8</a> Version 15.0.0 (2007-01-13) </h1> <p>This release fixes a problem with compilation of the C extension, and makes clock generation code correctly affect Ruby prototypes.</p> <h2>Thanks</h2> <ul> <li>Derek Graham reported the problem with compilation of the C extension.</li> </ul> <h2>Caution</h2> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::advance_time</code> method (instead of the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::simulate</code> method) now invokes the design’s <code class="code">simulate!</code> method when prototyping is enabled. <p>This makes clock generation code (passed to the <code class="code"><span style="color:#036; font-weight:bold">RubyVpi</span>::init_bench</code> method) affect Ruby prototypes, just as it affects a real Verilog design.</p> <p>As a result, Ruby prototypes may need to check for edge-triggering through the new <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.posedge?</code> and <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.negedge?</code> methods. For example, see the <a href="manual.html#fig..counter_proto.rb">new implementation of the Counter prototype</a>.</p></li> </ul> <h3>New features</h3> <ul> <li>Added <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.posedge?</code> and <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.negedge?</code> methods which check if a handle’s logic value is currently at a positive or negative edge, respectively.</li> </ul> <ul> <li>Added <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">S_vpi_time</span>.integer</code> and <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">S_vpi_time</span>.integer=</code> methods which access the <code class="code">high</code> and <code class="code">low</code> integer fields as a single 64-bit integer.</li> </ul> <ul> <li>Added utility methods for accessing the <code class="code">value</code> field in the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">S_vpi_value</span></code> structure.</li> </ul> <h2>Details</h2> <ul> <li>Fixed problem with incorrect Ruby library flag in <tt>ext/extconf.rb</tt>. It happens that the <code class="code">mkmf</code> library determines the correct library flag all by itself!</li> </ul> <ul> <li>Added new <a href="manual.html#usage.prototyping">prototyping section</a> to user manual.</li> </ul> <ul> <li>Fixed some broken URLs in user documentation.</li> </ul> </div> <hr style="display: none"/> <div id="a14.0.0" class="section"> <h1 class="title"> <a href="#a-607201618">9</a> Version 14.0.0 (2006-12-30) </h1> This release adds support for simulation callbacks, renders Verilog benches <em>fully simplified</em>, and revises the user manual to reflect major changes. <h2>Caution</h2> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::relay_verilog</code> method has been replaced by <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::simulate</code>. <p>Please update you tests accordingly, because invoking the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::relay_verilog</code> method directly will cause your tests to freeze/hang.</p></li> </ul> <ul> <li>Verilog benches no longer contain any clock generation code. They are now mere skeletons, whose <em>only</em> purpose is to instantiate the design under test. <p>The clock generation code is now contained in the Ruby bench.</p></li> </ul> <h3>New features</h3> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">RubyVpi</span>::init_bench</code> method now gives you <em>complete control</em> over performing a clock/operation/whatever cycle for your design. This feature allows you to work with multi-clocked designs.</li> </ul> <ul> <li>Callbacks are now supported through the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::vpi_register_cb</code> method. See <a href="manual.html#usage.vpi.callbacks">the callbacks section in the user manual</a> for details.</li> </ul> <ul> <li>Added the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::advance_time</code> method, which makes the Verilog simulator simulate a given number of time steps.</li> </ul> <ul> <li>Added the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::simulation_time</code> method, which gives you the current simulation time as a 64-bit integer.</li> </ul> <h2>Details</h2> <ul> <li>Removed the monkey patch for the SWIG <code class="code">va_list</code> problem—it no longer occurs.</li> </ul> <ul> <li>Cleansed the appearance of the user documentation. <ul> <li>Added indices to section headings, just like LaTeX.</li> <li>Admonition boxes no longer interfere with surrounding text, and they don’t have big gap above them.</li> <li>Navigation menu is now elastic (fluid layout).</li> </ul></li> </ul> <ul> <li>Revised the user manual and added new content. <ul> <li>Moved “VPI utility layer” section from background chapter into usage chapter in user manual.</li> <li>Added a nice introduction to entire manual with links to reference documentation.</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a13.0.0" class="section"> <h1 class="title"> <a href="#a-607204228">10</a> Version 13.0.0 (2006-12-27) </h1> This release fixes a <em>major</em> instability bug, simplifies generated Verilog benches, and purifies the API reference documentation. <h2>Caution</h2> <ul> <li>The <code class="code"><span style="color:#d70; font-weight:bold">$ruby_init</span></code> and <code class="code"><span style="color:#d70; font-weight:bold">$ruby_relay</span></code> system task/functions have been removed. Generated Verilog benches no longer use them. <ul> <li>To pass your own command-line options to Ruby, set the <code class="code"><span style="color:#036; font-weight:bold">RUBYOPT</span></code> environment variable before running a test.</li> </ul></li> </ul> <h3>New features</h3> <ul> <li>You can now choose when <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::relay_verilog</code> is triggered: upon positive/negative edge of the clock signal, or any other criteria. This is done by passing a block to the <code class="code"><span style="color:#036; font-weight:bold">RubyVpi</span>::init_bench</code> method (see <a href="../ref/ruby/classes/RubyVpi.html">the API reference documentation</a> for details).</li> </ul> <h2>Details</h2> <ul> <li>Fixed a major instability bug that was randomly causing segmentation faults and pthread assertion failures. <p>The problem was that the <code class="code"><span style="color:#d70; font-weight:bold">$ruby_init</span></code> system task/function was mischeviously unlocking a pthread mutex. From then onward, all code assumed that the mutex was still locked—but in reality, the mutex was already unlocked.</p></li> </ul> <ul> <li>Replaced the <code class="code"><span style="color:#d70; font-weight:bold">$ruby_init</span></code> and <code class="code"><span style="color:#d70; font-weight:bold">$ruby_relay</span></code> system task/functions with callbacks.</li> </ul> <ul> <li>Excluded internal stuff from the API reference documentation for Ruby.</li> </ul> <ul> <li>Removed system-dependent path <tt>/usr/bin/ruby</tt> from the tools.</li> </ul> </div> <hr style="display: none"/> <div id="a12.1.0" class="section"> <h1 class="title"> <a href="#a-607206878">11</a> Version 12.1.0 (2006-12-22) </h1> This release adds interactive debugging support, adds new sections to the user manual, and cleanses some internals. <h2>Caution</h2> <ul> <li>The <tt>lib/ruby-vpi/rspec.rb</tt> and <tt>lib/ruby-vpi/xx.rb</tt> files have been removed because they are no longer necessary.</li> </ul> <ul> <li>rSpec 0.7.0 or newer is now required because the sample tests utilize the <code class="code">should ==</code> syntax.</li> </ul> <h3>New features</h3> <ul> <li>Test runners now support the <code class="code"><span style="color:#036; font-weight:bold">DEBUG</span></code> environment variable, which enables the interactive debugger (ruby-debug) in <a href="http://www.datanoise.com/articles/2006/12/20/post-mortem-debugging">post-mortem debugging mode</a>. <ul> <li>The <code class="code">debugger</code> command can also be used when the <code class="code"><span style="color:#036; font-weight:bold">DEBUG</span></code> environment variable is not activated.</li> </ul></li> </ul> <ul> <li>Status messages, which are shown during initialization of a Ruby bench, now appear in your simulator’s log files.</li> </ul> <h2>Details</h2> <ul> <li>ruby-debug is now a gem dependency for Ruby-VPI.</li> </ul> <ul> <li>Added documentation about <a href="manual.html#usage.test-runner">test runners</a> and the <a href="manual.html#usage.debugger">interactive debugger</a> in the user manual.</li> </ul> <ul> <li>Added a <tt>README</tt> file with hint about where to find the user manual.</li> </ul> <ul> <li>Removed code that wasn’t being used, according to code coverage analysis, from the pipelined ALU sample.</li> </ul> </div> <hr style="display: none"/> <div id="a12.0.2" class="section"> <h1 class="title"> <a href="#a-607209028">12</a> Version 12.0.2 (2006-12-18) </h1> This release fixes a problem in the 12.0.1 gem, where the <strong>generate_test.rb</strong> and <strong>header_to_ruby.rb</strong> tools were not being installed properly. </div> <hr style="display: none"/> <div id="a12.0.1" class="section"> <h1 class="title"> <a href="#a-607211418">13</a> Version 12.0.1 (2006-12-18) </h1> <p>This release fixes a problem in code coverage analysis.</p> <h2>Thanks</h2> <ul> <li>Mauricio Fernandez helped me solve the problem with code coverage analysis.</li> </ul> <h2>Details</h2> <p>Previously, code coverage reports were not providing any useful information because they were being generated <em>before</em> the test had a chance to run. This problem has been fixed—code coverage reports are now generated <em>after</em> the test has finished running.</p> <p>This problem occurred because I had forgotten that <code class="code"><span style="color:#036; font-weight:bold">Kernel</span>.at_exit</code> invokes the blocks passed to it in <em>reverse</em> order. So, the coverage report was being generated before Test::Unit had a chance to run (it also uses <code class="code"><span style="color:#036; font-weight:bold">Kernel</span>.at_exit</code>).</p> </div> <hr style="display: none"/> <div id="a12.0.0" class="section"> <h1 class="title"> <a href="#a-607214448">14</a> Version 12.0.0 (2006-12-07) </h1> This release adds support for the <a href="http://chneukirchen.org/blog/archive/2006/10/announcing-test-spec-0-2-a-bdd-interface-for-test-unit.html">test/spec</a> library, fixes some bugs, and improves the user manual and generated tests. <h2>Caution</h2> <ul> <li>Icarus Verilog 0.8 has been demoted to a <a href="manual.html#setup.reqs">mostly acceptable</a> status.</li> </ul> <ul> <li>Generated Verilog benches no longer supply the <tt>-w</tt> option to the <code class="code"><span style="color:#d70; font-weight:bold">$ruby_init</span></code> task.</li> </ul> <ul> <li>The <code class="code">ruby-vpi/runner_proxy</code> library now invokes test runners <ul> <li>just before exiting. Thus, you can invoke tasks in the main <tt>Rakefile</tt> before the test runners are invoked.</li> <li>located within any directory that is a descendant of the current working directory.</li> </ul></li> </ul> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_ARGS</span></code> parameter of generated runners has been renamed to <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_ARGUMENTS</span></code> for clarity.</li> </ul> <ul> <li>The automated test generator <ul> <li>no longer displays the <strong>backup</strong> status indicator.</li> <li>now supplies a third argument to the <code class="code"><span style="color:#036; font-weight:bold">MERGER</span></code> command.</li> <li>no longer replaces existing files with newly generated content during the <strong>update</strong> action. Instead, it now writes the newly generated output to a <tt>.new</tt> file and then invokes the <code class="code"><span style="color:#036; font-weight:bold">MERGER</span></code> command.</li> </ul></li> </ul> <h2>Details</h2> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code> class has two new methods: <code class="code">x!</code> and <code class="code">z!</code>, which set the handle’s logic value to <em>unknown</em> and <em>high impedance</em> respectively.</li> </ul> <ul> <li>The tests for the simple up-counter example were randomly failing because the specifications were not asserting the design’s <code class="code">reset</code> signal long enough. So the design was getting into weird states and behaving in a non-deterministic way. This problem has been fixed.</li> </ul> <ul> <li>The user manual has been revised and some minor issues have been fixed.</li> </ul> <h3>Test generation</h3> <ul> <li>The automated test generator accepts new command-line options: <ul> <li><tt>--test-unit</tt></li> <li><tt>--test-spec</tt></li> <li><tt>--tspec</tt></li> </ul></li> </ul> <ul> <li>The automated test generator was crashing when parsing module parameters of an input file which did not have any module parameters. This has been fixed.</li> </ul> <ul> <li>Generated Verilog benches now contain simpler clock generation code.</li> </ul> <ul> <li>Generated runners now contain <ul> <li>a <code class="code"><span style="color:#A60">:setup</span></code> task which is invoked before the simulator runs. It can be used to make preprations, such as converting Verilog header files into Ruby, for the simulation.</li> <li>better explanations to accomodate new users.</li> </ul></li> </ul> <ul> <li>Specifications generated in the <strong>generic</strong> format no longer contain a class that is instantiated in the generated Ruby bench.</li> </ul> </div> <hr style="display: none"/> <div id="a11.1.1" class="section"> <h1 class="title"> <a href="#a-607216938">15</a> Version 11.1.1 (2006-11-15) </h1> This release fixes a bug in the automated test generator, unifies the user manual and the website into a single documentation system, and adds support for rSpec 0.7.2. <h2>Thanks</h2> <ul> <li>John Burr found the bug in the automated test generator.</li> </ul> <h2>Caution</h2> <ul> <li>The user manual is now available <em>only</em> in HTML format. If you still wish to have a plain-text version, you can use a text-based browser, such as <a href="http://lynx.browser.org/">lynx</a>, to perform the necessary conversion.</li> </ul> <h2>Details</h2> <ul> <li>The automated test generator no longer crashes when parsing a Verilog module declaration that contains multiple module parameters.</li> </ul> <ul> <li>The user manual and the website are now written using a custom documentation system based on RedCloth and ERB instead of DocBook-XML. This makes it easier to edit the user manual and reuse its content in other areas of the website.</li> </ul> </div> <hr style="display: none"/> <div id="a11.1.0" class="section"> <h1 class="title"> <a href="#a-607219728">16</a> Version 11.1.0 (2006-11-08) </h1> This release fixes a bug in generated benches, improves the <a href="../ref/ruby/classes/Vpi/Handle.html">the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code> class</a>, and improves performance by roughly 20%. <h2>Thanks</h2> <ul> <li>Matt Fischler found the bug in generated benches (see below).</li> </ul> <h2>Caution</h2> <ul> <li>A bug in generated Verilog and Ruby benches, which caused the <pre>ruby: no such file to load -- ruby-vpi (LoadError)</pre> error, has been fixed. Please regenerate your tests to apply this bug fix to your tests.</li> </ul> <h2>Details</h2> <ul> <li>The class <code class="code"><span style="color:#036; font-weight:bold">SWIG</span>::<span style="color:#036; font-weight:bold">TYPE_p_unsigned_int</span></code> has been aliased as <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code> for easier access.</li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.to_s</code> and <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.inspect</code> now produce more informative output. For example, what used to appear as <pre>#<SWIG::TYPE_p_unsigned_int:0x2aaab6574fa0></pre> now appears as <pre>#<Vpi::Handle vpiModule fullName=counter_rspec_bench, size=-1, file=counter_rspec_bench.v, lineNo=2></pre> in this release. <ul> <li>You can also provide a list of VPI properties, as names or integer constants, to those methods to see additional information in the output.</li> </ul></li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code> now implements all methods from <code class="code"><span style="color:#036; font-weight:bold">Enumerable</span></code>, such as <code class="code">map</code>, <code class="code">each</code>, <code class="code">select</code>, and so on. However, unlike their counterparts in <code class="code"><span style="color:#036; font-weight:bold">Enumerable</span></code>, these methods also accept a list of VPI properties, as names or integer constants. Thus, you are now able to write <code class="code">handle.select(<span style="color:#A60">:reg</span>, <span style="color:#A60">:net</span>) {|h| h.size > <span style="color:#00D; font-weight:bold">5</span>}</code> to obtain a list of child handles to registers and nets whose capacity is greater than 5 bits.</li> </ul> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.[]</code>, <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.get_value</code>, and <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> methods now accept names of VPI properties as well as their integer constants. Thus, you are now able to write <code class="code">handle[<span style="color:#A60">:reg</span>, <span style="color:#A60">:net</span>]</code> to obtain a list of handles to all child registers and nets.</li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.method_missing</code> has been refactored to cache queries. There is now, approximately, 20% improvement in performance.</li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.method_missing</code> has been fixed to accept operations with multiple underscores. For example, before this release, you could not write <code class="code">handle.find_all_reg {|r| r.name =~ <span style="background-color:#fff0ff"><span style="color:#404">/</span><span style="color:#808">foo</span><span style="color:#404">/</span></span>}</code> because the “find_all_reg” method would be interpreted as the operation “find” and the VPI property “all_reg”.</li> </ul> <ul> <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.method_missing</code> no longer requires that the first letter of a method be lower case. For example, now you can now write <code class="code">handle.<span style="color:#036; font-weight:bold">IntVal</span></code> in addition to <code class="code">handle.intVal</code>.</li> </ul> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">IntegerGenerator</span></code> class, in the pipelined ALU example, has been fixed so that multiple instances do not interfere with the generation of each other’s prime integers.</li> </ul> <ul> <li>Due to a bug in the <tt>Rakefile</tt>, the reference documentation was not included in the previous few releases. This has been fixed.</li> </ul> </div> <hr style="display: none"/> <div id="a11.0.0" class="section"> <h1 class="title"> <a href="#a-607222378">17</a> Version 11.0.0 (2006-11-05) </h1> This release shortens generated Ruby benches and uses the less confusing notation for defining <a href="http://wiki.rubygarden.org/Ruby/page/show/SingletonTutorial">singleton methods</a> in generated designs and prototypes. <h2>Caution</h2> <ul> <li>The arguments for the <a href="../ref/ruby/classes/RubyVpi.html"><code class="code"><span style="color:#036; font-weight:bold">RubyVPI</span>.init_bench</code> method</a> have changed.</li> </ul> <ul> <li><strong>generate_test.rb</strong> no longer emits undocumented status indicators: <em>name</em> and <em>format</em>.</li> </ul> <ul> <li>The source code is no longer distributed as a <strong>zip</strong> package, because it seems to be quite underutilized in comparison to the <strong>tgz</strong> and <strong>gem</strong> packages.</li> </ul> <h2>Details</h2> <ul> <li>Generated Ruby benches have been shortened to just <em>one</em> line of code!</li> </ul> <ul> <li>The less confusing notation of <pre class="code"><span style="color:#080; font-weight:bold">def</span> some_object.a_singleton_method do_stuff <span style="color:#080; font-weight:bold">end</span></pre> is now used instead of the <pre class="code"><span style="color:#080; font-weight:bold">class</span> << <span style="color:#B06; font-weight:bold">some_object</span> <span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">a_singleton_method</span> do_stuff <span style="color:#080; font-weight:bold">end</span> <span style="color:#080; font-weight:bold">end</span></pre> notation. <ul> <li>The tutorial and examples have been updated accordingly.</li> </ul></li> </ul> <ul> <li>The pipelined ALU example now has an updated <code class="code"><span style="color:#036; font-weight:bold">IntegerGenerator</span></code> class.</li> </ul> </div> <hr style="display: none"/> <div id="a10.0.0" class="section"> <h1 class="title"> <a href="#a-607225288">18</a> Version 10.0.0 (2006-11-05) </h1> This release adds the ability to access a handle’s children and reduces the amount of code produced by the automated test generator. <h2>Thanks</h2> <ul> <li>Matt Fischler found the problem of misdirected compilation errors in Verilog benches.</li> </ul> <h2>Caution</h2> <ul> <li>The way in which Ruby-VPI and generated tests interact has changed: the design is now a VPI handle object and the <tt>design.rb</tt> and <tt>proto.rb</tt> files define <a href="http://wiki.rubygarden.org/Ruby/page/show/SingletonTutorial">singleton methods</a> for that object. <ul> <li>I suggest that you regenerate your existing tests (just run <strong>generate_test.rb</strong> again) whilst employing the service of a text merging tool (see the user manual).</li> </ul></li> </ul> <ul> <li>You can now access a handle’s children by simply calling methods on it. In the event that a child handle has the same name as a VPI property, the child is given priority. However, you can always access VPI properties explicitly via the <code class="code">get_value</code> and <code class="code">put_value</code> methods.</li> </ul> <ul> <li><strong>generate_test.rb</strong> no longer accepts the <pre>-s</pre> and <pre>-u</pre> options. Use their longer counterparts <pre>--rspec</pre> and <pre>--xunit</pre> instead.</li> </ul> <h2>Details</h2> <h3>Automated test generator</h3> <ul> <li>Generated Verilog benches no longer divert compilation errors from Verilog design files. That is, if the Verilog simulator finds compilation errors in a Verilog design file, it will report that the Verilog design file is at fault (instead of reporting that the generated Verilog bench is at fault).</li> </ul> <ul> <li>The user is now notified when a backup of an existing file is made.</li> </ul> <ul> <li>Generated tests have been greatly simplified to reduce the amount of work for the user. <ul> <li>The design is now just a handle to the module in the Verilog bench.</li> <li><code class="code">include <span style="color:#036; font-weight:bold">Vpi</span></code> and <code class="code"><span style="color:#33B">@design</span></code> are no longer generated.</li> <li>The tutorial and examples have been updated accordingly.</li> </ul></li> </ul> <h3>User manual</h3> <ul> <li>Revised the stylesheet to make disjoint sections readily distinguishable from each other, through generous spacing and minor coloring.</li> </ul> <ul> <li>Added tips about <tt>ruby-vpi/runner_proxy</tt>, <pre>rake -T</pre>, and using <strong>kdiff3</strong> with <strong>generate_test.rb</strong>.</li> </ul> <ul> <li>Moved installation information into a new “setup” chapter.</li> </ul> </div> <hr style="display: none"/> <div id="a9.0.0" class="section"> <h1 class="title"> <a href="#a-607228078">19</a> Version 9.0.0 (2006-10-28) </h1> This release improves the automated test generator and adds new content to the user manual. <h2>Thanks</h2> <ul> <li>Matt Fischler helped test and debug the installation of Ruby-VPI on Windows.</li> </ul> <h2>Caution</h2> <ul> <li>The command-line options for <strong>generate_test.rb</strong> have changed. Run the command <pre>generate_test.rb --help</pre> for details.</li> </ul> <h2>Details</h2> <ul> <li>Test runners now attempt to resolve paths in <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_SOURCES</span></code> by searching for them within the directories specified in <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_INCLUDES</span></code>.</li> </ul> <ul> <li>Synopsys VCS is now used in a better way (via the <pre>-load</pre> option). <ul> <li>The old PLI table file (<tt>synopsys_vcs.tab</tt>) has been removed.</li> <li>The C extension has been revised accordingly.</li> </ul></li> </ul> <ul> <li>The C extension now compiles without errors in Cygwin.</li> </ul> <ul> <li>The automated test generator now: <ul> <li>Only creates output files when necessary.</li> <li>Updates existing output files using <a href="manual.html#setup.recom">text merging tools</a> if possible. (Refer to <code class="code"><span style="color:#036; font-weight:bold">MERGER</span></code> in the help information of <strong>generate_test.rb</strong>.)</li> <li>Emits progress information similar to Ruby on Rails.</li> </ul></li> </ul> <ul> <li>The user manual now: <ul> <li>Includes instructions for installing on Windows (via Cygwin).</li> <li>Has a recommended software section, with links to text merging tools.</li> <li>Uses the term <a href="http://en.wikipedia.org/wiki/XUnit">xUnit</a> instead of “unit test”.</li> <li>Correctly spells “rSpec”.</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a8.2.0" class="section"> <h1 class="title"> <a href="#a-607230568">20</a> Version 8.2.0 (2006-10-24) </h1> This release simplifies configuration of generated tests. <h2>Thanks</h2> <ul> <li><a href="http://www.soe.ucsc.edu/classes/cmpe126/Fall06/">Students in the CMPE-126 class</a> for their comments and criticisms.</li> </ul> <h2>Caution</h2> <ul> <li>Generated runners now have a <code class="code"><span style="color:#036; font-weight:bold">SIMULATOR_INCLUDES</span></code> array, whose entries specify places where Verilog source files, needed by the Verilog design, reside.</li> </ul> <h2>Details</h2> <ul> <li>Generated Verilog benches now inherit all <code class="code"><span style="background-color:#f0fff0"><span style="color:#161">`</span><span style="color:#2B2">include</span></span></code> and <code class="code"><span style="background-color:#f0fff0"><span style="color:#161">`</span><span style="color:#2B2">define</span></span></code> directives from the Verilog design in a simpler manner.</li> <li>A generated test no longer requires its Verilog design to reside in the same directory.</li> <li>The sample tests have been updated accordingly.</li> </ul> </div> <hr style="display: none"/> <div id="a8.1.0" class="section"> <h1 class="title"> <a href="#a-607232918">21</a> Version 8.1.0 (2006-10-21) </h1> This release adds an integer library and renames the vpi_util library. <h2>Caution</h2> <ul> <li>The <strong>vpi_util</strong> library has been renamed to <strong>vpi</strong>. This change should not affect your code unless you explicitly imported this library via <code class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">ruby-vpi/vpi_util</span><span style="color:#710">'</span></span></code>. In which case, you should update your code to use <code class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">ruby-vpi/vpi</span><span style="color:#710">'</span></span></code> accordingly.</li> </ul> <h2>Details</h2> <ul> <li>An integer library has been added to simplify common tasks related to hardware and the binary number system. You can import this library for use via <code class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">ruby-vpi/integer</span><span style="color:#710">'</span></span></code>.</li> </ul> </div> <hr style="display: none"/> <div id="a8.0.0" class="section"> <h1 class="title"> <a href="#a-607235508">22</a> Version 8.0.0 (2006-10-13) </h1> This release renames some identifiers for consistency, updates the documentation, and improves integration with RubyGems. <h2>Caution</h2> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">RubyVPI</span></code> module has been renamed to <code class="code"><span style="color:#036; font-weight:bold">RubyVpi</span></code>.</li> </ul> <ul> <li>The <code class="code"><span style="color:#036; font-weight:bold">PROTO</span></code> environment variable has been renamed to <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code>. <ul> <li>In addition to using <strong>unset</strong>, you can now disable simulation of the prototype by assigning an empty value to this variable.</li> </ul></li> </ul> <h2>Details</h2> <ul> <li>We now use <a href="http://darcs.net">Darcs</a> for revision control, instead of Subversion. The source repository can now be accessed at <a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">http://ruby-vpi.rubyforge.org/src/ruby-vpi</a>.</li> </ul> <ul> <li>The source code is now distributed in tar.gz and zip form, in addition to gem.</li> </ul> <ul> <li>Some identifiers have been renamed for better consistency.</li> </ul> <ul> <li>The user manual now resides directly within the <tt>doc/</tt> directory. <ul> <li>The integration of documentation in <strong>gem_server</strong> has been improved.</li> </ul></li> </ul> <ul> <li>The glossary and tutorial in the user manual have been revised.</li> </ul> </div> <hr style="display: none"/> <div id="a7.3.0" class="section"> <h1 class="title"> <a href="#a-607237998">23</a> Version 7.3.0 (2006-09-30) </h1> This release fixes a bug in generated Verilog benches, includes parsed constants in generated tests, and adds new methods to handles. <h2>Caution</h2> <ul> <li>Handles now have two new methods: <ul> <li><code class="code">handle.x?</code> checks if the logic value is “don’t care” </li> <li><code class="code">handle.z?</code> checks if the logic value is high impedance</li> </ul></li> </ul> <h2>Details</h2> <ul> <li>Module instantiation code in generated Verilog benches has been fixed. Whitespace between the module type and instance variable was missing.</li> </ul> <ul> <li>The test generator tool now provides parsed Verilog constants and include-directives in generated Verilog benches; and parsed Verilog constants in generated Ruby designs. <ul> <li>The pipelined ALU example has been revised accordingly.</li> </ul></li> </ul> <ul> <li>A library for parsing Verilog source code has been added as <tt>lib/ruby-vpi/verilog_parser.rb</tt>.</li> </ul> </div> <hr style="display: none"/> <div id="a7.2.0" class="section"> <h1 class="title"> <a href="#a-607240408">24</a> Version 7.2.0 (2006-09-15) </h1> This release adds initial support for code coverage analysis via the <a href="http://eigenclass.org/hiki.rb?rcov">rcov library</a>. <h2>Thanks</h2> <ul> <li>Mauricio Fernandez helped me use rcov without its runner.</li> </ul> <h2>Details</h2> <ul> <li>Added initial support (full capabilites of the rcov library, such as its various analysis modes, are not yet utilized) for code coverage analysis, which can be enabled by setting the <code class="code"><span style="color:#036; font-weight:bold">COVERAGE</span></code> environment variable to a non-empty value before running a test. <ul> <li>For example, you can run a test with the GPL Cver simulator while enabling the generation of code coverage reports as follows: <pre>export COVERAGE=1; rake cver</pre></li> </ul></li> </ul> <ul> <li>Coverage reports are generated in text and HTML formats.</li> </ul> </div> <hr style="display: none"/> <div id="a7.1.0" class="section"> <h1 class="title"> <a href="#a-607242818">25</a> Version 7.1.0 (2006-08-29) </h1> This release simplifies running of multiple tests, restores compatibility with Synopsys VCS, and better integrates with RubyGems. <h2>Details</h2> <ul> <li>Added <tt>lib/ruby-vpi/runner_proxy.rb</tt> library which, when embedded into a Rakefile, runs all generated tests in the working directory with any specified arguments. For example, have a look at the <tt>samp/counter/Rakefile</tt> file.</li> </ul> <ul> <li>Fixed a bug that prevented one from running tests with Synopsys VCS.</li> </ul> <ul> <li>Ruby-VPI documentation is now available through RubyGems’ <a href="http://docs.rubygems.org/read/chapter/2#page10"><strong>gem_server</strong> web interface</a>.</li> </ul> <ul> <li>The user manual now discusses how to determine the location of a Ruby-VPI installation.</li> </ul> <ul> <li>The <tt>tpl/</tt> directory has been removed.</li> </ul> </div> <hr style="display: none"/> <div id="a7.0.0" class="section"> <h1 class="title"> <a href="#a-607245508">26</a> Version 7.0.0 (2006-08-29) </h1> This release distributes Ruby-VPI as a gem, improves portability of generated tests, and fixes a bug. <h2>Caution</h2> <ul> <li><code class="code">put_value()</code> now accomodates register value overflows when verifying the value it has written.</li> </ul> <ul> <li>The test generator’s templates and the examples have been updated as follows: <ul> <li>Test runners no longer have to specify the path to Ruby-VPI installation directory. Instead, they simply <code class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">ruby-vpi/runner</span><span style="color:#710">'</span></span></code>. Thus, you can run your tests on any machine with Ruby-VPI without having to know where it is installed.</li> <li>Ruby benches now invoke <code class="code"><span style="color:#036; font-weight:bold">RubyVPI</span>.init_bench</code> instead of <code class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">bench</span><span style="color:#710">'</span></span>; setup_bench</code> to become initialized.</li> </ul></li> </ul> <ul> <li>All Ruby libraries in the <tt>lib/</tt> directory have been moved into <tt>lib/ruby-vpi/</tt> to prevent load-path clashes with other gems. You should access these libraries by prefixing their path with “ruby-vpi”. For example, <code class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">vpi_util</span><span style="color:#710">'</span></span></code> should now be written as <code class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">ruby-vpi/vpi_util</span><span style="color:#710">'</span></span></code>.</li> </ul> <ul> <li>The <tt>src/</tt> directory has been renamed to <tt>ext/</tt> to follow RubyGems convention.</li> </ul> <h2>Details</h2> <ul> <li>Ruby-VPI is now distributed only as a <a href="http://www.rubygems.org">source gem</a>. You can decompress the gem without installing it onto your system by running the command <pre>gem install -i output_directory ruby-vpi-7.0.0.gem</pre>. In addition, you can still obtain the source code directly from the Subversion repository.</li> </ul> <ul> <li>The tools in <tt>bin/</tt> become available in your system’s <tt>bin/</tt> directory when the gem is installed. <ul> <li>Usage and help information has been added to the <strong>header_to_ruby.rb</strong> tool.</li> </ul></li> </ul> <ul> <li>Incorrect spelling of GPL Cver (v should be uncapitalized) has been fixed.</li> </ul> <ul> <li>Incorrect link to GPL Cver website has been fixed.</li> </ul> <ul> <li>The user manual has been updated according to all of the above changes.</li> </ul> </div> <hr style="display: none"/> <div id="a6.3.0" class="section"> <h1 class="title"> <a href="#a-607248278">27</a> Version 6.3.0 (2006-08-27) </h1> This release adds support for the GPL Cver simulator, provides both binary and source packages, and explicitly defines the version numbering system. <h2>Caution</h2> <ul> <li>Ruby-VPI now only needs to be built once. <ul> <li>You can run tests with different Verilog simulators without having to re-compile Ruby-VPI.</li> </ul></li> </ul> <h2>Details</h2> <ul> <li>The GPL Cver simulator is now supported.</li> </ul> <ul> <li>Release packages are now available in both source and binary form.</li> </ul> <ul> <li>The RSpec based specifications for the counter example now use the <code class="code">should_equal</code> instead of the <code class="code">should_be</code> assertion, because the latter ensures strict equivalence. For instance, it will fail when a Fixnum is compared to a Bignum.</li> </ul> <ul> <li>We now follow the RubyGems project’s <a href="http://www.rubygems.org/read/chapter/7">rational versioning policy</a>. The version numbers of previous releases have been revised accordingly: <table> <tr> <th>Release date </th> <th>Original version number </th> <th>New version number </th> </tr> <tr> <td> 1999-10-31 </td> <td> 0.0 </td> <td> 0.0.0 </td> </tr> <tr> <td> 2006-02-26 </td> <td> 0.1 </td> <td> 1.0.0 </td> </tr> <tr> <td> 2006-04-17 </td> <td> 0.2 </td> <td> 2.0.0 </td> </tr> <tr> <td> 2006-04-23 </td> <td> 0.3 </td> <td> 3.0.0 </td> </tr> <tr> <td> 2006-04-28 </td> <td> 0.4 </td> <td> 3.1.0 </td> </tr> <tr> <td> 2006-05-13 </td> <td> 0.5 </td> <td> 3.2.0 </td> </tr> <tr> <td> 2006-05-25 </td> <td> 0.6 </td> <td> 4.0.0 </td> </tr> <tr> <td> 2006-07-22 </td> <td> 0.7 </td> <td> 5.0.0 </td> </tr> <tr> <td> 2006-07-29 </td> <td> 0.8 </td> <td> 5.1.0 </td> </tr> <tr> <td> 2006-08-04 </td> <td> 0.8.1 </td> <td> 5.1.1 </td> </tr> <tr> <td> 2006-08-07 </td> <td> 0.9 </td> <td> 6.0.0 </td> </tr> <tr> <td> 2006-08-09 </td> <td> 0.9.1 </td> <td> 6.1.0 </td> </tr> <tr> <td> 2006-08-26 </td> <td> 0.9.2 </td> <td> 6.2.0 </td> </tr> </table></li> </ul> </div> <hr style="display: none"/> <div id="a6.2.0" class="section"> <h1 class="title"> <a href="#a-607250788">28</a> Version 6.2.0 (2006-08-26) </h1> This release beautifies generated tests, adds checks to find signal width bugs, and includes a new tool. <h2>Caution</h2> <ul> <li><code class="code">put_value()</code> now returns the value it puts. Therefore, it is easier to chain together a series of assignments: <code class="code">foo.intVal = bar.intVal = baz.intVal = <span style="color:#00D; font-weight:bold">10</span></code></li> </ul> <ul> <li><code class="code">put_value()</code> now verifies that the value it puts was written correctly. This helps to find bugs regarding invalid assumptions about the number of bits supported by a signal.</li> </ul> <h2>Details</h2> <ul> <li>The test generator now uses ERB templates which ensures nice indentation of generated output.</li> </ul> <ul> <li>The test generator now decouples Ruby-VPI paths from Verilog benches via the RUBYLIB environment variable.</li> </ul> <ul> <li>A tool which converts Verilog headers into Ruby has been added.</li> </ul> <ul> <li>The source code is now indented with two spaces instead of one tab character.</li> </ul> </div> <hr style="display: none"/> <div id="a6.1.0" class="section"> <h1 class="title"> <a href="#a-607253118">29</a> Version 6.1.0 (2006-08-09) </h1> This release simplifies generated tests and fixes a bug. <h2>Details</h2> <ul> <li>The test generator now produces simpler Ruby benches and specifications. <ul> <li>A template used by generated specifications has been added.</li> <li>The counter example and tutorial have also been simplified accordingly.</li> </ul></li> </ul> <ul> <li>Boolean VPI property values are now correctly converted into Ruby truth values.</li> </ul> </div> <hr style="display: none"/> <div id="a6.0.0" class="section"> <h1 class="title"> <a href="#a-607255668">30</a> Version 6.0.0 (2006-08-07) </h1> This release adds support and documentation for rapid prototyping of Verilog designs in Ruby. <h2>Caution</h2> <ul> <li>The directory structure has been reorganized as follows: <ul> <li><tt>ext</tt> → <tt>src</tt></li> <li><tt>tools</tt> → <tt>bin</tt></li> <li><tt>examples</tt> → <tt>samp</tt></li> </ul></li> </ul> <ul> <li>All template files have been moved into the <tt>tpl</tt> directory.</li> </ul> <h2>Details</h2> <ul> <li>Support for prototyping designs in Ruby, before they are implemented in Verilog, has been added. <ul> <li>The <em>same</em> specification can be used to verify both prototype <em>and</em> design! :-)</li> <li>The tutorial in the user manual has been updated to discuss prototyping. <ul> <li>Prototypes have been added to the counter example.</li> </ul></li> </ul></li> </ul> <ul> <li>The user manual has been revised for consistency.</li> </ul> </div> <hr style="display: none"/> <div id="a5.1.1" class="section"> <h1 class="title"> <a href="#a-607258058">31</a> Version 5.1.1 (2006-08-04) </h1> This release fixes unreadable syntax coloring in the user manual. <h2>Thanks</h2> <ul> <li>Todd Nagengast and Matt Fischler notified me about unreadable text in the user manual.</li> </ul> <h2>Details</h2> <ul> <li>Source code comments in the user manual are now readable.</li> </ul> <ul> <li>The <tt>README</tt> and <tt>HISTORY</tt> files have been converted to <a href="http://www.textism.com/tools/textile/">textile</a> format.</li> </ul> </div> <hr style="display: none"/> <div id="a5.1.0" class="section"> <h1 class="title"> <a href="#a-607260808">32</a> Version 5.1.0 (2006-07-29) </h1> This release adds a tutorial to the user manual, and improves the tools and examples. <h2>Thanks</h2> <ul> <li>Phil Tomson corrected the URL of the RHDL website in the user manual.</li> </ul> <h2>Details</h2> <h3>User manual</h3> <ul> <li>A tutorial, based on the counter example, has been added to the user manual.</li> </ul> <ul> <li>The user manual’s appearance has been dramatically improved with syntax coloring for source code, and <a href="http://tango.freedesktop.org">graphics for admonitions and navigation</a>.</li> </ul> <h3>Examples</h3> <ul> <li>A specification, expressed in unit test format, has been added to the counter example.</li> </ul> <ul> <li>The <pre>--name</pre> and <pre>-n</pre> options, which lets you specify an identifier for a generated test, have been added to the <strong>generate_test.rb</strong> tool.</li> </ul> <ul> <li>Running <pre>rake clobber</pre> in an example directory no longer destroys documentation in the Ruby-VPI directory.</li> </ul> <ul> <li>The examples’ Rakefiles now invoke all tests present in the directory via the <tt>launcher_template.rake</tt> template.</li> </ul> <ul> <li>The Rake template for test runners (generated by <tt>tools/generate_test.rb</tt>) has moved from <tt>examples/template.rake</tt> to <tt>examples/runner_template.rake</tt>.</li> </ul> <h3>VPI utility layer</h3> <ul> <li>The value of a handle’s boolean VPI property is treated as <code class="code"><span style="color:#038; font-weight:bold">false</span></code> if it is zero, because zero is <code class="code"><span style="color:#038; font-weight:bold">false</span></code> in the C language.</li> </ul> </div> <hr style="display: none"/> <div id="a5.0.0" class="section"> <h1 class="title"> <a href="#a-607263458">33</a> Version 5.0.0 (2006-07-22) </h1> This release enhances the VPI utility layer and adds new content to the user manual. <h2>Thanks</h2> <ul> <li>Jan Decaluwe corrected the description of MyHDL in the user manual.</li> </ul> <h2>Caution</h2> <ul> <li>SWIG is no longer required for users because its output is included in the release package.</li> </ul> <ul> <li>The <code class="code">handle.value</code> and <code class="code">handle.value=</code> methods have been removed.</li> </ul> <h2>Details</h2> <ul> <li>The VPI utility layer provides access to VPI properties of handles in a <a href="manual.html#background.org.vpi">simpler, more powerful way</a>.</li> </ul> <ul> <li>All VPI properties, except delay values, are now accessible from a handle.</li> </ul> <ul> <li>The user manual has been revised and new content in the organization and usage sections has been added.</li> </ul> <ul> <li>This release was tested and developed using: <ul> <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a4.0.0" class="section"> <h1 class="title"> <a href="#a-607266088">34</a> Version 4.0.0 (2006-05-25) </h1> This release adds a comprehensive user manual, upgrades from make to <a href="http://rake.rubyforge.org">Rake</a>, and improves the test generation tool. <h2>Thanks</h2> <ul> <li>Jose Renau solved the problem of strange delays that occurred whenever a design was reset.</li> </ul> <h2>Caution</h2> <ul> <li>Rake has replaced the role of <strong>make</strong>. All makefiles have been converted accordingly.</li> </ul> <ul> <li>The test generation tool now generates multiple files (runner, bench, design, spec) and makes backups of existing files. See its help information for details.</li> </ul> <h2>Details</h2> <ul> <li>A comprehensive user manual, written in DocBook-XML, has been added.</li> </ul> <ul> <li>Support for RSpec 0.5.4 has been added. <ul> <li>The counter example now makes use of RSpec.</li> </ul></li> </ul> <ul> <li>This release was tested and developed using: <ul> <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a3.2.0" class="section"> <h1 class="title"> <a href="#a-607268598">35</a> Version 3.2.0 (2006-05-13) </h1> This release adds a tool which generates test benches, and adds support for <a href="http://behaviour-driven.org">Behavior Driven Development</a> via the <a href="http://rspec.rubyforge.org">RSpec</a> library. <h2>Thanks</h2> <ul> <li>Scott L Holmes helped me <a href="http://article.gmane.org/gmane.comp.lang.ruby.general/150087">use the RSpec library without its runner</a> program.</li> </ul> <h2>Details</h2> <ul> <li>A tool, which generates most of a Ruby-VPI test bench from a Verilog 2001 module declaration, has been added.</li> </ul> <ul> <li>Ability to use RSpec in a test bench has been added.</li> </ul> <ul> <li>Ability to specify arbitrary command-line arguments to Verilog simulators has been added in the examples’ makefile template.</li> </ul> <ul> <li>This release was tested and developed using: <ul> <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a3.1.0" class="section"> <h1 class="title"> <a href="#a-607271188">36</a> Version 3.1.0 (2006-04-28) </h1> This release adds simple ways of reading and writing values to VPI handles, adds documentation for the VPI utility layer, and fixes the pipelined ALU example. <h2>Caution</h2> <ul> <li>The <strong>msim</strong> Makefile target for Mentor Modelsim has been renamed back to <strong>vsim</strong>.</li> </ul> <h2>Details</h2> <ul> <li>Simple, consistent ways of reading and writing values to handles have been added to the VPI utility layer. These ways are described in the <code class="code"><span style="color:#036; font-weight:bold">SWIG</span>::<span style="color:#036; font-weight:bold">TYPE_p_unsigned_int</span></code> class’ documentation.</li> </ul> <ul> <li>The makefiles now use the <strong>rbconfig</strong> library to determine the default compiler and linker flags for Ruby.</li> </ul> <ul> <li>A race condition in the pipelined ALU example has been fixed. This example should now run successfully in all Verilog simulators.</li> </ul> <ul> <li>The project wiki has been abandoned in favor of RDoc.</li> </ul> <ul> <li>The project website is now generated by RDoc.</li> </ul> <ul> <li>This release was tested and developed using: <ul> <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a3.0.0" class="section"> <h1 class="title"> <a href="#a-607273938">37</a> Version 3.0.0 (2006-04-23) </h1> This release adds support for the <em>entire</em> <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945">IEEE Std. 1364-2005</a> VPI interface, and updates the examples into unit tests. <h2>Thanks</h2> <ul> <li>The <a href="http://www.swig.org/guilty.html">SWIG developers</a> made this project <em>much</em> easier! ;-)</li> </ul> <h2>Caution</h2> <ul> <li>The <strong>vsim</strong> Makefile target for Mentor Modelsim has been renamed to <strong>msim</strong>.</li> </ul> <h2>Details</h2> <ul> <li>The Ruby interface to VPI is now generated by <a href="http://www.swig.org">SWIG</a>. <ul> <li>The main <code class="code"><span style="color:#036; font-weight:bold">VPI</span></code> module has been renamed to <code class="code"><span style="color:#036; font-weight:bold">Vpi</span></code>.</li> <li>The <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span></code> class has been removed.</li> <li>The <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::stop</code>, <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::finish</code>, and <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::reset</code> methods have been removed.</li> </ul></li> </ul> <ul> <li>The <a href="http://www.boydtechinc.com/ptf/archive/ptf_2005/0737.html"><em>final ballot</em> version</a> of the <tt>vpi_user.h</tt> header file is now packaged along with and used by Ruby-VPI.</li> </ul> <ul> <li>The VPI module, its sub-classes, and its functionality have been replaced by the VPI utility layer (see <tt>src/vpi_util.rb</tt>).</li> </ul> <ul> <li>The examples now make use of the <strong>test/unit</strong> unit testing framework.</li> </ul> <ul> <li>The makefiles for the examples have been simplified through the use of a common template.</li> </ul> <ul> <li>This release was tested and developed using: <ul> <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a2.0.0" class="section"> <h1 class="title"> <a href="#a-607276588">38</a> Version 2.0.0 (2006-04-17) </h1> This release fixes major bugs, adds support for Mentor Modelsim, and removes the <code class="code"><span style="color:#d70; font-weight:bold">$ruby_task</span></code> callback. <h2>Thanks</h2> <ul> <li>Nobu Nakada explained the <a href="http://article.gmane.org/gmane.comp.lang.ruby.general/146653">cross-thread violation on rb_gc()</a> error.</li> </ul> <h2>Caution</h2> <ul> <li>Removed <code class="code"><span style="color:#d70; font-weight:bold">$ruby_task</span></code> callback and ability to dynamically register system tasks from Ruby because inter-process communication is complicated at present.</li> </ul> <h2>Details</h2> <ul> <li>The “cross-thread violation on rb_gc()” error has been fixed. <ul> <li>The “stack level too deep (SystemStackError)” error has been fixed.</li> <li>The test/unit library can be used in Ruby test bench.</li> <li>Mentor Modelsim Verilog simulator works with Ruby-VPI.</li> </ul></li> </ul> <ul> <li>Added piplelined ALU example.</li> </ul> <ul> <li>This release was tested and developed using: <ul> <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux</li> <li>Ruby 1.8.4 and Modelsim 6.1d on x86_64 GNU/Linux</li> <li>Ruby 1.8.4 and Synopsys VCS-MX X-2005.06-SP1 on SPARC4 SunOS 5.10</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a1.0.0" class="section"> <h1 class="title"> <a href="#a-607279478">39</a> Version 1.0.0 (2006-02-26) </h1> This release adds enough Verilog VPI functionality to make Ruby-VPI usable for simple test benches: <ul> <li>access Verilog objects through VPI handles</li> <li>read and change VPI handle values</li> <li>stop, finish, restart the simulation</li> </ul> <h2>Thanks</h2> <ul> <li>Jose Renau helped me debug how Synopsys VCS works with Verilog VPI. The problem was that VCS required calltf signatures to be <code class="code">void (*)(void)</code>, whereas the Verilog standard defines a calltf signature as <code class="code"><span style="color:#036; font-weight:bold">PLI_INT32</span> (*)(<span style="color:#036; font-weight:bold">PLI_BYTE8</span>*)</code>.</li> </ul> <ul> <li>Ross Bamford, Eric Hodel, and Yukihiro Matsumoto <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662">helped me discover</a> why the <code class="code"><span style="color:#036; font-weight:bold">SystemStackError</span></code> was happening.</li> </ul> <h2>Details</h2> <ul> <li>Implemented some Verilog VPI functionality: <ul> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::handle_by_name(string, <span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>)</code> → <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span></code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::handle_by_name(string)</code> → <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span></code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value(integer)</code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>.value = integer</code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>.get_value</code> → <code class="code">integer</code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>.value</code> → <code class="code">integer</code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::stop</code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::finish</code></li> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::reset</code></li> </ul></li> </ul> <ul> <li>Implemented some additional functionality: <ul> <li><code class="code"><span style="color:#036; font-weight:bold">VPI</span>::register_task(string, &proc)</code></li> </ul></li> </ul> <ul> <li>Added ability to pass arbitrary command-line arguments to the Ruby interpreter (using <code class="code"><span style="color:#d70; font-weight:bold">$ruby_init</span></code>). Now you can invoke any Ruby script you want, instead of <tt>pli_init.rb</tt>.</li> </ul> <ul> <li>Added ability to dynamically register system tasks from Ruby, using <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::register_task(<span style="background-color:#fff0f0"><span style="color:#710">"</span><span style="color:#D20">task name</span><span style="color:#710">"</span></span>)</code>, and call them from Verilog, using <code class="code"><span style="color:#d70; font-weight:bold">$ruby_task</span>(<span style="background-color:#fff0f0"><span style="color:#710">"</span><span style="color:#D20">task name</span><span style="color:#710">"</span></span>)</code>.</li> </ul> <ul> <li>Added <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span></code> class which encapsulates a <code class="code">vpiHandle</code> VPI object.</li> </ul> <ul> <li>This release was tested and developed using: <ul> <li>Ruby 1.8.2 and Icarus Verilog 0.8 on i686 GNU/Linux</li> <li>Ruby 1.8.4, Synopsys <span class="caps">VCS X</span>-2005.06, and Mentor Modelsim 6.1b on i686 GNU/Linux</li> </ul></li> </ul> </div> <hr style="display: none"/> <div id="a0.0.0" class="section"> <h1 class="title"> <a href="#a-607281768">40</a> Version 0.0.0 (1999-10-31) </h1> This is Kazuhiro HIWADA’s initial testing release of Ruby-VPI. See its <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/18193">original announcement</a> and <a href="http://rubyforge.org/frs/?group_id=1339&release_id=8852">source code</a>. <h2>Details</h2> <ul> <li>Added ability to relay control from Verilog test bench to Ruby (using <code class="code"><span style="color:#d70; font-weight:bold">$ruby_callback</span></code>) and vice versa (using <code class="code"><span style="color:#036; font-weight:bold">PLI</span>::relay_Verilog</code>).</li> </ul> <ul> <li>Tested and developed using Ruby 1.4 and Verilog-XL from Cadence systems, on a SPARC machine running Solaris 2.6.</li> </ul> </div> </div> <hr style="display: none"/> <div id="toc"> <h1 id="toc:contents">Contents</h1> <ul><li><span class="hide">1 </span><a id="a-607179468" href="#Release_history">Release history</a><ul><li><span class="hide">1.1 </span><a id="a-607176568" href="#Version_numbering_system">Version numbering system</a></li></ul></li><li><span class="hide">2 </span><a id="a-607182658" href="#a18.0.0">Version 18.0.0 (2007-07-31)</a></li><li><span class="hide">3 </span><a id="a-607186018" href="#a17.0.0">Version 17.0.0 (2007-07-22)</a></li><li><span class="hide">4 </span><a id="a-607188328" href="#a16.0.1">Version 16.0.1 (2007-05-27)</a></li><li><span class="hide">5 </span><a id="a-607191278" href="#a16.0.0">Version 16.0.0 (2007-05-02)</a></li><li><span class="hide">6 </span><a id="a-607193568" href="#a15.0.2">Version 15.0.2 (2007-01-22)</a></li><li><span class="hide">7 </span><a id="a-607195998" href="#a15.0.1">Version 15.0.1 (2007-01-15)</a></li><li><span class="hide">8 </span><a id="a-607198768" href="#a15.0.0">Version 15.0.0 (2007-01-13)</a></li><li><span class="hide">9 </span><a id="a-607201618" href="#a14.0.0">Version 14.0.0 (2006-12-30)</a></li><li><span class="hide">10 </span><a id="a-607204228" href="#a13.0.0">Version 13.0.0 (2006-12-27)</a></li><li><span class="hide">11 </span><a id="a-607206878" href="#a12.1.0">Version 12.1.0 (2006-12-22)</a></li><li><span class="hide">12 </span><a id="a-607209028" href="#a12.0.2">Version 12.0.2 (2006-12-18)</a></li><li><span class="hide">13 </span><a id="a-607211418" href="#a12.0.1">Version 12.0.1 (2006-12-18)</a></li><li><span class="hide">14 </span><a id="a-607214448" href="#a12.0.0">Version 12.0.0 (2006-12-07)</a></li><li><span class="hide">15 </span><a id="a-607216938" href="#a11.1.1">Version 11.1.1 (2006-11-15)</a></li><li><span class="hide">16 </span><a id="a-607219728" href="#a11.1.0">Version 11.1.0 (2006-11-08)</a></li><li><span class="hide">17 </span><a id="a-607222378" href="#a11.0.0">Version 11.0.0 (2006-11-05)</a></li><li><span class="hide">18 </span><a id="a-607225288" href="#a10.0.0">Version 10.0.0 (2006-11-05)</a></li><li><span class="hide">19 </span><a id="a-607228078" href="#a9.0.0">Version 9.0.0 (2006-10-28)</a></li><li><span class="hide">20 </span><a id="a-607230568" href="#a8.2.0">Version 8.2.0 (2006-10-24)</a></li><li><span class="hide">21 </span><a id="a-607232918" href="#a8.1.0">Version 8.1.0 (2006-10-21)</a></li><li><span class="hide">22 </span><a id="a-607235508" href="#a8.0.0">Version 8.0.0 (2006-10-13)</a></li><li><span class="hide">23 </span><a id="a-607237998" href="#a7.3.0">Version 7.3.0 (2006-09-30)</a></li><li><span class="hide">24 </span><a id="a-607240408" href="#a7.2.0">Version 7.2.0 (2006-09-15)</a></li><li><span class="hide">25 </span><a id="a-607242818" href="#a7.1.0">Version 7.1.0 (2006-08-29)</a></li><li><span class="hide">26 </span><a id="a-607245508" href="#a7.0.0">Version 7.0.0 (2006-08-29)</a></li><li><span class="hide">27 </span><a id="a-607248278" href="#a6.3.0">Version 6.3.0 (2006-08-27)</a></li><li><span class="hide">28 </span><a id="a-607250788" href="#a6.2.0">Version 6.2.0 (2006-08-26)</a></li><li><span class="hide">29 </span><a id="a-607253118" href="#a6.1.0">Version 6.1.0 (2006-08-09)</a></li><li><span class="hide">30 </span><a id="a-607255668" href="#a6.0.0">Version 6.0.0 (2006-08-07)</a></li><li><span class="hide">31 </span><a id="a-607258058" href="#a5.1.1">Version 5.1.1 (2006-08-04)</a></li><li><span class="hide">32 </span><a id="a-607260808" href="#a5.1.0">Version 5.1.0 (2006-07-29)</a></li><li><span class="hide">33 </span><a id="a-607263458" href="#a5.0.0">Version 5.0.0 (2006-07-22)</a></li><li><span class="hide">34 </span><a id="a-607266088" href="#a4.0.0">Version 4.0.0 (2006-05-25)</a></li><li><span class="hide">35 </span><a id="a-607268598" href="#a3.2.0">Version 3.2.0 (2006-05-13)</a></li><li><span class="hide">36 </span><a id="a-607271188" href="#a3.1.0">Version 3.1.0 (2006-04-28)</a></li><li><span class="hide">37 </span><a id="a-607273938" href="#a3.0.0">Version 3.0.0 (2006-04-23)</a></li><li><span class="hide">38 </span><a id="a-607276588" href="#a2.0.0">Version 2.0.0 (2006-04-17)</a></li><li><span class="hide">39 </span><a id="a-607279478" href="#a1.0.0">Version 1.0.0 (2006-02-26)</a></li><li><span class="hide">40 </span><a id="a-607281768" href="#a0.0.0">Version 0.0.0 (1999-10-31)</a></li></ul> </div> </body> </html>