doc/manual.html in ruby-vpi-14.0.0 vs doc/manual.html in ruby-vpi-15.0.0
- old
+ new
@@ -73,36 +73,37 @@
</ul>
</li>
<li>5.1.2 <a href="#usage.vpi.callbacks">Callbacks</a></li>
</ul>
</li>
- <li>5.2 <a href="#usage.debugger">Debugging</a>
+ <li>5.2 <a href="#usage.prototyping">Prototyping</a></li>
+ <li>5.3 <a href="#usage.debugger">Debugging</a>
<ul>
- <li>5.2.1 <a href="#usage.debugger.init">Advanced initialization</a></li>
+ <li>5.3.1 <a href="#usage.debugger.init">Advanced initialization</a></li>
</ul>
</li>
- <li>5.3 <a href="#usage.test-runner">Test runner</a>
+ <li>5.4 <a href="#usage.test-runner">Test runner</a>
<ul>
- <li>5.3.1 <a href="#usage.test-runner.env-vars">Environment variables</a></li>
+ <li>5.4.1 <a href="#usage.test-runner.env-vars">Environment variables</a></li>
</ul>
</li>
- <li>5.4 <a href="#usage.examples">Sample tests</a></li>
- <li>5.5 <a href="#usage.tools">Tools</a>
+ <li>5.5 <a href="#usage.examples">Sample tests</a></li>
+ <li>5.6 <a href="#usage.tools">Tools</a>
<ul>
- <li>5.5.1 <a href="#usage.tools.generate-test">Automated test generation</a></li>
- <li>5.5.2 <a href="#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></li>
+ <li>5.6.1 <a href="#usage.tools.generate-test">Automated test generation</a></li>
+ <li>5.6.2 <a href="#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></li>
</ul>
</li>
- <li>5.6 <a href="#usage.tutorial">Tutorial</a>
+ <li>5.7 <a href="#usage.tutorial">Tutorial</a>
<ul>
- <li>5.6.1 <a href="#usage.tutorial.declare-design">Start with a design</a></li>
- <li>5.6.2 <a href="#usage.tutorial.generate-test">Generate a test</a></li>
- <li>5.6.3 <a href="#usage.tutorial.specification">Specify your expectations</a></li>
- <li>5.6.4 <a href="#usage.tutorial.implement-proto">Implement the prototype</a></li>
- <li>5.6.5 <a href="#usage.tutorial.test-proto">Verify the prototype</a></li>
- <li>5.6.6 <a href="#usage.tutorial.implement-design">Implement the design</a></li>
- <li>5.6.7 <a href="#usage.tutorial.test-design">Verify the design</a></li>
+ <li>5.7.1 <a href="#usage.tutorial.declare-design">Start with a design</a></li>
+ <li>5.7.2 <a href="#usage.tutorial.generate-test">Generate a test</a></li>
+ <li>5.7.3 <a href="#usage.tutorial.specification">Specify your expectations</a></li>
+ <li>5.7.4 <a href="#usage.tutorial.implement-proto">Implement the prototype</a></li>
+ <li>5.7.5 <a href="#usage.tutorial.test-proto">Verify the prototype</a></li>
+ <li>5.7.6 <a href="#usage.tutorial.implement-design">Implement the design</a></li>
+ <li>5.7.7 <a href="#usage.tutorial.test-design">Verify the design</a></li>
</ul>
</li>
</ul>
</li>
<li>6 <a href="#hacking">Hacking</a>
@@ -177,11 +178,15 @@
<li><a href="#important1">Before we continue…</a></li>
<li><a href="#important2">Before we continue…</a></li>
<li><a href="#important3">Before we continue…</a></li>
<li><a href="#important4">Before we continue…</a></li>
</ol>
- <h1>Formals</h1>
+ <h2>Cautions</h2>
+ <ol>
+ <li><a href="#caution1">caution1</a></li>
+ </ol>
+ <h1>Formals</h1>
<h2>Figures</h2>
<ol>
<li><a href="#fig..organization">Overall organization of a test</a></li>
<li><a href="#fig..organization.detail">Detailed organization of a test</a></li>
@@ -216,11 +221,11 @@
</ol>
</div>
<h1 id="anchor4">1 Ruby-VPI user manual</h1>
- <p>This manual was last updated on Sat Dec 30 19:26:28 <span class="caps">PST 2006</span>.</p>
+ <p>This manual was last updated on Sat Jan 13 16:42:19 <span class="caps">PST 2007</span>.</p>
<p>It is meant to be read in conjunction with the <a href="../ref/ruby/index.html">reference documentation for Ruby-VPI</a>. In addition, if you are new to <a href="http://www.ruby-lang.org">the Ruby language</a>, you are encouraged to <a href="http://www.ruby-lang.org/en/documentation/">explore its documentation</a> alongside this manual.</p>
@@ -253,11 +258,11 @@
<h3 id="anchor5">2.1.1 Portable</h3>
<ul>
- <li>Supports 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 standard.</li>
+ <li>Supports 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 standard.</li>
</ul>
<ul>
<li>Works with all <a href="manual.html#setup.reqs">major Verilog simulators</a> available today.
@@ -760,11 +765,11 @@
<p>For example, the <code class="code">s_vpi_value</code> structure becomes the <code class="code"><span style="color:#036; font-weight:bold">S_vpi_value</span></code> class in Ruby. Likewise, the <code class="code">vpiIntVal</code> constant becomes the <code class="code"><span style="color:#036; font-weight:bold">VpiIntVal</span></code> constant in Ruby.</p>
- <p>Note that this capitalization rule does <strong>not</strong> apply to <span class="caps">VPI</span> functions; their names remain <em>unchanged</em> in Ruby.</p>
+ <p>Note that this capitalization rule does <em>not</em> apply to <span class="caps">VPI</span> functions; their names remain unchanged in Ruby.</p>
<h3 id="usage.vpi.handles">5.1.1 Handles</h3>
@@ -822,11 +827,11 @@
<h4 id="anchor10">5.1.1.2 Accessing a handle’s properties</h4>
- <p>To access a handle’s properties, invoke the proprty name, using the following format, as a method on the handle. <a href="#ex..properties">the example named “Examples of accessing a handle’s properties”</a> shows how this naming format is used.</p>
+ <p>To access a handle’s properties, invoke the property name, using the following format, as a method on the handle. <a href="#ex..properties">the example named “Examples of accessing a handle’s properties”</a> shows how this naming format is used.</p>
<div class="formal">
<div class="figure" id="figure4">
@@ -1278,26 +1283,26 @@
<p>In this example, the handle being monitored is the <code class="code"><span style="color:#036; font-weight:bold">Counter</span>.count</code> signal from <a href="#fig..counter.v_decl">the example named “Declaration of a simple up-counter with synchronous reset”</a>.</p>
<pre class="code">
-cb_time = <span style="color:#036; font-weight:bold">S_vpi_time</span>.new
-cb_time.type = <span style="color:#036; font-weight:bold">VpiSimTime</span>
-cb_time.low = <span style="color:#00D; font-weight:bold">0</span>
-cb_time.high = <span style="color:#00D; font-weight:bold">0</span>
+cbTime = <span style="color:#036; font-weight:bold">S_vpi_time</span>.new
+cbTime.type = <span style="color:#036; font-weight:bold">VpiSimTime</span>
+cbTime.low = <span style="color:#00D; font-weight:bold">0</span>
+cbTime.high = <span style="color:#00D; font-weight:bold">0</span>
-cb_value = <span style="color:#036; font-weight:bold">S_vpi_value</span>.new
-cb_value.format = <span style="color:#036; font-weight:bold">VpiIntVal</span>
+cbValue = <span style="color:#036; font-weight:bold">S_vpi_value</span>.new
+cbValue.format = <span style="color:#036; font-weight:bold">VpiIntVal</span>
-cb_data = <span style="color:#036; font-weight:bold">S_cb_data</span>.new
-cb_data.reason = <span style="color:#036; font-weight:bold">CbValueChange</span>
-cb_data.obj = <span style="color:#036; font-weight:bold">Counter</span>.count
-cb_data.time = cb_time
-cb_data.value = cb_value
-cb_data.index = <span style="color:#00D; font-weight:bold">0</span>
+cbData = <span style="color:#036; font-weight:bold">S_cb_data</span>.new
+cbData.reason = <span style="color:#036; font-weight:bold">CbValueChange</span>
+cbData.obj = <span style="color:#036; font-weight:bold">Counter</span>.count
+cbData.time = cbTime
+cbData.value = cbValue
+cbData.index = <span style="color:#00D; font-weight:bold">0</span>
-cb_handle = vpi_register_cb(cb_data) <span style="color:#080; font-weight:bold">do</span> |data|
+cbHandle = vpi_register_cb(cbData) <span style="color:#080; font-weight:bold">do</span> |data|
time = (data.time.high << <span style="color:#00D; font-weight:bold">32</span>) | data.time.low
count = data.value.value.integer
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>time<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>count<span style="font-weight: bold; color: #888">}</span></span><span style="color:#710">"</span></span>
@@ -1416,23 +1421,44 @@
</div>
</div>
- <h2 id="usage.debugger">5.2 Debugging</h2>
+ <h2 id="usage.prototyping">5.2 Prototyping</h2>
+ <p>Ruby-VPI enables you to rapidly prototype your designs in Ruby without having to do full-scale implementations in Verilog. This lets you explore and evaluate different design choices quickly.</p>
+
+
+In order to create a prototype,
+ <ol>
+ <li><a href="#usage.tutorial.declare-design">Determine the <strong>interface</strong></a> (Verilog module declaration) of your design.</li>
+ <li><a href="#usage.tutorial.generate-test">Generate a test</a> for that interface.</li>
+ <li><a href="#usage.tutorial.implement-proto">Implement the prototype</a> in the generated <tt>proto.rb</tt> file.</li>
+ <li><a href="#usage.tutorial.test-proto">Verify the prototype</a> against its specification.</li>
+ </ol>
+
+
+ <p>Once you are satisfied with your prototype, you can proceed to <a href="#usage.tutorial.implement-design">implement your design in Verilog</a>. This process is often a simple translation your Ruby prototype into your Verilog. At the very least, your prototype serves as a reference while you are implementing your Verilog design.</p>
+
+
+ <p>Once your design has been implemented in Verilog, you can use the <em>same</em> specification, which was originally used to verify your prototype, to verify your Verilog design.</p>
+
+
+ <h2 id="usage.debugger">5.3 Debugging</h2>
+
+
<p>The <a href="http://www.datanoise.com/articles/category/ruby-debug">ruby-debug project</a> serves as the interactive debugger for Ruby-VPI.</p>
<ol>
<li>Enable the debugger by activating the <code class="code"><span style="color:#036; font-weight:bold">DEBUG</span></code> environment variable (see <a href="#usage.test-runner">the section named “Test runner”</a> for details).</li>
<li>Put the <code class="code">debugger</code> command in your code—anywhere you wish to activate an interactive debugging session. These commands are automatically ignored when the debugger is disabled; so you can safely leave them in your code, if you wish.</li>
</ol>
- <h3 id="usage.debugger.init">5.2.1 Advanced initialization</h3>
+ <h3 id="usage.debugger.init">5.3.1 Advanced initialization</h3>
<p>By default, Ruby-VPI enables the debugger by invoking the <code class="code"><span style="color:#036; font-weight:bold">Debugger</span>.start</code> method. If you wish to perform more advanced initialization, such as having the debugger accept remote network connections for interfacing with a remote debugging session or perhaps with an <span class="caps">IDE</span> (see <a href="http://www.datanoise.com/articles/category/ruby-debug">the ruby-debug documentation</a> for details), then:</p>
@@ -1440,11 +1466,11 @@
<li>Deactivate the <code class="code"><span style="color:#036; font-weight:bold">DEBUG</span></code> environment variable.</li>
<li>Put your own code, which initializes the debugger, above the <code class="code"><span style="color:#036; font-weight:bold">RubyVpi</span>.init_bench</code> line in your generated <tt>spec.rb</tt> file.</li>
</ol>
- <h2 id="usage.test-runner">5.3 Test runner</h2>
+ <h2 id="usage.test-runner">5.4 Test runner</h2>
<p>A test runner is a file, generated by the <a href="#usage.tools.generate-test">automated test generator</a>, whose name ends with <tt>.rake</tt>. It helps you run generated tests—you can think of it as a <em>makefile</em> if you are familiar with C programming in a <span class="caps">UNIX</span> environment.</p>
@@ -1495,11 +1521,11 @@
</div>
</div>
- <h3 id="usage.test-runner.env-vars">5.3.1 Environment variables</h3>
+ <h3 id="usage.test-runner.env-vars">5.4.1 Environment variables</h3>
<p>Test runners support the following <em>environment</em> variables, which allow you to easily change the behavior of the test runner.</p>
@@ -1542,23 +1568,23 @@
</div>
</div>
- <h2 id="usage.examples">5.4 Sample tests</h2>
+ <h2 id="usage.examples">5.5 Sample tests</h2>
<p>The <tt>samp</tt> directory contains several sample tests which illustrate how Ruby-VPI can be used. Each sample has an associated <tt>Rakefile</tt> which simplifies the process of running it. Therefore, simply navigate into an example directory and run the <pre>rake</pre> command to get started.</p>
- <h2 id="usage.tools">5.5 Tools</h2>
+ <h2 id="usage.tools">5.6 Tools</h2>
<p>The <tt>bin</tt> directory contains various utilities which ease the process of writing tests. Each tool provides help and usage information invoked with the <tt>--help</tt> option.</p>
- <h3 id="usage.tools.generate-test">5.5.1 Automated test generation</h3>
+ <h3 id="usage.tools.generate-test">5.6.1 Automated test generation</h3>
<p>The automated test generator (<strong>generate_test.rb</strong>) generates tests from Verilog 2001 module declarations, as demonstrated <a href="#usage.tutorial.generate-test">in the tutorial</a>. A generated test is composed of the following parts:</p>
@@ -1606,20 +1632,20 @@
</div>
</div>
- <h3 id="usage.tools.verilog-ruby-conv">5.5.2 Verilog to Ruby conversion</h3>
+ <h3 id="usage.tools.verilog-ruby-conv">5.6.2 Verilog to Ruby conversion</h3>
<p>The <strong>header_to_ruby.rb</strong> tool can be used to convert Verilog header files into Ruby. You can try it by running the <pre>header_to_ruby.rb --help</pre> command.</p>
<p>By converting Verilog header files into Ruby, your <a href="#glossary.test">test</a> can utilize the same <code class="code"><span style="background-color:#f0fff0"><span style="color:#161">`</span><span style="color:#2B2">define</span></span></code> constants that are used in the Verilog <a href="#glossary.design">design</a>.</p>
- <h2 id="usage.tutorial">5.6 Tutorial</h2>
+ <h2 id="usage.tutorial">5.7 Tutorial</h2>
<ol>
<li><a href="#usage.tutorial.declare-design">Declare the design</a>, which is a Verilog module, using Verilog 2001 syntax.</li>
<li><a href="#usage.tutorial.generate-test">Generate a test</a> for the design using the <a href="#usage.tools.generate-test">automated test generator</a> tool.</li>
@@ -1629,11 +1655,11 @@
<li><a href="#usage.tutorial.implement-design">Implement the design</a> in Verilog once the prototype has been verified.</li>
<li><a href="#usage.tutorial.test-design">Verify the design</a> against the specification.</li>
</ol>
- <h3 id="usage.tutorial.declare-design">5.6.1 Start with a design</h3>
+ <h3 id="usage.tutorial.declare-design">5.7.1 Start with a design</h3>
<p>First, we need a <a href="#glossary.design">design</a> to verify. In this tutorial, <a href="#fig..counter.v_decl">the example named “Declaration of a simple up-counter with synchronous reset”</a> will serve as our design. Its interface is composed of the following parts:</p>
@@ -1680,11 +1706,11 @@
</div>
</div>
- <h3 id="usage.tutorial.generate-test">5.6.2 Generate a test</h3>
+ <h3 id="usage.tutorial.generate-test">5.7.2 Generate a test</h3>
<p>Now that we have a <a href="#glossary.design">design</a> to verify, let us generate a <a href="#glossary.test">test</a> for it using the <a href="#usage.tools.generate-test">automated test generator</a>. This tool allows us to implement our specification in either rSpec, xUnit, or our very own format.</p>
@@ -1760,11 +1786,11 @@
</div>
</div>
- <h3 id="usage.tutorial.specification">5.6.3 Specify your expectations</h3>
+ <h3 id="usage.tutorial.specification">5.7.3 Specify your expectations</h3>
<p>So far, the test generation tool has created a basic foundation for our <a href="#glossary.test">test</a>. Now we must build upon this foundation by identifying our <a href="#glossary.expectation">expectation</a> of the <a href="#glossary.design">design</a>. That is, how do we expect the design to <em>behave</em> under certain conditions?</p>
@@ -1910,11 +1936,11 @@
</div>
</div>
- <h3 id="usage.tutorial.implement-proto">5.6.4 Implement the prototype</h3>
+ <h3 id="usage.tutorial.implement-proto">5.7.4 Implement the prototype</h3>
<p>Now that we have a <a href="#glossary.specification">specification</a> against which to verify our <a href="#glossary.design">design</a>, let us build a prototype of our design. By doing so, we exercise our specification, experience potential problems that may arise when we later implement our design in Verilog, and gain confidence in our work. The result of this proceess is illustrated by <a href="#fig..counter_proto.rb">the example named “Ruby prototype of our Verilog design”</a>.</p>
@@ -1923,16 +1949,21 @@
<div class="example" id="fig..counter_proto.rb">
<p class="title">Example 10. Ruby prototype of our Verilog design</p>
-<pre class="code">
+<pre class="code"><span style="color:#888"># This is a prototype of the design under test.</span>
+
+<span style="color:#888"># When prototyping is enabled, Vpi::advance_time invokes this</span>
+<span style="color:#888"># method instead of transferring control to the Verilog simulator.</span>
<span style="color:#080; font-weight:bold">def</span> <span style="color:#036; font-weight:bold">Counter</span>.simulate!
- <span style="color:#080; font-weight:bold">if</span> reset.intVal == <span style="color:#00D; font-weight:bold">1</span>
- count.intVal = <span style="color:#00D; font-weight:bold">0</span>
- <span style="color:#080; font-weight:bold">else</span>
- count.intVal += <span style="color:#00D; font-weight:bold">1</span>
+ <span style="color:#080; font-weight:bold">if</span> clock.posedge?
+ <span style="color:#080; font-weight:bold">if</span> reset.intVal == <span style="color:#00D; font-weight:bold">1</span>
+ count.intVal = <span style="color:#00D; font-weight:bold">0</span>
+ <span style="color:#080; font-weight:bold">else</span>
+ count.intVal += <span style="color:#00D; font-weight:bold">1</span>
+ <span style="color:#080; font-weight:bold">end</span>
<span style="color:#080; font-weight:bold">end</span>
<span style="color:#080; font-weight:bold">end</span>
</pre>
</div>
@@ -1954,16 +1985,19 @@
</div>
</div>
- <h3 id="usage.tutorial.test-proto">5.6.5 Verify the prototype</h3>
+ <h3 id="usage.tutorial.test-proto">5.7.5 Verify the prototype</h3>
<p>Now that we have implemented our prototype, we are ready to verify it against our <a href="#glossary.specification">specification</a> by running the <a href="#glossary.test">test</a>. This process is illustrated by <a href="#fig..test-proto.rspec">the example named “Running a test with specification in rSpec format”</a> and <a href="#fig..test-proto.unit-test">the example named “Running a test with specification in xUnit format”</a>.</p>
+ <p>In these examples, the <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code> environment variable is assigned a non-empty value while running the test so that, instead of our design, our prototype is verified against our specification. You can also assign a value to <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code> before running the test, by using your shell’s <strong>export</strong> or <strong>setenv</strong> command. Finally, the <a href="#setup.reqs"><span class="caps">GPL</span> Cver simulator</a>, denoted by <em>cver</em>, is used to run the simulation.</p>
+
+
<div class="formal">
<div class="example" id="fig..test-proto.rspec">
<p class="title">Example 11. Running a test with specification in rSpec format</p>
@@ -2012,13 +2046,10 @@
</div>
</div>
- <p>In these examples, the <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code> environment variable is assigned a non-empty value while running the test so that, instead of our design, our prototype is verified against our specification. You can also assign a value to <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code> before running the test, by using your shell’s <strong>export</strong> or <strong>setenv</strong> command. Finally, the <a href="#setup.reqs"><span class="caps">GPL</span> Cver simulator</a>, denoted by <em>cver</em>, is used to run the simulation.</p>
-
-
<div class="admonition">
<div class="tip" id="tip4">
<p style="float:left"><img src="images/tip.png" title="tip" alt="tip" /></p>
@@ -2032,11 +2063,11 @@
</div>
</div>
- <h3 id="usage.tutorial.implement-design">5.6.6 Implement the design</h3>
+ <h3 id="usage.tutorial.implement-design">5.7.6 Implement the design</h3>
<p>Now that we have implemented and verified our prototype, we are ready to implement our <a href="#glossary.design">design</a>. This is often quite simple because we translate <em>existing</em> code from Ruby (our prototype) into Verilog (our design). The result of this process is illustrated by <a href="#fig..counter.v_impl">the example named “Implementation of a simple up-counter with synchronous reset”</a>.</p>
@@ -2088,16 +2119,19 @@
</div>
</div>
- <h3 id="usage.tutorial.test-design">5.6.7 Verify the design</h3>
+ <h3 id="usage.tutorial.test-design">5.7.7 Verify the design</h3>
<p>Now that we have implemented our <a href="#glossary.design">design</a>, we are ready to verify it against our <a href="#glossary.specification">specification</a> by running the <a href="#glossary.test">test</a>. <a href="#fig..test-design.rspec">the example named “Running a test with specification in rSpec format”</a> and <a href="#fig..test-design.unit-test">the example named “Running a test with specification in xUnit format”</a> illustrate this process.</p>
+ <p>In these examples, the <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code> environment variable is <em>not</em> specified while running the test, so that our design, instead of our prototype, is verified against our specification. You can also achieve this effect by assigning an empty value to <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code>, or by using your shell’s <strong>unset</strong> command. Finally, the <a href="#setup.reqs"><span class="caps">GPL</span> Cver simulator</a>, denoted by <em>cver</em>, is used to run the simulation.</p>
+
+
<div class="formal">
<div class="example" id="fig..test-design.rspec">
<p class="title">Example 14. Running a test with specification in rSpec format</p>
@@ -2142,13 +2176,10 @@
</div>
</div>
- <p>In these examples, the <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code> environment variable is <em>not</em> specified while running the test, so that our design, instead of our prototype, is verified against our specification. You can also achieve this effect by assigning an empty value to <code class="code"><span style="color:#036; font-weight:bold">PROTOTYPE</span></code>, or by using your shell’s <strong>unset</strong> command. Finally, the <a href="#setup.reqs"><span class="caps">GPL</span> Cver simulator</a>, denoted by <em>cver</em>, is used to run the simulation.</p>
-
-
<h1 id="hacking">6 Hacking</h1>
<h2 id="hacking.release-packages">6.1 Building release packages</h2>
@@ -2309,10 +2340,25 @@
</div>
<h3 id="problems.ivl.vpi_reset">7.2.2 Vpi::reset</h3>
-<div class="caution">The <code class="code">vpi_control</code> method was removed in release 3.0.0 (2006-04-23). Please use <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::vpi_control(<span style="color:#036; font-weight:bold">VpiReset</span>)</code> instead.</div>
+<div class="admonition">
+
+<div class="caution" id="caution1">
+
+ <p style="float:left"><img src="images/caution.png" title="caution" alt="caution" /></p>
+
+
+ <p class="title">Caution:</p>
+
+
+ <p>The <code class="code">vpi_control</code> method was removed in release 3.0.0 (2006-04-23). Please use <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::vpi_control(<span style="color:#036; font-weight:bold">VpiReset</span>)</code> instead.</p>
+
+
+</div>
+
+</div>
<p>In version 0.8 of Icarus Verilog, the <code class="code">vpi_control(vpiReset)</code> VPI function causes an assertion to fail inside the simulator. As a result, the simulation terminates and a core dump is produced.</p>
<h2 id="problems.vsim">7.3 Mentor Modelsim</h2>