Ruby-VPI http://ruby-vpi.rubyforge.org Ruby-VPI is a Ruby interface to IEEE 1364-2005 Verilog VPI. It lets you create complex Verilog test benches easily and wholly in Ruby. Version 15.0.1 released http://ruby-vpi.rubyforge.org/doc/history.html#15.0.1 http://ruby-vpi.rubyforge.org/doc/history.html#15.0.1 <h1 id="15.0.1">Version 15.0.1 (2007-01-15)</h1> <h2>Summary</h2> <p>This release fixes a problem with compilation of the C extension and improves the user documentation&#8217;s appearance.</p> <h2>Acknowledgment</h2> <p>Thanks to Derek Graham for reporting the problem.</p> <h2>Details</h2> <ul> <li>Restored the monkey patch, which was removed in release 14.0.0, for the <span class="caps">SWIG</span> <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> Mon, 15 Jan 2007 00:00:00 PST Version 15.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#15.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#15.0.0 <h1 id="15.0.0">Version 15.0.0 (2007-01-13)</h1> <h2>Summary</h2> <p>This release fixes a problem with compilation of the C extension, and makes clock generation code correctly affect Ruby prototypes.</p> <h2>Acknowledgment</h2> <p>Thanks to Derek Graham for reporting the problem with compilation of the C extension.</p> <h2>Notice</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&#8217;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&#8217;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> Sat, 13 Jan 2007 00:00:00 PST Version 14.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#14.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#14.0.0 <h1 id="14.0.0">Version 14.0.0 (2006-12-30)</h1> <h2>Summary</h2> <p>This release adds support for simulation callbacks, renders Verilog benches <em>fully simplified</em>, and revises the user manual to reflect major changes.</p> <h2>Notice</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 <span class="caps">SWIG</span> <code class="code">va_list</code> problem&#8212;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&#8217;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 &#8220;VPI utility layer&#8221; 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> Sat, 30 Dec 2006 00:00:00 PST Version 13.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#13.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#13.0.0 <h1 id="13.0.0">Version 13.0.0 (2006-12-27)</h1> <h2>Summary</h2> <p>This release fixes a <em>major</em> instability bug, simplifies generated Verilog benches, and purifies the <span class="caps">API</span> reference documentation.</p> <h2>Notice</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 <span class="caps">API</span> 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&#8212;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 <span class="caps">API</span> reference documentation for Ruby.</li> </ul> <ul> <li>Removed system-dependent path <tt>/usr/bin/ruby</tt> from the tools.</li> </ul> Wed, 27 Dec 2006 00:00:00 PST Version 12.1.0 released http://ruby-vpi.rubyforge.org/doc/history.html#12.1.0 http://ruby-vpi.rubyforge.org/doc/history.html#12.1.0 <h1 id="12.1.0">Version 12.1.0 (2006-12-22)</h1> <h2>Summary</h2> <p>This release adds interactive debugging support, adds new sections to the user manual, and cleanses some internals.</p> <h2>Notice</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&#8217;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&#8217;t being used, according to code coverage analysis, from the pipelined <span class="caps">ALU</span> sample.</li> </ul> Fri, 22 Dec 2006 00:00:00 PST Version 12.0.2 released http://ruby-vpi.rubyforge.org/doc/history.html#12.0.2 http://ruby-vpi.rubyforge.org/doc/history.html#12.0.2 <h1 id="12.0.2">Version 12.0.2 (2006-12-18)</h1> <h2>Summary</h2> <p>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.</p> Mon, 18 Dec 2006 00:00:00 PST Version 12.0.1 released http://ruby-vpi.rubyforge.org/doc/history.html#12.0.1 http://ruby-vpi.rubyforge.org/doc/history.html#12.0.1 <h1 id="12.0.1">Version 12.0.1 (2006-12-18)</h1> <h2>Summary</h2> <p>This release fixes a problem in code coverage analysis.</p> <h2>Acknowledgment</h2> <p>Thanks to Mauricio Fernandez for helping me solve the problem.</p> <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&#8212;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> Mon, 18 Dec 2006 00:00:00 PST Version 12.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#12.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#12.0.0 <h1 id="12.0.0">Version 12.0.0 (2006-12-07)</h1> <h2>Summary</h2> <p>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.</p> <h2>Notice</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&#8217;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&#8217;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> Thu, 07 Dec 2006 00:00:00 PST Version 11.1.1 released http://ruby-vpi.rubyforge.org/doc/history.html#11.1.1 http://ruby-vpi.rubyforge.org/doc/history.html#11.1.1 <h1 id="11.1.1">Version 11.1.1 (2006-11-15)</h1> <h2>Summary</h2> <p>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.</p> <h2>Acknowledgment</h2> <p>Thanks to John Burr for finding the bug in the automated test generator.</p> <h2>Notice</h2> <ul> <li>The user manual is now available <em>only</em> in <span class="caps">HTML</span> 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 <span class="caps">ERB</span> 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> Wed, 15 Nov 2006 00:00:00 PST Version 11.1.0 released http://ruby-vpi.rubyforge.org/doc/history.html#11.1.0 http://ruby-vpi.rubyforge.org/doc/history.html#11.1.0 <h1 id="11.1.0">Version 11.1.0 (2006-11-08)</h1> <h2>Summary</h2> <p>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%.</p> <h2>Acknowledgment</h2> <p>Thanks to Matt Fischler for finding the bug in generated benches (see below).</p> <h2>Notice</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>#&lt;SWIG::TYPE_p_unsigned_int:0x2aaab6574fa0&gt;</pre> now appears as <pre>#&lt;Vpi::Handle vpiModule fullName=counter_rspec_bench, size=-1, file=counter_rspec_bench.v, lineNo=2&gt;</pre> in this release. <ul> <li>You can also provide a list of <span class="caps">VPI</span> 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 <span class="caps">VPI</span> 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 &gt; <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 <span class="caps">VPI</span> 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 &#8220;find_all_reg&#8221; method would be interpreted as the operation &#8220;find&#8221; and the <span class="caps">VPI</span> property &#8220;all_reg&#8221;.</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 <span class="caps">ALU</span> example, has been fixed so that multiple instances do not interfere with the generation of each other&#8217;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> Wed, 08 Nov 2006 00:00:00 PST Version 11.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#11.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#11.0.0 <h1 id="11.0.0">Version 11.0.0 (2006-11-05)</h1> <h2>Summary</h2> <p>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.</p> <h2>Notice</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> &lt;&lt; <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 <span class="caps">ALU</span> example now has an updated <code class="code"><span style="color:#036; font-weight:bold">IntegerGenerator</span></code> class.</li> </ul> Sun, 05 Nov 2006 00:00:00 PST Version 10.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#10.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#10.0.0 <h1 id="10.0.0">Version 10.0.0 (2006-11-05)</h1> <h2>Summary</h2> <p>This release adds the ability to access a handle&#8217;s children and reduces the amount of code produced by the automated test generator.</p> <h2>Acknowledgment</h2> <p>Thanks to Matt Fischler for finding the problem of misdirected compilation errors in Verilog benches.</p> <h2>Notice</h2> <ul> <li>The way in which Ruby-VPI and generated tests interact has changed: the design is now a <span class="caps">VPI</span> 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&#8217;s children by simply calling methods on it. In the event that a child handle has the same name as a <span class="caps">VPI</span> property, the child is given priority. However, you can always access <span class="caps">VPI</span> 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 &#8220;setup&#8221; chapter.</li> </ul> Sun, 05 Nov 2006 00:00:00 PST Version 9.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#9.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#9.0.0 <h1 id="9.0.0">Version 9.0.0 (2006-10-28)</h1> <h2>Summary</h2> <p>This release improves the automated test generator and adds new content to the user manual.</p> <h2>Acknowledgment</h2> <p>Thanks to Matt Fischler for helping test and debug the installation of Ruby-VPI on Windows.</p> <h2>Notice</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 <span class="caps">VCS</span> is now used in a better way (via the <pre>-load</pre> option). <ul> <li>The old <span class="caps">PLI</span> 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 &#8220;unit test&#8221;.</li> <li>Correctly spells &#8220;rSpec&#8221;.</li> </ul></li> </ul> Sat, 28 Oct 2006 00:00:00 PDT Version 8.2.0 released http://ruby-vpi.rubyforge.org/doc/history.html#8.2.0 http://ruby-vpi.rubyforge.org/doc/history.html#8.2.0 <h1 id="8.2.0">Version 8.2.0 (2006-10-24)</h1> <h2>Summary</h2> <p>This release simplifies configuration of generated tests.</p> <h2>Acknowledgment</h2> <p>Thanks to <a href="http://www.soe.ucsc.edu/classes/cmpe126/Fall06/">students in <span class="caps">CMPE</span>-126</a> for their comments.</p> <h2>Notice</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> Tue, 24 Oct 2006 00:00:00 PDT Version 8.1.0 released http://ruby-vpi.rubyforge.org/doc/history.html#8.1.0 http://ruby-vpi.rubyforge.org/doc/history.html#8.1.0 <h1 id="8.1.0">Version 8.1.0 (2006-10-21)</h1> <h2>Summary</h2> <p>This release adds an integer library and renames the vpi_util library.</p> <h2>Notice</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> Sat, 21 Oct 2006 00:00:00 PDT Version 8.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#8.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#8.0.0 <h1 id="8.0.0">Version 8.0.0 (2006-10-13)</h1> <h2>Summary</h2> <p>This release renames some identifiers for consistency, updates the documentation, and improves integration with RubyGems.</p> <h2>Notice</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> Fri, 13 Oct 2006 00:00:00 PDT Version 7.3.0 released http://ruby-vpi.rubyforge.org/doc/history.html#7.3.0 http://ruby-vpi.rubyforge.org/doc/history.html#7.3.0 <h1 id="7.3.0">Version 7.3.0 (2006-09-30)</h1> <h2>Summary</h2> <p>This release fixes a bug in generated Verilog benches, includes parsed constants in generated tests, and adds new methods to handles.</p> <h2>Notice</h2> <ul> <li>Handles now have two new methods: <ul> <li><code class="code">handle.x?</code> checks if the logic value is &#8220;don&#8217;t care&#8221; </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 <span class="caps">ALU</span> 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> Sat, 30 Sep 2006 00:00:00 PDT Version 7.2.0 released http://ruby-vpi.rubyforge.org/doc/history.html#7.2.0 http://ruby-vpi.rubyforge.org/doc/history.html#7.2.0 <h1 id="7.2.0">Version 7.2.0 (2006-09-15)</h1> <h2>Summary</h2> <p>This release adds initial support for code coverage analysis via the <a href="http://eigenclass.org/hiki.rb?rcov">rcov library</a>.</p> <h2>Acknowledgment</h2> <p>Thanks to Mauricio Fernandez for helping me use rcov without its runner.</p> <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 <span class="caps">GPL</span> 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 <span class="caps">HTML</span> formats.</li> </ul> Fri, 15 Sep 2006 00:00:00 PDT Version 7.1.0 released http://ruby-vpi.rubyforge.org/doc/history.html#7.1.0 http://ruby-vpi.rubyforge.org/doc/history.html#7.1.0 <h1 id="7.1.0">Version 7.1.0 (2006-08-29)</h1> <h2>Summary</h2> <p>This release simplifies running of multiple tests, restores compatibility with Synopsys <span class="caps">VCS</span>, and better integrates with RubyGems.</p> <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 <span class="caps">VCS</span>.</li> </ul> <ul> <li>Ruby-VPI documentation is now available through RubyGems&#8217; <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> Tue, 29 Aug 2006 00:00:00 PDT Version 7.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#7.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#7.0.0 <h1 id="7.0.0">Version 7.0.0 (2006-08-29)</h1> <h2>Summary</h2> <p>This release distributes Ruby-VPI as a gem, improves portability of generated tests, and fixes a bug.</p> <h2>Notice</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&#8217;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 &#8220;ruby-vpi&#8221;. 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&#8217;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 <span class="caps">GPL</span> Cver (v should be uncapitalized) has been fixed.</li> </ul> <ul> <li>Incorrect link to <span class="caps">GPL</span> Cver website has been fixed.</li> </ul> <ul> <li>The user manual has been updated according to all of the above changes.</li> </ul> Tue, 29 Aug 2006 00:00:00 PDT Version 6.3.0 released http://ruby-vpi.rubyforge.org/doc/history.html#6.3.0 http://ruby-vpi.rubyforge.org/doc/history.html#6.3.0 <h1 id="6.3.0">Version 6.3.0 (2006-08-27)</h1> <h2>Summary</h2> <p>This release adds support for the <span class="caps">GPL</span> Cver simulator, provides both binary and source packages, and explicitly defines the version numbering system.</p> <h2>Notice</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 <span class="caps">GPL</span> 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&#8217;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> Sun, 27 Aug 2006 00:00:00 PDT Version 6.2.0 released http://ruby-vpi.rubyforge.org/doc/history.html#6.2.0 http://ruby-vpi.rubyforge.org/doc/history.html#6.2.0 <h1 id="6.2.0">Version 6.2.0 (2006-08-26)</h1> <h2>Summary</h2> <p>This release beautifies generated tests, adds checks to find signal width bugs, and includes a new tool.</p> <h2>Notice</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 <span class="caps">ERB</span> 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 <span class="caps">RUBYLIB</span> 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> Sat, 26 Aug 2006 00:00:00 PDT Version 6.1.0 released http://ruby-vpi.rubyforge.org/doc/history.html#6.1.0 http://ruby-vpi.rubyforge.org/doc/history.html#6.1.0 <h1 id="6.1.0">Version 6.1.0 (2006-08-09)</h1> <h2>Summary</h2> <p>This release simplifies generated tests and fixes a bug.</p> <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 <span class="caps">VPI</span> property values are now correctly converted into Ruby truth values.</li> </ul> Wed, 09 Aug 2006 00:00:00 PDT Version 6.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#6.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#6.0.0 <h1 id="6.0.0">Version 6.0.0 (2006-08-07)</h1> <h2>Summary</h2> <p>This release adds support and documentation for rapid prototyping of Verilog designs in Ruby.</p> <h2>Notice</h2> <ul> <li>The directory structure has been reorganized as follows: <ul> <li><tt>ext</tt> &rarr; <tt>src</tt></li> <li><tt>tools</tt> &rarr; <tt>bin</tt></li> <li><tt>examples</tt> &rarr; <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> Mon, 07 Aug 2006 00:00:00 PDT Version 5.1.1 released http://ruby-vpi.rubyforge.org/doc/history.html#5.1.1 http://ruby-vpi.rubyforge.org/doc/history.html#5.1.1 <h1 id="5.1.1">Version 5.1.1 (2006-08-04)</h1> <h2>Summary</h2> <p>This release fixes unreadable syntax coloring in the user manual.</p> <h2>Acknowledgment</h2> <ul> <li>Thanks to Todd Nagengast and Matt Fischler for notifying 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> Fri, 04 Aug 2006 00:00:00 PDT Version 5.1.0 released http://ruby-vpi.rubyforge.org/doc/history.html#5.1.0 http://ruby-vpi.rubyforge.org/doc/history.html#5.1.0 <h1 id="5.1.0">Version 5.1.0 (2006-07-29)</h1> <h2>Summary</h2> <p>This release adds a tutorial to the user manual, and improves the tools and examples.</p> <h2>Acknowledgment</h2> <ul> <li>Thanks to Phil Tomson for correcting the <span class="caps">URL</span> of the <span class="caps">RHDL</span> 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&#8217;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&#8217; 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><span class="caps">VPI</span> utility layer</h3> <ul> <li>The value of a handle&#8217;s boolean <span class="caps">VPI</span> 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> Sat, 29 Jul 2006 00:00:00 PDT Version 5.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#5.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#5.0.0 <h1 id="5.0.0">Version 5.0.0 (2006-07-22)</h1> <h2>Summary</h2> <p>This release enhances the <span class="caps">VPI</span> utility layer and adds new content to the user manual.</p> <h2>Acknowledgment</h2> <ul> <li>Thanks to Jan Decaluwe for correcting the description of MyHDL in the user manual.</li> </ul> <h2>Notice</h2> <ul> <li><span class="caps">SWIG</span> 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 <span class="caps">VPI</span> utility layer provides access to <span class="caps">VPI</span> properties of handles in a <a href="manual.html#background.org.vpi">simpler, more powerful way</a>.</li> </ul> <ul> <li>All <span class="caps">VPI</span> 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 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li> </ul></li> </ul> Sat, 22 Jul 2006 00:00:00 PDT Version 4.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#4.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#4.0.0 <h1 id="4.0.0">Version 4.0.0 (2006-05-25)</h1> <h2>Summary</h2> <p>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.</p> <h2>Acknowledgment</h2> <ul> <li>Thanks to Jose Renau for solving the problem of strange delays that occurred whenever a design was reset.</li> </ul> <h2>Notice</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 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li> </ul></li> </ul> Thu, 25 May 2006 00:00:00 PDT Version 3.2.0 released http://ruby-vpi.rubyforge.org/doc/history.html#3.2.0 http://ruby-vpi.rubyforge.org/doc/history.html#3.2.0 <h1 id="3.2.0">Version 3.2.0 (2006-05-13)</h1> <h2>Summary</h2> <p>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.</p> <h2>Acknowledgment</h2> <ul> <li>Thanks to Scott L Holmes for helping 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&#8217; 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 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li> </ul></li> </ul> Sat, 13 May 2006 00:00:00 PDT Version 3.1.0 released http://ruby-vpi.rubyforge.org/doc/history.html#3.1.0 http://ruby-vpi.rubyforge.org/doc/history.html#3.1.0 <h1 id="3.1.0">Version 3.1.0 (2006-04-28)</h1> <h2>Summary</h2> <p>This release adds simple ways of reading and writing values to <span class="caps">VPI</span> handles, adds documentation for the <span class="caps">VPI</span> utility layer, and fixes the pipelined <span class="caps">ALU</span> example.</p> <h2>Notice</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 <span class="caps">VPI</span> 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&#8217; 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 <span class="caps">ALU</span> 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 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li> </ul></li> </ul> Fri, 28 Apr 2006 00:00:00 PDT Version 3.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#3.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#3.0.0 <h1 id="3.0.0">Version 3.0.0 (2006-04-23)</h1> <h2>Summary</h2> <p>This release adds support for the <em>entire</em> <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945"><span class="caps">IEEE</span> Std. 1364-2005</a> VPI interface, and updates the examples into unit tests.</p> <h2>Acknowledgment</h2> <ul> <li>Thanks to the <a href="http://www.swig.org/guilty.html"><span class="caps">SWIG</span> developers</a> for making this project <em>much</em> easier! ;-)</li> </ul> <h2>Notice</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 <span class="caps">VPI</span> is now generated by <a href="http://www.swig.org"><span class="caps">SWIG</span></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 <span class="caps">VPI</span> module, its sub-classes, and its functionality have been replaced by the <span class="caps">VPI</span> 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 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li> </ul></li> </ul> Sun, 23 Apr 2006 00:00:00 PDT Version 2.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#2.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#2.0.0 <h1 id="2.0.0">Version 2.0.0 (2006-04-17)</h1> <h2>Summary</h2> <p>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.</p> <h2>Acknowledgment</h2> <ul> <li>Thanks to Nobu Nakada for explaining the <a href="http://article.gmane.org/gmane.comp.lang.ruby.general/146653">cross-thread violation on rb_gc()</a> error.</li> </ul> <h2>Notice</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 &#8220;cross-thread violation on rb_gc()&#8221; error has been fixed. <ul> <li>The &#8220;stack level too deep (SystemStackError)&#8221; 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 <span class="caps">ALU</span> 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 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4 and Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4 and Synopsys <span class="caps">VCS</span>-MX X-2005.06-SP1 on <span class="caps">SPARC4</span> SunOS 5.10</li> </ul></li> </ul> Mon, 17 Apr 2006 00:00:00 PDT Version 1.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#1.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#1.0.0 <h1 id="1.0.0">Version 1.0.0 (2006-02-26)</h1> <h2>Summary</h2> This release adds enough Verilog <span class="caps">VPI</span> functionality to make Ruby-VPI usable for simple test benches: <ul> <li>access Verilog objects through <span class="caps">VPI</span> handles</li> <li>read and change <span class="caps">VPI</span> handle values</li> <li>stop, finish, restart the simulation</li> </ul> <h2>Acknowledgment</h2> <ul> <li>Thanks to Jose Renau for helping me debug how Synopsys <span class="caps">VCS</span> works with Verilog <span class="caps">VPI</span>. The problem was that <span class="caps">VCS</span> 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>Thanks to Ross Bamford, Eric Hodel, and Yukihiro Matsumoto for <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662">helping 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 <span class="caps">VPI</span> 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> &rarr; <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> &rarr; <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> &rarr; <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> &rarr; <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, &amp;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">&quot;</span><span style="color:#D20">task name</span><span style="color:#710">&quot;</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">&quot;</span><span style="color:#D20">task name</span><span style="color:#710">&quot;</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 <span class="caps">GNU</span>/Linux</li> <li>Ruby 1.8.4, Synopsys <span class="caps">VCS X</span>-2005.06, and Mentor Modelsim 6.1b on i686 <span class="caps">GNU</span>/Linux</li> </ul></li> </ul> Sun, 26 Feb 2006 00:00:00 PST Version 0.0.0 released http://ruby-vpi.rubyforge.org/doc/history.html#0.0.0 http://ruby-vpi.rubyforge.org/doc/history.html#0.0.0 <h1 id="0.0.0">Version 0.0.0 (1999-10-31)</h1> <h2>Summary</h2> <p>This is Kazuhiro <span class="caps">HIWADA</span>&#8217;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&#38;release_id=8852">source code</a>.</p> <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 <span class="caps">SPARC</span> machine running Solaris 2.6.</li> </ul> Sun, 31 Oct 1999 00:00:00 PDT