<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
  <title>Ruby-VPI</title>
  <link>http://ruby-vpi.rubyforge.org</link>
  <description>Ruby-VPI is a Ruby interface to IEEE 1364-2005 Verilog VPI and a platform for unit testing, rapid prototyping, and systems integration of Verilog modules through Ruby. It lets you create complex Verilog test benches easily and wholly in Ruby.</description>
  <item>
    <title>Version 18.0.1 released</title>
    <link>http://ruby-vpi.rubyforge.org/doc/history.html#a18.0.1</link>
    <guid>http://ruby-vpi.rubyforge.org/doc/history.html#a18.0.1</guid>
    <description>&lt;h1 id=&quot;18.0.1&quot;&gt;Version 18.0.1 (2007-08-02)&lt;/h1&gt;

	&lt;p&gt;This release fixes some bugs regarding simulation time and control.&lt;/p&gt;


	&lt;h2&gt;Thanks&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Calvin Wong reported the bugs listed in the Repairs section.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Repairs&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;VCS does not acknowledge passage of time when cbReadWriteSynch callback is used, so I reverted back to using the cbAfterDelay callback (as was done in version 17.0.0).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Ruby-VPI did not give control back to the Verilog simulator before it exited. As a result, the Verilog simulator did not have a chance to do any clean up or finish any pending tasks that remained in the simulation.&lt;/li&gt;
	&lt;/ul&gt;</description>
    <pubDate>Thu, 02 Aug 2007 00:00:00 PDT</pubDate>
  </item>
  <item>
    <title>Version 18.0.0 released</title>
    <link>http://ruby-vpi.rubyforge.org/doc/history.html#a18.0.0</link>
    <guid>http://ruby-vpi.rubyforge.org/doc/history.html#a18.0.0</guid>
    <description>&lt;h1 id=&quot;18.0.0&quot;&gt;Version 18.0.0 (2007-07-31)&lt;/h1&gt;

	&lt;p&gt;This release restores support for Synopsys VCS and Cadence NC-Sim, improves portability and performance, and enhances the VPI abstraction layer.&lt;/p&gt;


	&lt;h2&gt;Thanks&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Calvin Wong discovered &lt;a href=&quot;http://rubyforge.org/forum/message.php?msg_id=25691&quot;&gt;how to bypass the following error&lt;/a&gt; emitted by Synopsys VCS when loading the Ruby-VPI shared object file.

	&lt;pre&gt;
  Could not open library specified in -load option obj/vcs
  obj/vcs: undefined symbol: vpi_put_data
  &lt;/pre&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Caution&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.swig.org/&quot;&gt;SWIG&lt;/a&gt; is now required in order to compile and install Ruby-VPI.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.put_value&lt;/code&gt; 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.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;When &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.put_value&lt;/code&gt; is used to write a value to a wire (VpiNet), it now &lt;em&gt;forces&lt;/em&gt; the value. This is done to ensure portability:

	&lt;p&gt;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).&lt;/p&gt;


	&lt;p&gt;Note that you have to release a forced value (using &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.release_value&lt;/code&gt;) 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:&lt;/p&gt;


	&lt;pre class=&quot;code&quot;&gt;
  your_wire.intVal = &lt;span style=&quot;color:#00D; font-weight:bold&quot;&gt;15&lt;/span&gt;
  your_wire.release_value
  advance_time &lt;span style=&quot;color:#888&quot;&gt;# let the Verilog DUT modify your_wire&lt;/span&gt;
  &lt;/pre&gt;


	&lt;p&gt;In addition, you can check if a wire has a forced value using the &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.value_forced?&lt;/code&gt; method.&lt;/p&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;If the format is not specified, &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.get_value&lt;/code&gt; now assumes that you want to read the value in VpiIntVal format (because this is the most common case).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The definition of &amp;#8220;Derivatives&amp;#8221; has been reworded for clarity in the &lt;a href=&quot;readme.html#intro.license&quot;&gt;project license&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Repairs&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Synopsys VCS and Cadence NC-Sim simulators now correctly load Ruby-VPI. Also, the 64-bit versions of these simulators are now supported.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Improvements&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Added &amp;#8220;force_value&amp;#8221;, &amp;#8220;release_value&amp;#8221;, and &amp;#8220;value_forced?&amp;#8221; methods to the &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;&lt;/code&gt; class.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.put_value&lt;/code&gt; now tries to automatically detect the format of the value to be written. As a result, you can now write &lt;code class=&quot;code&quot;&gt;your_handle.put_value &lt;span style=&quot;color:#00D; font-weight:bold&quot;&gt;35&lt;/span&gt;&lt;/code&gt; in lieu of writing &lt;code class=&quot;code&quot;&gt;your_handle.intVal = &lt;span style=&quot;color:#00D; font-weight:bold&quot;&gt;35&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.inspect&lt;/code&gt; now shows the hexStrVal of the handle (because it is a common case to want to see a handle&amp;#8217;s logic value along with its other information).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Added method caching (memoizing) for VPI property accesses on handles.&lt;/li&gt;
	&lt;/ul&gt;</description>
    <pubDate>Tue, 31 Jul 2007 00:00:00 PDT</pubDate>
  </item>
  <item>
    <title>Version 17.0.0 released</title>
    <link>http://ruby-vpi.rubyforge.org/doc/history.html#a17.0.0</link>
    <guid>http://ruby-vpi.rubyforge.org/doc/history.html#a17.0.0</guid>
    <description>&lt;h1 id=&quot;17.0.0&quot;&gt;Version 17.0.0 (2007-07-22)&lt;/h1&gt;

	&lt;p&gt;This release makes the Ruby-VPI testing framework more lightweight by reducing the number of files and parameters involved.&lt;/p&gt;


	&lt;h2&gt;Caution&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;strong&gt;generate_test.rb&lt;/strong&gt; and &lt;strong&gt;convert.rb&lt;/strong&gt; executables have been replaced by a single &lt;strong&gt;ruby-vpi&lt;/strong&gt; executable to avoid name conflicts with other software. They are now accessed using the &lt;pre&gt;ruby-vpi generate&lt;/pre&gt; and &lt;pre&gt;ruby-vpi convert&lt;/pre&gt; commands respectively.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;tt&gt;--name&lt;/tt&gt; parameter has been removed from the automated test generator. Similarly, you can no longer insert an arbitrary name in a test&amp;#8217;s file names (see the &lt;a href=&quot;manual.html#Do_not_rename_generated_files&quot;&gt;user manual&lt;/a&gt; for details).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;DEBUG&lt;/span&gt;&lt;/code&gt; environment variable, which controls wether the test runner starts the interactive debugger, has been renamed to &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;DEBUGGER&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;SIMULATOR_TARGET&lt;/span&gt;&lt;/code&gt; and &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;SIMULATOR_INCLUDES&lt;/span&gt;&lt;/code&gt; parameters have been eliminated from test runners. The former is detected automatically. As for the latter, you can specify paths to directories in the &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;SIMULATOR_SOURCES&lt;/span&gt;&lt;/code&gt; parameter instead.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;tt&gt;bench.rb&lt;/tt&gt; and &lt;tt&gt;bench.v&lt;/tt&gt; 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 &lt;tt&gt;design.rb&lt;/tt&gt; and your Verilog module&amp;#8217;s source file respectively.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;tt&gt;design.rb&lt;/tt&gt; and &lt;tt&gt;proto.rb&lt;/tt&gt; files are now loaded into a separate namespace (Ruby module). For example, if the Verilog module under test has the name &amp;#8220;counter&amp;#8221; and the &lt;tt&gt;design.rb&lt;/tt&gt; file defines a class named &amp;#8220;Foo&amp;#8221;, then that class will be accessible as &amp;#8220;Counter::Foo&amp;#8221;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The global &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::simulate&lt;/code&gt; method has been replaced by the &lt;code class=&quot;code&quot;&gt;cycle!&lt;/code&gt; method in the &lt;tt&gt;design.rb&lt;/tt&gt; file.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;code class=&quot;code&quot;&gt;simulate!&lt;/code&gt; method in the &lt;tt&gt;proto.rb&lt;/tt&gt; file has been renamed to &lt;code class=&quot;code&quot;&gt;feign!&lt;/code&gt; for accuracy.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;RubyVpi&lt;/span&gt;&lt;/code&gt; module has been renamed to &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;RubyVPI&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;RSpec &amp;gt;= 1.0.0 is now required by Ruby-VPI.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;a href=&quot;readme.html#intro.license&quot;&gt;project license&lt;/a&gt; has been further simplified.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Repairs&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Restored support for Enumerable methods in &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The specification now begins to execute at simulation time 0. Previously it began at simulation time 1.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Improvements&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;The &lt;tt&gt;bench.rb&lt;/tt&gt; and &lt;tt&gt;bench.v&lt;/tt&gt; files of a generated test have been eliminated!

	&lt;p&gt;One important benefit is that the Ruby interface to the Verilog module under test is now a direct reference, whereas previously it was an &lt;em&gt;indirect&lt;/em&gt; reference (it pointed to the Verilog module defined in &lt;tt&gt;bench.v&lt;/tt&gt;, which in turn wrapped around the actual Verilog module under test).&lt;/p&gt;


	&lt;p&gt;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.&lt;/p&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The &amp;#8220;a&amp;#8221; accessor, which returns an &lt;em&gt;array&lt;/em&gt; of child handles, has been added to &lt;a href=&quot;manual.html#tbl:accessors&quot;&gt;the method naming format&lt;/a&gt; for accessing child handles.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;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 &lt;code class=&quot;code&quot;&gt;counter&lt;/code&gt; and has a parameter object named &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;WIDTH&lt;/span&gt;&lt;/code&gt;, then you can access the integer value of that parameter using &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Counter&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;WIDTH&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The automated test generator now tries to automatically detect the clock and reset signal from Verilog module declarations.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;The automated test generator now supports Verilog 95 style module declarations.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Exceptions are now raised when you try to write to a read-only VPI property, such as &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;VpiName&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Added &lt;code class=&quot;code&quot;&gt;high?&lt;/code&gt;, &lt;code class=&quot;code&quot;&gt;high!&lt;/code&gt;, &lt;code class=&quot;code&quot;&gt;low?&lt;/code&gt;, and &lt;code class=&quot;code&quot;&gt;low!&lt;/code&gt; methods to the &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;&lt;/code&gt; class.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Revised the user manual by removing unnecessary sections and adding newer material from my master&amp;#8217;s thesis.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Contributions&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Added Jacinto Shy II&amp;#8217;s &lt;a href=&quot;http://jacintoshy.blogspot.com/2007/05/hacking-verilog-with-ruby-part-2.html&quot;&gt;register file example&lt;/a&gt; to Ruby-VPI. It can be found in &lt;tt&gt;samp/register_file/&lt;/tt&gt;.&lt;/li&gt;
	&lt;/ul&gt;</description>
    <pubDate>Sun, 22 Jul 2007 00:00:00 PDT</pubDate>
  </item>
</channel>
</rss>