doc/history.yaml in ruby-vpi-17.0.0 vs doc/history.yaml in ruby-vpi-18.0.0
- old
+ new
@@ -1,6 +1,66 @@
-
+ Version: 18.0.0
+
+ Date: 2007-07-31
+
+ Record: |
+ This release restores support for Synopsys VCS and Cadence NC-Sim, improves portability and performance, and enhances the VPI abstraction layer.
+
+
+ h2. Thanks
+
+ * Calvin Wong discovered "how to bypass the following error":http://rubyforge.org/forum/message.php?msg_id=25691 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>
+
+
+ h2. Caution
+
+ * "SWIG":http://www.swig.org/ is now required in order to compile and install Ruby-VPI.
+
+ * @Vpi::Handle.put_value@ 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.
+
+ * When @Vpi::Handle.put_value@ is used to write a value to a wire (VpiNet), it now _forces_ the value. This is done to ensure portability:
+
+ 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).
+
+ Note that you have to release a forced value (using @Vpi::Handle.release_value@) 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:
+
+ <code>
+ your_wire.intVal = 15
+ your_wire.release_value
+ advance_time # let the Verilog DUT modify your_wire
+ </code>
+
+ In addition, you can check if a wire has a forced value using the @Vpi::Handle.value_forced?@ method.
+
+ * If the format is not specified, @Vpi::Handle.get_value@ now assumes that you want to read the value in VpiIntVal format (because this is the most common case).
+
+ * The definition of "Derivatives" has been reworded for clarity in the "project license":readme.html#intro.license.
+
+
+ h2. Repairs
+
+ * Synopsys VCS and Cadence NC-Sim simulators now correctly load Ruby-VPI. Also, the 64-bit versions of these simulators are now supported.
+
+
+ h2. Improvements
+
+ * Added "force_value", "release_value", and "value_forced?" methods to the @Vpi::Handle@ class.
+
+ * @Vpi::Handle.put_value@ now tries to automatically detect the format of the value to be written. As a result, you can now write @your_handle.put_value 35@ in lieu of writing @your_handle.intVal = 35@.
+
+ * @Vpi::Handle.inspect@ 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).
+
+ * Added method caching (memoizing) for VPI property accesses on handles.
+
+
+-
Version: 17.0.0
Date: 2007-07-22
Record: |
@@ -88,11 +148,11 @@
Version: 16.0.0
Date: 2007-05-02
Record: |
- This release adds support for the "Cadence NC-Sim / NC-Verilog":http://www.cadence.com/products/functional_ver/nc-verilog/ simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license.
+ This release adds support for the "Cadence NC-Sim":http://www.cadence.com/products/functional_ver/nc-verilog/ simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license.
h2. Caution
* The @Integer.ensure_min@ and @Integer.ensure_max@ methods have been removed from the <tt>ruby-vpi/integer.rb</tt> library because Ruby already has idioms for these operations: <pre>
@@ -110,10 +170,10 @@
* Ruby-VPI is now developed under a "more permissive license":readme.html#intro.license that better reflects my ethical beliefs than "the previous license":http://www.gnu.org/copyleft/gpl.html.
h2. New features
- * The "Cadence NC-Sim / NC-Verilog":http://www.cadence.com/products/functional_ver/nc-verilog/ (ncsim) simulator is now supported.
+ * The "Cadence NC-Sim":http://www.cadence.com/products/functional_ver/nc-verilog/ (ncsim) simulator is now supported.
* 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 @time = S_vpi_time.new :type => VpiSuppressTime@ is equivalent to: <code>
time = S_vpi_time.new
time.type = VpiSuppressTime
</code>