doc/manual.html in ruby-vpi-17.0.0 vs doc/manual.html in ruby-vpi-18.0.0

- old
+ new

@@ -3,35 +3,35 @@ <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link rel="stylesheet" type="text/css" href="common.css" media="screen" /> <link rel="stylesheet" type="text/css" href="print.css" media="print" /> <link rel="alternate" type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml" title="RSS feed for this project." /> - <title>Ruby-VPI 17.0.0 user manual</title> + <title>Ruby-VPI 18.0.0 user manual</title> </head> <body> + <div id="site-links"> + <a href="readme.html">Home</a> + &middot; <a href="manual.html">Manual</a> + &middot; <a href="memo.html">Memo</a> + &middot; <a href="history.html">History</a> + <hr style="display: none"/> + </div> + <div id="toc-links"> - <a href="#toc:contents">Contents</a> &middot; - <a href="#toc:tip">Tips</a> &middot; - <a href="#toc:note">Notes</a> &middot; - <a href="#toc:caution">Cautions</a> &middot; - <a href="#toc:figure">Figures</a> &middot; - <a href="#toc:table">Tables</a> &middot; - <a href="#toc:example">Examples</a> &middot; - - <a href="readme.html" style="color: green; font-size: larger;">Home page</a> + <a href="#toc:contents">Contents</a> &middot; <a href="#toc:tip">Tips</a> &middot; <a href="#toc:caution">Cautions</a> &middot; <a href="#toc:figure">Figures</a> &middot; <a href="#toc:table">Tables</a> &middot; <a href="#toc:example">Examples</a> </div> <div id="body"> <hr style="display: none"/> - <div id="Ruby-VPI_17.0.0_user_manual" class="front_cover"> - <h1 class="title"><big>Ruby-VPI 17.0.0 user manual</big></h1> + <div id="Ruby-VPI_18.0.0_user_manual" class="front_cover"> + <h1 class="title"><big>Ruby-VPI 18.0.0 user manual</big></h1> <h2 class="author">Suraj N. Kurapati</h2> - <h3 class="date">22 July 2007</h3> + <h3 class="date">31 July 2007</h3> <p> <div id="About_this_manual" class="paragraph"> <p class="title">About this manual</p> @@ -42,31 +42,31 @@ <p>In addition, this manual is distributed as one big HTML file so that you can easily search for a particular topic using nothing more than your web browser&#8217;s built-in text search mechanism. This facilitates offline reading, where an Internet search engine is not available.</p> - <p>You can give feedback about this manual and, in general, any aspect of the Ruby-VPI project on the <a href="http://rubyforge.org/forum/?group_id=1339">project forums</a>. Furthermore, you can <a href="#hacking.manual">edit this manual</a> and contribute your improvements to the <a href="http://rubyforge.org/tracker/?group_id=1339">project patches</a>. Finally, you can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org">Ruby-VPI project website</a>.</p> + <p>You can give feedback about this manual and, in general, any aspect of the Ruby-VPI project on the <a href="http://rubyforge.org/forum/?group_id=1339">project forums</a>. Furthermore, you can <a href="#hacking.manual">edit this manual</a> and contribute your improvements to the <a href="http://rubyforge.org/tracker/?group_id=1339">project patches</a>. Finally, you can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org/">Ruby-VPI project website</a>.</p> </div> <div id="Legal_notice" class="paragraph"> <p class="title">Legal notice</p> <p>This manual is distributed under <a href="#intro.license">the same license as Ruby-VPI</a>.</p> - <p>The admonition graphics used in this manual are Copyright 2005, 2006 <a href="http://tango.freedesktop.org">Tango Desktop Project</a> and are distributed under <a href="./images/tango/LICENSE">these terms</a>.</p> + <p>The admonition graphics used in this manual are Copyright 2005, 2006 <a href="http://tango.freedesktop.org/Tango_Desktop_Project">Tango Desktop Project</a> and are distributed under <a href="./images/tango/LICENSE">these terms</a>.</p> </div> </p> </div> <hr style="display: none"/> <div id="intro" class="chapter"> <h1 class="title"> - Chapter <a href="#a-607687748">2</a> + Chapter <a href="#a-607201618">2</a> <br/><br/> <big>Welcome</big> </h1> @@ -88,43 +88,47 @@ <p> <hr style="display: none"/> <div id="resources" class="section"> <h2 class="title"> - <a href="#a-607624238">2.1</a> + <a href="#a-605996598">2.1</a> &nbsp; Resources </h2> <div id="Records" class="paragraph"> <p class="title">Records</p> - <a type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml"><img src="images/feed-icon-28x28.png" alt="RSS feed for release notifications" style="float: right"/></a> - - + <ul> + <li><a href="history.html#a18.0.0">What&#8217;s new</a> + &#8211; release notes for version 18.0.0. <ul> - <li><a href="history.html">What&#8217;s new</a> - &#8211; a history of all release notes.</li> + <li><a href="history.html">History</a> + &#8211; a record of all release notes.</li> + <li><a type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml"><img src="images/feed-icon-28x28.png" alt="RSS feed for release announcements" style="float: right"/></a> <a href="http://ruby-vpi.rubyforge.org/doc/rss.xml">RSS feed</a> + &#8211; keep track of new releases at your leisure.</li> + </ul> + </li> <li><a href="memo.html">Plans</a> &#8211; pending tasks for future releases.</li> <li><a href="http://ruby-vpi.rubyforge.org/talks/">Talks</a> &#8211; materials from presentations and seminars.</li> <li><a href="http://ruby-vpi.rubyforge.org/papers/">Papers</a> &#8211; research publications.</li> - <li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a> - &#8211; why does Ruby-VPI exist?</li> </ul> </div> <div id="Documentation" class="paragraph"> <p class="title">Documentation</p> <ul> - <li><a href="manual.html">User manual</a> - &#8211; complete documentation for users. <em>Start here!</em> + <li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a> + &#8211; why was Ruby-VPI developed?</li> + <li><a href="manual.html">User manual</a> + &#8211; complete documentation for users. <ul> <li><a href="manual.html#usage.tutorial">Tutorial</a> &#8211; learn how to use Ruby-VPI quickly.</li> </ul> </li> @@ -137,21 +141,21 @@ <div id="Facilities" class="paragraph"> <p class="title">Facilities</p> <ul> <li><a href="http://rubyforge.org/frs/?group_id=1339">Downloads</a> &#8211; obtain release packages</li> - <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Source code</a> + <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi/">Source code</a> &#8211; browse online or obtain with <a href="http://darcs.net">Darcs</a>.</li> <li><a href="http://rubyforge.org/forum/?group_id=1339">Forums</a> &#8211; discuss things and ask questions.</li> <li><a href="http://rubyforge.org/tracker/?group_id=1339">Bugs</a> &#8211; report defects in the software.</li> <li><a href="http://rubyforge.org/tracker/?group_id=1339">Patches</a> &#8211; submit patches to source code.</li> <li><a href="http://rubyforge.org/tracker/?group_id=1339">Requests</a> &#8211; request new features or get support.</li> - <li><a href="http://rubyforge.org/projects/ruby-vpi">Project portal</a> + <li><a href="http://rubyforge.org/projects/ruby-vpi/">Project portal</a> &#8211; hosted generously by <a href="http://rubyforge.org">RubyForge</a>.</li> </ul> </div> @@ -162,11 +166,11 @@ <p> <hr style="display: none"/> <div id="intro.features" class="section"> <h2 class="title"> - <a href="#a-607636548">2.2</a> + <a href="#a-605842608">2.2</a> &nbsp; Features </h2> @@ -175,11 +179,11 @@ <div id="Portable" class="paragraph"> <p class="title">Portable</p> <ul> <li>Supports the <em>entire</em> <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945"><span class="caps">IEEE 1364</span>-2005 Verilog VPI</a> standard.</li> <li>Works with all <a href="#intro.reqs">major Verilog simulators</a> available today.</li> - <li>Compiled <em>just once</em> during <a href="manual.html#setup.installation">installation</a> and used forever!</li> + <li>Compiled <em>just once</em> during <a href="manual.html#setup.inst">installation</a> and used forever!</li> </ul> </div> <div id="Agile" class="paragraph"> @@ -196,11 +200,11 @@ <ul> <li>Eliminates unneccesary work: <ul> <li><a href="manual.html#usage.tutorial.specification">Specifications</a> are readable, portable, and <em>executable</em>.</li> - <li>The <a href="manual.html#usage.tools.generate-test">automated test generator</a> helps you accomodate design changes with <em>minimal</em> effort.</li> + <li>The <a href="manual.html#usage.tools.generate">automated test generator</a> helps you accomodate design changes with <em>minimal</em> effort.</li> <li>There is absolutely <em>no compiling</em>!</li> </ul></li> </ul> </div> @@ -233,11 +237,11 @@ <p> <hr style="display: none"/> <div id="intro.reqs" class="section"> <h2 class="title"> - <a href="#a-607648378">2.3</a> + <a href="#a-607160758">2.3</a> &nbsp; Requirements </h2> @@ -254,16 +258,16 @@ <ul> <li><a href="http://www.synopsys.com/products/simulation/simulation.html">Synopsys VCS</a> &#8211; any version that supports the <tt>-load</tt> option is acceptable.</li> <li><a href="http://www.model.com">Mentor Modelsim</a> &#8211; any version that supports the <tt>-pli</tt> option is acceptable.</li> - <li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim / NC-Verilog</a> - &#8211; any version that supports the <tt>+loadvpi</tt> option is acceptable.</li> + <li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a> + &#8211; any version that supports the <tt>+loadvpi</tt> option is <em>mostly</em> acceptable because you <strong>will not</strong> be able to <a href="manual.html#problem.ncsim.vpiForceFlag">force values onto wires</a>.</li> <li><a href="http://www.pragmatic-c.com/gpl-cver/">GPL Cver</a> &#8211; version 2.11a or newer is acceptable.</li> - <li><a href="http://www.icarus.com/eda/Verilog/">Icarus Verilog</a> - &#8211; version 0.8 is <em>mostly</em> acceptable&#8212;you <strong>will not</strong> be able to <a href="manual.html#background.org.vpi.util">access child handles through method calls</a>. The reason for this limitation is explained <a href="manual.html#problems.ivl.vpi_handle_by_name.absolute-paths">in the user manual</a>.</li> + <li><a href="http://www.geda.seul.org/tools/icarus/index.html">Icarus Verilog</a> + &#8211; version 0.8 is <em>mostly</em> acceptable because you <strong>will not</strong> be able to <a href="manual.html#Accessing_a_handle_s_relatives">access child handles through method calls</a>. The reason for this limitation is explained <a href="manual.html#problems.ivl.vpi_handle_by_name.absolute-paths">in the user manual</a>.</li> </ul> </div> <div id="Compilers" class="paragraph"> @@ -271,12 +275,14 @@ <ul> <li><a href="http://en.wikipedia.org/wiki/Make">make</a> &#8211; any flavor should be acceptable.</li> <li>C compiler &#8211; the <a href="http://www.gnu.org/software/gcc/" title="GCC">GNU Compiler Collection</a> is preferred, but any C compiler should be acceptable.</li> - <li><a href="http://www.ruby-lang.org">Ruby</a> - &#8211; version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following <a href="http://www.rubygarden.org/faq/section/show/3">these instructions</a>.</li> + <li><a href="http://www.swig.org/download.html">SWIG</a> + &#8211; version 1.3.29 or newer is necessary.</li> + <li><a href="http://www.ruby-lang.org/en/downloads/">Ruby</a> + &#8211; version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following <a href="http://www.ruby-lang.org/en/downloads/">these instructions</a>.</li> </ul> </div> <div id="Libraries" class="paragraph"> @@ -297,11 +303,11 @@ <p> <hr style="display: none"/> <div id="intro.applications" class="section"> <h2 class="title"> - <a href="#a-607650938">2.4</a> + <a href="#a-607163318">2.4</a> &nbsp; Applications </h2> @@ -343,11 +349,11 @@ <p> <hr style="display: none"/> <div id="intro.appetizers" class="section"> <h2 class="title"> - <a href="#a-607653538">2.5</a> + <a href="#a-607165918">2.5</a> &nbsp; Appetizers </h2> @@ -411,35 +417,37 @@ <p> <hr style="display: none"/> <div id="intro.license" class="section"> <h2 class="title"> - <a href="#a-607656258">2.6</a> + <a href="#a-607168788">2.6</a> &nbsp; License </h2> - <p>Copyright 2006 Suraj N. Kurapati &lt;snk@gna.org&gt;</p> + <p>Copyright 2006 Suraj N. Kurapati &lt;SNK at GNA dot ORG&gt;<br/> +Copyright 1999 Kazuhiro HIWADA &lt;HIWADA at KUEE dot KYOTO-U dot AC dot JP&gt;<br/></p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> - <p>1. All modified and unmodified copies and substantial portions of the Software - (the &quot;Derivatives&quot;) and their corresponding machine-readable source code (the - &quot;Code&quot;) must include the above copyright notice and this permission notice.</p> + <p>1. All copies and substantial portions of the Software, whether modified or + unmodified, (the &quot;Derivatives&quot;) and their corresponding machine-readable + source code (the &quot;Code&quot;) must include the above copyright notice and this + permission notice.</p> - <p>2. Upon distribution, the Derivatives must be accompanied either by the Code or, - if the Code is obtainable for no more than the cost of distribution plus a + <p>2. The Derivatives, upon distribution, must be accompanied by the Code or, if + the Code is obtainable for no more than the cost of distribution plus a nominal fee, by information on how to obtain the Code.</p> <p><span class="caps">THE SOFTWARE IS PROVIDED</span> &quot;AS IS&quot;, <span class="caps">WITHOUT WARRANTY OF ANY KIND</span>, EXPRESS OR IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY</span>, FITNESS @@ -455,11 +463,11 @@ <p> <hr style="display: none"/> <div id="intro.related-works" class="section"> <h2 class="title"> - <a href="#a-607661648">2.7</a> + <a href="#a-607174178">2.7</a> &nbsp; Related works </h2> @@ -476,11 +484,11 @@ <p> <hr style="display: none"/> <div id="intro.related-works.pli" class="section"> <h3 class="title"> - <a href="#a-607658708">2.7.1</a> + <a href="#a-607171238">2.7.1</a> &nbsp; Ye olde PLI </h3> @@ -503,11 +511,11 @@ <hr style="display: none"/> <div id="setup" class="chapter"> <h1 class="title"> - Chapter <a href="#a-607728418">3</a> + Chapter <a href="#a-607242278">3</a> <br/><br/> <big>Setup</big> </h1> @@ -515,11 +523,11 @@ <hr style="display: none"/> <div id="setup.manifest" class="section"> <h2 class="title"> - <a href="#a-607690938">3.1</a> + <a href="#a-607204808">3.1</a> &nbsp; Manifest </h2> @@ -541,11 +549,11 @@ <hr style="display: none"/> <div id="setup.reqs" class="section"> <h2 class="title"> - <a href="#a-607696378">3.2</a> + <a href="#a-607210248">3.2</a> &nbsp; Requirements </h2> @@ -558,11 +566,11 @@ <div class="admonition"> <div class="tip" id="Add_support_for_your_Verilog_simulator"> <img src="images/tango/tip.png" alt="tip" class="icon"/> - <p class="title"><a href="#a-607693408">Tip 1</a>. &nbsp; Add support for your Verilog simulator</p> + <p class="title"><a href="#a-607207278">Tip 1</a>. &nbsp; Add support for your Verilog simulator</p> Write a <a href="http://rubyforge.org/tracker/?group_id=1339">support request</a> for your simulator, while providing a sample transcript of the commands you use to run a test with your simulator, and I will add support for your simulator in the next release! </div> </div> </p> @@ -572,11 +580,11 @@ <hr style="display: none"/> <div id="setup.recom" class="section"> <h2 class="title"> - <a href="#a-607702548">3.3</a> + <a href="#a-607216418">3.3</a> &nbsp; Recommendations </h2> @@ -587,11 +595,11 @@ <p> <hr style="display: none"/> <div id="setup.recom.merger" class="section"> <h3 class="title"> - <a href="#a-607699208">3.3.1</a> + <a href="#a-607213078">3.3.1</a> &nbsp; Text merging tool </h3> @@ -631,11 +639,11 @@ <hr style="display: none"/> <div id="setup.inst" class="section"> <h2 class="title"> - <a href="#a-607711698">3.4</a> + <a href="#a-607225558">3.4</a> &nbsp; Installation </h2> @@ -645,34 +653,34 @@ <pre> $ gem env gemdir /usr/lib/ruby/gems/1.8 -$ ls -d /usr/lib/ruby/gems/1.8/gems/ruby-vpi* +$ ls -d `gem env gemdir`/gems/ruby-vpi* /usr/lib/ruby/gems/1.8/gems/ruby-vpi-7.0.0/ </pre> <p> <hr style="display: none"/> <div class="admonition"> - <div class="note" id="Tuning_for_maximum_performance"> - <img src="images/tango/note.png" alt="note" class="icon"/> + <div class="tip" id="Tuning_for_maximum_performance"> + <img src="images/tango/tip.png" alt="tip" class="icon"/> - <p class="title"><a href="#a-607705108">Note 1</a>. &nbsp; Tuning for maximum performance</p> + <p class="title"><a href="#a-607218968">Tip 2</a>. &nbsp; Tuning for maximum performance</p> You can tune your installation of Ruby-VPI for maximum performance by adding your C compiler&#8217;s optimization flag to the <code class="code"><span style="color:#036; font-weight:bold">CFLAGS</span></code> environment variable <em>before</em> you run the <pre>gem install -y ruby-vpi</pre> command. For example, if your C compiler is GCC, then you can set <code class="code"><span style="color:#036; font-weight:bold">CFLAGS</span></code> to <tt>-O9</tt> for maximum optimization. </div> </div> <hr style="display: none"/> <div id="setup.inst.windows" class="section"> <h3 class="title"> - <a href="#a-607707638">3.4.1</a> + <a href="#a-607221498">3.4.1</a> &nbsp; Installing on Windows </h3> @@ -719,11 +727,11 @@ <hr style="display: none"/> <div id="setup.maintenance" class="section"> <h2 class="title"> - <a href="#a-607713978">3.5</a> + <a href="#a-607227838">3.5</a> &nbsp; Maintenance </h2> @@ -743,11 +751,11 @@ <hr style="display: none"/> <div id="organization" class="chapter"> <h1 class="title"> - Chapter <a href="#a-607211338">4</a> + Chapter <a href="#a-607196488">4</a> <br/><br/> <big>Organization</big> </h1> @@ -763,11 +771,11 @@ <div class="formal"> <div class="figure" id="fig:organization.detail"> - <p class="title"><a href="#a-607731018">Figure 1</a>. &nbsp; Where does Ruby-VPI fit in?</p> + <p class="title"><a href="#a-607244878">Figure 1</a>. &nbsp; Where does Ruby-VPI fit in?</p> <img src="figures/organization_detailed.png" alt="" /> </div> </div> @@ -777,11 +785,11 @@ <p> <hr style="display: none"/> <div id="overview.relay" class="section"> <h2 class="title"> - <a href="#a-607737308">4.1</a> + <a href="#a-607251168">4.1</a> &nbsp; Ruby/Verilog interaction </h2> @@ -800,11 +808,11 @@ <div class="formal"> <div class="figure" id="fig:ruby_relay"> - <p class="title"><a href="#a-607733828">Figure 2</a>. &nbsp; Interaction between Ruby and Verilog</p> + <p class="title"><a href="#a-607247688">Figure 2</a>. &nbsp; Interaction between Ruby and Verilog</p> <img src="figures/ruby_relay.png" alt="" /> <ol> @@ -826,11 +834,11 @@ <hr style="display: none"/> <div id="organization.tests" class="section"> <h2 class="title"> - <a href="#a-607073988">4.2</a> + <a href="#a-607256738">4.2</a> &nbsp; Tests </h2> @@ -843,11 +851,11 @@ <div class="formal"> <div class="figure" id="fig:organization"> - <p class="title"><a href="#a-607070888">Figure 3</a>. &nbsp; Organization of a test in Ruby-VPI</p> + <p class="title"><a href="#a-607253638">Figure 3</a>. &nbsp; Organization of a test in Ruby-VPI</p> <img src="figures/organization.png" alt="" /> </div> </div> @@ -866,11 +874,11 @@ <p> <hr style="display: none"/> <div id="VPI_in_Ruby" class="section"> <h2 class="title"> - <a href="#a-607153008">4.3</a> + <a href="#a-607326178">4.3</a> &nbsp; VPI in Ruby </h2> @@ -878,11 +886,11 @@ <hr style="display: none"/> <div id="Deviations_from_the_VPI_standard" class="section"> <h3 class="title"> - <a href="#a-607082938">4.3.1</a> + <a href="#a-607265658">4.3.1</a> &nbsp; Deviations from the VPI standard </h3> @@ -893,11 +901,11 @@ <p> <hr style="display: none"/> <div id="Names_are_capitalized" class="section"> <h4 class="title"> - <a href="#a-607076508">4.3.1.1</a> + <a href="#a-607259228">4.3.1.1</a> &nbsp; Names are capitalized </h4> @@ -914,22 +922,22 @@ <p> <hr style="display: none"/> <div id="a_vprintf__is__printf_" class="section"> <h4 class="title"> - <a href="#a-607079008">4.3.1.2</a> + <a href="#a-607261728">4.3.1.2</a> &nbsp; <code class="code">vprintf</code> is <code class="code">printf</code> </h4> The <code class="code">vpi_vprintf</code> and <code class="code">vpi_mcd_vprintf</code> VPI functions are aliased to <code class="code">vpi_printf</code> and <code class="code">vpi_mcd_printf</code> respectively because: <ul> - <li>Ruby represents <a href="http://www.rubycentral.com/book/tut_methods.html#UA">variable argument lists as arrays</a> instead of defining a special datatype, such as <code class="code">va_list</code>, for them.</li> + <li>Ruby represents <a href="http://phrogz.net/ProgrammingRuby/tut_methods.html#variablelengthargumentlists">variable argument lists as arrays</a> instead of defining a special datatype, such as <code class="code">va_list</code>, for them.</li> </ul> <ul> <li>Some C compilers have trouble with pointers to the <code class="code">va_list</code> type. For these compilers, the third line of source code shown below causes a &#8220;type mismatch&#8221; error.</li> @@ -951,11 +959,11 @@ <hr style="display: none"/> <div id="vpi.handles" class="section"> <h3 class="title"> - <a href="#a-607114548">4.3.2</a> + <a href="#a-607291198">4.3.2</a> &nbsp; Handles </h3> @@ -980,11 +988,11 @@ <p> <hr style="display: none"/> <div id="Accessing_a_handle_s_relatives" class="section"> <h4 class="title"> - <a href="#a-607088158">4.3.2.2</a> + <a href="#a-607270878">4.3.2.2</a> &nbsp; Accessing a handle&#8217;s relatives </h4> @@ -1017,11 +1025,11 @@ <p> <hr style="display: none"/> <div id="Accessing_a_handle_s_properties" class="section"> <h4 class="title"> - <a href="#a-607091098">4.3.2.3</a> + <a href="#a-607273818">4.3.2.3</a> &nbsp; Accessing a handle&#8217;s properties </h4> @@ -1060,11 +1068,11 @@ <div class="formal"> <div class="figure" id="fig:method_naming_format"> - <p class="title"><a href="#a-607093898">Figure 4</a>. &nbsp; Method naming format for accessing a handle&#8217;s properties</p> + <p class="title"><a href="#a-607276618">Figure 4</a>. &nbsp; Method naming format for accessing a handle&#8217;s properties</p> <table> <tr> <th>Operation </th> <th>_ </th> @@ -1113,11 +1121,11 @@ <div class="formal"> <div class="table" id="tbl:accessors"> - <p class="title"><a href="#a-607096328">Table 1</a>. &nbsp; Possible accessors and their implications</p> + <p class="title"><a href="#a-607279048">Table 1</a>. &nbsp; Possible accessors and their implications</p> <table> <tr> <th>Accessor </th> <th>Kind of value accessed </th> @@ -1167,11 +1175,11 @@ <div class="formal"> <div class="table" id="ex:properties"> - <p class="title"><a href="#a-607099288">Table 2</a>. &nbsp; Examples of accessing a handle&#8217;s properties</p> + <p class="title"><a href="#a-607281988">Table 2</a>. &nbsp; Examples of accessing a handle&#8217;s properties</p> <table> <tr> <th rowspan="2">Ruby expression </th> <th colspan="6">Method naming format </th> @@ -1492,11 +1500,11 @@ <hr style="display: none"/> <div id="vpi.callbacks" class="section"> <h3 class="title"> - <a href="#a-607126458">4.3.3</a> + <a href="#a-607299628">4.3.3</a> &nbsp; Callbacks </h3> @@ -1512,11 +1520,11 @@ <div class="formal"> <div class="example" id="ex:callback"> - <p class="title"><a href="#a-607121788">Example 1</a>. &nbsp; Using a callback for value change notification</p> + <p class="title"><a href="#a-607295148">Example 1</a>. &nbsp; Using a callback for value change notification</p> <p>This example shows how to use a callback for notification of changes in a handle&#8217;s <code class="code"><span style="color:#036; font-weight:bold">VpiIntVal</span></code> property. When you no longer need this callback, you can tear it down using <code class="code">vpi_remove_cb(cb_handle)</code>.</p> <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">Example 3</a>.</p> @@ -1561,11 +1569,11 @@ <hr style="display: none"/> <div id="usage" class="chapter"> <h1 class="title"> - Chapter <a href="#a-607321458">5</a> + Chapter <a href="#a-607334198">5</a> <br/><br/> <big>Usage</big> </h1> @@ -1573,11 +1581,11 @@ <hr style="display: none"/> <div id="usage.prototyping" class="section"> <h2 class="title"> - <a href="#a-607223668">5.1</a> + <a href="#a-607215298">5.1</a> &nbsp; Prototyping </h2> @@ -1615,11 +1623,11 @@ <hr style="display: none"/> <div id="How_does_prototyping_work_" class="section"> <h3 class="title"> - <a href="#a-607218048">5.1.2</a> + <a href="#a-607205498">5.1.2</a> &nbsp; How does prototyping work? </h3> @@ -1637,11 +1645,11 @@ <hr style="display: none"/> <div id="usage.debugger" class="section"> <h2 class="title"> - <a href="#a-607229298">5.2</a> + <a href="#a-607224358">5.2</a> &nbsp; Debugging </h2> @@ -1658,11 +1666,11 @@ <p> <hr style="display: none"/> <div id="usage.debugger.init" class="section"> <h3 class="title"> - <a href="#a-607226228">5.2.1</a> + <a href="#a-607219398">5.2.1</a> &nbsp; Advanced initialization </h3> @@ -1683,11 +1691,11 @@ <hr style="display: none"/> <div id="usage.test-runner" class="section"> <h2 class="title"> - <a href="#a-607246068">5.3</a> + <a href="#a-607246938">5.3</a> &nbsp; Test runner </h2> @@ -1696,11 +1704,11 @@ <p>When you invoke a test runner without any arguments, it will show you a list of available tasks: <pre>$ rake -f your_test_runner.rake -(in /home/sun/tmp/ruby-vpi/doc) +(in /home/sun/src/ruby-vpi/doc) rake clean # Remove any temporary products. rake clobber # Remove any generated file. rake cver # Simulate with GPL Cver. rake default # Show a list of available tasks. rake ivl # Simulate with Icarus Verilog. @@ -1713,11 +1721,11 @@ <p> <hr style="display: none"/> <div id="usage.test-runner.env-vars" class="section"> <h3 class="title"> - <a href="#a-607238958">5.3.1</a> + <a href="#a-607236808">5.3.1</a> &nbsp; Environment variables </h3> @@ -1760,11 +1768,11 @@ <div class="formal"> <div class="example" id="Running_a_test_with_environment_variables"> - <p class="title"><a href="#a-607234788">Example 2</a>. &nbsp; Running a test with environment variables</p> + <p class="title"><a href="#a-607232388">Example 2</a>. &nbsp; Running a test with environment variables</p> <p>Below, we enable the prototype and code coverage analysis: <pre>rake -f your_test_runner.rake PROTOTYPE=1 COVERAGE=1</pre></p> @@ -1784,11 +1792,11 @@ <hr style="display: none"/> <div id="usage.tools" class="section"> <h2 class="title"> - <a href="#a-607265218">5.4</a> + <a href="#a-607278778">5.4</a> &nbsp; Tools </h2> @@ -1820,11 +1828,11 @@ <p> <hr style="display: none"/> <div id="usage.tools.generate" class="section"> <h3 class="title"> - <a href="#a-607255398">5.4.1</a> + <a href="#a-607262938">5.4.1</a> &nbsp; Automated test generation </h3> @@ -1850,11 +1858,11 @@ <div class="admonition"> <div class="caution" id="Do_not_rename_generated_files"> <img src="images/tango/caution.png" alt="caution" class="icon"/> - <p class="title"><a href="#a-607248828">Caution 1</a>. &nbsp; Do not rename generated files</p> + <p class="title"><a href="#a-607250958">Caution 1</a>. &nbsp; Do not rename generated files</p> Ruby-VPI uses the convention described above to dynamically create a direct Ruby interface to the design under test, so <em>do not</em> rename the generated files arbitrarily. </div> </div> @@ -1869,11 +1877,11 @@ <div class="admonition"> <div class="tip" id="Using__kdiff3__with_the_automated_test_generator."> <img src="images/tango/tip.png" alt="tip" class="icon"/> - <p class="title"><a href="#a-607251318">Tip 2</a>. &nbsp; Using <strong>kdiff3</strong> with the automated test generator.</p> + <p class="title"><a href="#a-607255718">Tip 3</a>. &nbsp; Using <strong>kdiff3</strong> with the automated test generator.</p> <ol> <li>Create a file named <tt>merge2</tt> with the following content: <pre class="code"> <span style="color:#888">#!/bin/sh</span> <span style="color:#888"># args: old file, new file</span> @@ -1895,11 +1903,11 @@ <hr style="display: none"/> <div id="usage.tools.convert" class="section"> <h3 class="title"> - <a href="#a-607257688">5.4.2</a> + <a href="#a-607265448">5.4.2</a> &nbsp; Verilog to Ruby conversion </h3> @@ -1917,27 +1925,27 @@ <hr style="display: none"/> <div id="usage.examples" class="section"> <h2 class="title"> - <a href="#a-607267438">5.5</a> + <a href="#a-607282618">5.5</a> &nbsp; Sample tests </h2> - 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. + The <tt>samp</tt> directory (<a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi//samp/">browse it online</a>) 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. </div> <hr style="display: none"/> <div id="usage.tutorial" class="section"> <h2 class="title"> - <a href="#a-607188458">5.6</a> + <a href="#a-607395798">5.6</a> &nbsp; Tutorial </h2> @@ -1956,11 +1964,11 @@ <p> <hr style="display: none"/> <div id="usage.tutorial.declare-design" class="section"> <h3 class="title"> - <a href="#a-607274848">5.6.1</a> + <a href="#a-607290888">5.6.1</a> &nbsp; Start with a Verilog design </h3> @@ -1981,11 +1989,11 @@ <div class="formal"> <div class="example" id="fig:counter.v_decl"> - <p class="title"><a href="#a-607271338">Example 3</a>. &nbsp; Declaration of a simple up-counter with synchronous reset</p> + <p class="title"><a href="#a-607287308">Example 3</a>. &nbsp; Declaration of a simple up-counter with synchronous reset</p> <pre class="code" lang="verilog"> module counter #(parameter Size = 5) ( input clock, input reset, @@ -2005,11 +2013,11 @@ <p> <hr style="display: none"/> <div id="usage.tutorial.generate-test" class="section"> <h3 class="title"> - <a href="#a-607081228">5.6.2</a> + <a href="#a-607305468">5.6.2</a> &nbsp; Generate a test </h3> @@ -2041,11 +2049,11 @@ <div class="formal"> <div class="example" id="fig:generate-test.RSpec"> - <p class="title"><a href="#a-607278188">Example 4</a>. &nbsp; Generating a test with specification in RSpec format</p> + <p class="title"><a href="#a-607296778">Example 4</a>. &nbsp; Generating a test with specification in RSpec format</p> <pre> $ ruby-vpi generate counter.v --RSpec module counter @@ -2063,11 +2071,11 @@ <div class="formal"> <div class="example" id="fig:generate-test.xUnit"> - <p class="title"><a href="#a-607073088">Example 5</a>. &nbsp; Generating a test with specification in xUnit format</p> + <p class="title"><a href="#a-607299658">Example 5</a>. &nbsp; Generating a test with specification in xUnit format</p> <pre> $ ruby-vpi generate counter.v --xUnit module counter @@ -2088,11 +2096,11 @@ <p> <hr style="display: none"/> <div id="usage.tutorial.specification" class="section"> <h3 class="title"> - <a href="#a-607098358">5.6.3</a> + <a href="#a-607315968">5.6.3</a> &nbsp; Specify your expectations </h3> @@ -2116,11 +2124,11 @@ <div class="formal"> <div class="example" id="fig:RSpec_counter_spec.rb"> - <p class="title"><a href="#a-607085368">Example 6</a>. &nbsp; Specification implemented in RSpec format</p> + <p class="title"><a href="#a-607308538">Example 6</a>. &nbsp; Specification implemented in RSpec format</p> <pre class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">spec</span><span style="color:#710">'</span></span> <span style="color:#888"># lowest upper bound of counter's value</span> <span style="color:#036; font-weight:bold">LIMIT</span> = <span style="color:#00D; font-weight:bold">2</span> ** <span style="color:#036; font-weight:bold">Counter</span>::<span style="color:#036; font-weight:bold">Size</span> @@ -2168,11 +2176,11 @@ <div class="formal"> <div class="example" id="fig:xUnit_counter_spec.rb"> - <p class="title"><a href="#a-607089898">Example 7</a>. &nbsp; Specification implemented in xUnit format</p> + <p class="title"><a href="#a-607310978">Example 7</a>. &nbsp; Specification implemented in xUnit format</p> <pre class="code">require <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">test/unit</span><span style="color:#710">'</span></span> <span style="color:#888"># lowest upper bound of counter's value</span> <span style="color:#036; font-weight:bold">LIMIT</span> = <span style="color:#00D; font-weight:bold">2</span> ** <span style="color:#036; font-weight:bold">Counter</span>::<span style="color:#036; font-weight:bold">Size</span> @@ -2217,26 +2225,10 @@ Before we continue, <ol> <li>Replace the contents of the file named <tt>RSpec/counter_spec.rb</tt> with the source code shown in <a href="#fig:RSpec_counter_spec.rb">Example 6</a>.</li> <li>Replace the contents of the file named <tt>xUnit/counter_spec.rb</tt> with the source code shown in <a href="#fig:xUnit_counter_spec.rb">Example 7</a>.</li> - <li>Replace the contents of the files named <tt>RSpec/counter_design.rb</tt> and <tt>xUnit/counter_design.rb</tt> with the following code. <pre class="code"> -<span style="color:#888"># Simulates the design under test for one clock cycle.</span> -<span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">cycle!</span> - clock.high! - advance_time - clock.low! - advance_time -<span style="color:#080; font-weight:bold">end</span> - -<span style="color:#888"># Brings the design under test into a blank state.</span> -<span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">reset!</span> - reset.high! - cycle! - reset.low! -<span style="color:#080; font-weight:bold">end</span> -</pre></li> </ol> </div> </p> @@ -2244,11 +2236,11 @@ <p> <hr style="display: none"/> <div id="usage.tutorial.implement-proto" class="section"> <h3 class="title"> - <a href="#a-607106078">5.6.4</a> + <a href="#a-607322378">5.6.4</a> &nbsp; Implement the prototype </h3> @@ -2261,11 +2253,11 @@ <div class="formal"> <div class="example" id="fig:counter_proto.rb"> - <p class="title"><a href="#a-607102138">Example 8</a>. &nbsp; Ruby prototype of our Verilog design</p> + <p class="title"><a href="#a-607318638">Example 8</a>. &nbsp; Ruby prototype of our Verilog design</p> <pre class="code"><span style="color:#888"># Ruby prototype of the design under test's Verilog implementation.</span> <span style="color:#080; font-weight:bold">def</span> <span style="color:#06B; font-weight:bold">feign!</span> <span style="color:#080; font-weight:bold">if</span> clock.posedge? <span style="color:#080; font-weight:bold">if</span> reset.high? @@ -2288,11 +2280,11 @@ <p> <hr style="display: none"/> <div id="usage.tutorial.test-proto" class="section"> <h3 class="title"> - <a href="#a-607132558">5.6.5</a> + <a href="#a-607341078">5.6.5</a> &nbsp; Verify the prototype </h3> @@ -2308,11 +2300,11 @@ <div class="formal"> <div class="example" id="fig:test-proto.RSpec"> - <p class="title"><a href="#a-607119008">Example 9</a>. &nbsp; Running a test with specification in RSpec format</p> + <p class="title"><a href="#a-607325878">Example 9</a>. &nbsp; Running a test with specification in RSpec format</p> <pre> $ cd RSpec $ rake cver PROTOTYPE=1 @@ -2332,11 +2324,11 @@ <div class="formal"> <div class="example" id="fig:test-proto.unit-test"> - <p class="title"><a href="#a-607123158">Example 10</a>. &nbsp; Running a test with specification in xUnit format</p> + <p class="title"><a href="#a-607330448">Example 10</a>. &nbsp; Running a test with specification in xUnit format</p> <pre> $ cd xUnit $ rake cver PROTOTYPE=1 @@ -2356,11 +2348,11 @@ <div class="admonition"> <div class="tip" id="What_can_the_test_runner_do_"> <img src="images/tango/tip.png" alt="tip" class="icon"/> - <p class="title"><a href="#a-607126068">Tip 3</a>. &nbsp; What can the test runner do?</p> + <p class="title"><a href="#a-607335018">Tip 4</a>. &nbsp; What can the test runner do?</p> If you invoke the test runner (1) without any arguments or (2) with the <tt>--tasks</tt> option, it will show you a list of tasks that it can perform for you. </div> </div> </p> @@ -2372,11 +2364,11 @@ <p> <hr style="display: none"/> <div id="usage.tutorial.implement-design" class="section"> <h3 class="title"> - <a href="#a-607138718">5.6.6</a> + <a href="#a-607349478">5.6.6</a> &nbsp; Implement the design </h3> @@ -2389,11 +2381,11 @@ <div class="formal"> <div class="example" id="fig:counter.v_impl"> - <p class="title"><a href="#a-607135238">Example 11</a>. &nbsp; Implementation of a simple up-counter with synchronous reset</p> + <p class="title"><a href="#a-607343828">Example 11</a>. &nbsp; Implementation of a simple up-counter with synchronous reset</p> <pre class="code" lang="verilog">/** A simple up-counter with synchronous reset. @param Size Number of bits used to represent the counter's value. @@ -2426,11 +2418,11 @@ <p> <hr style="display: none"/> <div id="usage.tutorial.test-design" class="section"> <h3 class="title"> - <a href="#a-607149178">5.6.7</a> + <a href="#a-607359608">5.6.7</a> &nbsp; Verify the design </h3> @@ -2446,11 +2438,11 @@ <div class="formal"> <div class="example" id="fig:test-design.RSpec"> - <p class="title"><a href="#a-607141778">Example 12</a>. &nbsp; Running a test with specification in RSpec format</p> + <p class="title"><a href="#a-607352688">Example 12</a>. &nbsp; Running a test with specification in RSpec format</p> <pre> $ cd RSpec $ rake cver @@ -2468,11 +2460,11 @@ <div class="formal"> <div class="example" id="fig:test-design.unit-test"> - <p class="title"><a href="#a-607144398">Example 13</a>. &nbsp; Running a test with specification in xUnit format</p> + <p class="title"><a href="#a-607355168">Example 13</a>. &nbsp; Running a test with specification in xUnit format</p> <pre> $ cd xUnit $ rake cver @@ -2497,11 +2489,11 @@ <hr style="display: none"/> <div id="hacking" class="chapter"> <h1 class="title"> - Chapter <a href="#a-607333248">6</a> + Chapter <a href="#a-607351098">6</a> <br/><br/> <big>Hacking</big> </h1> @@ -2509,11 +2501,11 @@ <p> <hr style="display: none"/> <div id="hacking.scm" class="section"> <h2 class="title"> - <a href="#a-607323788">6.1</a> + <a href="#a-607337768">6.1</a> &nbsp; Getting the source code </h2> @@ -2530,11 +2522,11 @@ <p> <hr style="display: none"/> <div id="hacking.release-packages" class="section"> <h2 class="title"> - <a href="#a-607326418">6.2</a> + <a href="#a-607340498">6.2</a> &nbsp; Building release packages </h2> @@ -2558,11 +2550,11 @@ <p> <hr style="display: none"/> <div id="hacking.manual" class="section"> <h2 class="title"> - <a href="#a-607328648">6.3</a> + <a href="#a-607344628">6.3</a> &nbsp; Editing this manual </h2> @@ -2576,11 +2568,11 @@ <hr style="display: none"/> <div id="problems" class="chapter"> <h1 class="title"> - Chapter <a href="#a-607380138">7</a> + Chapter <a href="#a-607417768">7</a> <br/><br/> <big>Known problems</big> </h1> @@ -2591,43 +2583,46 @@ <p> <hr style="display: none"/> <div id="problem.ivl" class="section"> <h2 class="title"> - <a href="#a-607358828">7.1</a> + <a href="#a-607385318">7.1</a> &nbsp; Icarus Verilog </h2> - -<hr style="display: none"/> + <p>The following sections describe problems that occur when Icarus Verilog is used with Ruby-VPI.</p> -<div id="problems.ivl.vpi_handle_by_name.absolute-paths" class="section"> - <h3 class="title"> - <a href="#a-607339198">7.1.1</a> - &nbsp; + <p> + <hr style="display: none"/> - Give full paths to Verilog objects - </h3> + <div id="problems.ivl.vpi_handle_by_name.absolute-paths" class="section"> + <h3 class="title"> + <a href="#a-607359978">7.1.1</a> - <p>In version 0.8 and snapshot 20061009 of Icarus Verilog, the <code class="code">vpi_handle_by_name</code> function requires an <em>absolute</em> path (including the name of the bench which instantiates the design) to a Verilog object. In addition, <code class="code">vpi_handle_by_name</code> always returns <code class="code"><span style="color:#038; font-weight:bold">nil</span></code> when its second parameter is specified.</p> + &nbsp; + Give full paths to Verilog objects + </h3> + <p>In version 0.8 and snapshot 20061009 of Icarus Verilog, the <code class="code">vpi_handle_by_name</code> function requires an <em>absolute</em> path (including the name of the bench which instantiates the design) to a Verilog object. In addition, <code class="code">vpi_handle_by_name</code> always returns <code class="code"><span style="color:#038; font-weight:bold">nil</span></code> when its second parameter is specified.</p> + + <p>For example, consider <a href="#ex:TestFoo">Example 14</a>. Here, one must write <code class="code">vpi_handle_by_name(<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">TestFoo.my_foo.clk</span><span style="color:#710">&quot;</span></span>, <span style="color:#038; font-weight:bold">nil</span>)</code> instead of <code class="code">vpi_handle_by_name(<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">my_foo.clk</span><span style="color:#710">&quot;</span></span>, <span style="color:#036; font-weight:bold">TestFoo</span>)</code> in order to access the <code class="code">clk</code> input of the <code class="code">my_foo</code> module instance.</p> <p> <hr style="display: none"/> <div class="formal"> <div class="example" id="ex:TestFoo"> - <p class="title"><a href="#a-607336038">Example 14</a>. &nbsp; Part of a bench which instantiates a Verilog design</p> + <p class="title"><a href="#a-607355728">Example 14</a>. &nbsp; Part of a bench which instantiates a Verilog design</p> <pre class="code" lang="verilog"> module TestFoo; reg clk_reg; Foo my_foo(.clk(clk_reg)); @@ -2635,18 +2630,18 @@ </pre> </div> </div> </p> -</div> - + </div> + <hr style="display: none"/> <div id="problems.ivl.vpi_handle_by_name.connect-registers" class="section"> <h3 class="title"> - <a href="#a-607348888">7.1.2</a> + <a href="#a-607371468">7.1.2</a> &nbsp; Registers must be connected </h3> @@ -2665,11 +2660,11 @@ <div class="formal"> <div class="example" id="ex:TestFoo_bad"> - <p class="title"><a href="#a-607342098">Example 15</a>. &nbsp; Bad design with unconnected registers</p> + <p class="title"><a href="#a-607364178">Example 15</a>. &nbsp; Bad design with unconnected registers</p> Here the <code class="code">clk_reg</code> register is not connected to anything. <pre class="code" lang="verilog"> @@ -2685,11 +2680,11 @@ <div class="formal"> <div class="example" id="ex:TestFoo_fix"> - <p class="title"><a href="#a-607344538">Example 16</a>. &nbsp; Fixed design with wired registers</p> + <p class="title"><a href="#a-607366888">Example 16</a>. &nbsp; Fixed design with wired registers</p> Here the <code class="code">clk_reg</code> register is connected to the <code class="code">clk_wire</code> wire. <pre class="code" lang="verilog"> @@ -2704,36 +2699,76 @@ </p> </div> + <hr style="display: none"/> + + <div id="problems.ivl.vpi_reset" class="section"> + <h3 class="title"> + <a href="#a-607373948">7.1.3</a> + + &nbsp; + + Vpi::reset + </h3> + + 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. + + </div> +</p> + </div> <hr style="display: none"/> - <div id="problems.ivl.vpi_reset" class="section"> + <div id="problem.ncsim" class="section"> <h2 class="title"> - <a href="#a-607361048">7.2</a> + <a href="#a-607390998">7.2</a> &nbsp; - Vpi::reset + Cadence NC-Sim </h2> - 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>The following sections describe problems that occur when Cadence NC-Sim (version 05.83-s003) is used with Ruby-VPI.</p> + + <p> + <hr style="display: none"/> + + <div id="problem.ncsim.vpiForceFlag" class="section"> + <h3 class="title"> + <a href="#a-607387788">7.2.1</a> + + &nbsp; + + Cannot force values onto handles + </h3> + + <p>When you write to a handle&#8217;s value using <code class="code">vpi_put_value()</code> with the <code class="code"><span style="color:#036; font-weight:bold">VpiForceFlag</span></code> propagation parameter, it does not have any effect. As a result, the &#8220;register_file&#8221; sample test fails when you run it with NC-Sim.</p> + + + <p>This might be a bug in NC-Sim itself: even though I specified the &#8220;+access+rwc&#8221; command-line option for NC-Sim, I&#8217;m thinking that the force/release capability is not really enabled. However, it&#8217;s more likely that there&#8217;s a bug in the &#8220;register_file&#8221; sample test.</p> + + + <p>If you happen to know the solution, please tell me either on the project forums or via e-mail (see the LICENSE file for my e-mail address). Thanks.</p> + + </div> +</p> + </div> </p> </div> <hr style="display: none"/> <div id="glossary" class="chapter"> <h1 class="title"> - Chapter <a href="#a-607138038">8</a> + Chapter <a href="#a-607450218">8</a> <br/><br/> <big>Glossary</big> </h1> @@ -2741,11 +2776,11 @@ <hr style="display: none"/> <div id="glossary.test" class="section"> <h2 class="title"> - <a href="#a-607382968">8.1</a> + <a href="#a-607420598">8.1</a> &nbsp; Test </h2> @@ -2757,11 +2792,11 @@ <hr style="display: none"/> <div id="glossary.design" class="section"> <h2 class="title"> - <a href="#a-607385468">8.2</a> + <a href="#a-607423098">8.2</a> &nbsp; Design </h2> @@ -2773,11 +2808,11 @@ <hr style="display: none"/> <div id="glossary.specification" class="section"> <h2 class="title"> - <a href="#a-607076108">8.3</a> + <a href="#a-607425858">8.3</a> &nbsp; Specification </h2> @@ -2789,11 +2824,11 @@ <hr style="display: none"/> <div id="glossary.expectation" class="section"> <h2 class="title"> - <a href="#a-607080598">8.4</a> + <a href="#a-607428078">8.4</a> &nbsp; Expectation </h2> @@ -2805,11 +2840,11 @@ <hr style="display: none"/> <div id="glossary.handle" class="section"> <h2 class="title"> - <a href="#a-607087288">8.5</a> + <a href="#a-607430558">8.5</a> &nbsp; Handle </h2> @@ -2821,11 +2856,11 @@ <hr style="display: none"/> <div id="glossary.rake" class="section"> <h2 class="title"> - <a href="#a-607093708">8.6</a> + <a href="#a-607432818">8.6</a> &nbsp; Rake </h2> @@ -2842,30 +2877,30 @@ <hr style="display: none"/> <div id="glossary.RSpec" class="section"> <h2 class="title"> - <a href="#a-607099278">8.7</a> + <a href="#a-607435358">8.7</a> &nbsp; RSpec </h2> <p>The <a href="#glossary.BDD">BDD</a> framework for Ruby.</p> - <p>See the <a href="http://rspec.rubyforge.org">RSpec website</a> and <a href="http://rspec.rubyforge.org/tutorials/index.html">tutorial</a> for more information.</p> + <p>See the <a href="http://rspec.rubyforge.org">RSpec website</a> and <a href="http://rspec.rubyforge.org/documentation/index.html">tutorial</a> for more information.</p> </div> <hr style="display: none"/> <div id="glossary.TDD" class="section"> <h2 class="title"> - <a href="#a-607104428">8.8</a> + <a href="#a-607437618">8.8</a> &nbsp; Test driven development </h2> @@ -2880,11 +2915,11 @@ <hr style="display: none"/> <div id="glossary.BDD" class="section"> <h2 class="title"> - <a href="#a-607113088">8.9</a> + <a href="#a-607439878">8.9</a> &nbsp; Behavior driven development </h2> @@ -2900,55 +2935,52 @@ </div> <hr style="display: none"/> <div id="toc"> <h1 id="toc:contents">Contents</h1> - <ul><li><span class="hide">1 </span><a id="a-607611558" href="#Ruby-VPI_17.0.0_user_manual">Ruby-VPI 17.0.0 user manual</a><ul><li><span class="hide">1.1 </span><a id="a-607604718" href="#About_this_manual">About this manual</a></li><li><span class="hide">1.2 </span><a id="a-607607248" href="#Legal_notice">Legal notice</a></li></ul></li><li><span class="hide">2 </span><a id="a-607687748" href="#intro">Welcome</a><ul><li><span class="hide">2.1 </span><a id="a-607624238" href="#resources">Resources</a><ul><li><span class="hide">2.1.1 </span><a id="a-607614278" href="#Records">Records</a></li><li><span class="hide">2.1.2 </span><a id="a-607616618" href="#Documentation">Documentation</a></li><li><span class="hide">2.1.3 </span><a id="a-607619258" href="#Facilities">Facilities</a></li></ul></li><li><span class="hide">2.2 </span><a id="a-607636548" href="#intro.features">Features</a><ul><li><span class="hide">2.2.1 </span><a id="a-607626878" href="#Portable">Portable</a></li><li><span class="hide">2.2.2 </span><a id="a-607629278" href="#Agile">Agile</a></li><li><span class="hide">2.2.3 </span><a id="a-607631678" href="#Powerful">Powerful</a></li></ul></li><li><span class="hide">2.3 </span><a id="a-607648378" href="#intro.reqs">Requirements</a><ul><li><span class="hide">2.3.1 </span><a id="a-607639108" href="#Verilog_simulator">Verilog simulator</a></li><li><span class="hide">2.3.2 </span><a id="a-607641448" href="#Compilers">Compilers</a></li><li><span class="hide">2.3.3 </span><a id="a-607643748" href="#Libraries">Libraries</a></li></ul></li><li><span class="hide">2.4 </span><a id="a-607650938" href="#intro.applications">Applications</a></li><li><span class="hide">2.5 </span><a id="a-607653538" href="#intro.appetizers">Appetizers</a></li><li><span class="hide">2.6 </span><a id="a-607656258" href="#intro.license">License</a></li><li><span class="hide">2.7 </span><a id="a-607661648" href="#intro.related-works">Related works</a><ul><li><span class="hide">2.7.1 </span><a id="a-607658708" href="#intro.related-works.pli">Ye olde PLI</a></li></ul></li></ul></li><li><span class="hide">3 </span><a id="a-607728418" href="#setup">Setup</a><ul><li><span class="hide">3.1 </span><a id="a-607690938" href="#setup.manifest">Manifest</a></li><li><span class="hide">3.2 </span><a id="a-607696378" href="#setup.reqs">Requirements</a></li><li><span class="hide">3.3 </span><a id="a-607702548" href="#setup.recom">Recommendations</a><ul><li><span class="hide">3.3.1 </span><a id="a-607699208" href="#setup.recom.merger">Text merging tool</a></li></ul></li><li><span class="hide">3.4 </span><a id="a-607711698" href="#setup.inst">Installation</a><ul><li><span class="hide">3.4.1 </span><a id="a-607707638" href="#setup.inst.windows">Installing on Windows</a></li></ul></li><li><span class="hide">3.5 </span><a id="a-607713978" href="#setup.maintenance">Maintenance</a></li></ul></li><li><span class="hide">4 </span><a id="a-607211338" href="#organization">Organization</a><ul><li><span class="hide">4.1 </span><a id="a-607737308" href="#overview.relay">Ruby/Verilog interaction</a></li><li><span class="hide">4.2 </span><a id="a-607073988" href="#organization.tests">Tests</a></li><li><span class="hide">4.3 </span><a id="a-607153008" href="#VPI_in_Ruby">VPI in Ruby</a><ul><li><span class="hide">4.3.1 </span><a id="a-607082938" href="#Deviations_from_the_VPI_standard">Deviations from the VPI standard</a><ul><li><span class="hide">4.3.1.1 </span><a id="a-607076508" href="#Names_are_capitalized">Names are capitalized</a></li><li><span class="hide">4.3.1.2 </span><a id="a-607079008" href="#a_vprintf__is__printf_"><code class="code">vprintf</code> is <code class="code">printf</code></a></li></ul></li><li><span class="hide">4.3.2 </span><a id="a-607114548" href="#vpi.handles">Handles</a><ul><li><span class="hide">4.3.2.1 </span><a id="a-607085598" href="#Shortcuts_for_productivity">Shortcuts for productivity</a></li><li><span class="hide">4.3.2.2 </span><a id="a-607088158" href="#Accessing_a_handle_s_relatives">Accessing a handle&#8217;s relatives</a></li><li><span class="hide">4.3.2.3 </span><a id="a-607091098" href="#Accessing_a_handle_s_properties">Accessing a handle&#8217;s properties</a></li></ul></li><li><span class="hide">4.3.3 </span><a id="a-607126458" href="#vpi.callbacks">Callbacks</a></li></ul></li></ul></li><li><span class="hide">5 </span><a id="a-607321458" href="#usage">Usage</a><ul><li><span class="hide">5.1 </span><a id="a-607223668" href="#usage.prototyping">Prototyping</a><ul><li><span class="hide">5.1.1 </span><a id="a-607215768" href="#Getting_started">Getting started</a></li><li><span class="hide">5.1.2 </span><a id="a-607218048" href="#How_does_prototyping_work_">How does prototyping work?</a></li></ul></li><li><span class="hide">5.2 </span><a id="a-607229298" href="#usage.debugger">Debugging</a><ul><li><span class="hide">5.2.1 </span><a id="a-607226228" href="#usage.debugger.init">Advanced initialization</a></li></ul></li><li><span class="hide">5.3 </span><a id="a-607246068" href="#usage.test-runner">Test runner</a><ul><li><span class="hide">5.3.1 </span><a id="a-607238958" href="#usage.test-runner.env-vars">Environment variables</a><ul><li><span class="hide">5.3.1.1 </span><a id="a-607232388" href="#Variables_as_command-line_arguments">Variables as command-line arguments</a></li></ul></li></ul></li><li><span class="hide">5.4 </span><a id="a-607265218" href="#usage.tools">Tools</a><ul><li><span class="hide">5.4.1 </span><a id="a-607255398" href="#usage.tools.generate">Automated test generation</a></li><li><span class="hide">5.4.2 </span><a id="a-607257688" href="#usage.tools.convert">Verilog to Ruby conversion</a></li></ul></li><li><span class="hide">5.5 </span><a id="a-607267438" href="#usage.examples">Sample tests</a></li><li><span class="hide">5.6 </span><a id="a-607188458" href="#usage.tutorial">Tutorial</a><ul><li><span class="hide">5.6.1 </span><a id="a-607274848" href="#usage.tutorial.declare-design">Start with a Verilog design</a></li><li><span class="hide">5.6.2 </span><a id="a-607081228" href="#usage.tutorial.generate-test">Generate a test</a></li><li><span class="hide">5.6.3 </span><a id="a-607098358" href="#usage.tutorial.specification">Specify your expectations</a></li><li><span class="hide">5.6.4 </span><a id="a-607106078" href="#usage.tutorial.implement-proto">Implement the prototype</a></li><li><span class="hide">5.6.5 </span><a id="a-607132558" href="#usage.tutorial.test-proto">Verify the prototype</a></li><li><span class="hide">5.6.6 </span><a id="a-607138718" href="#usage.tutorial.implement-design">Implement the design</a></li><li><span class="hide">5.6.7 </span><a id="a-607149178" href="#usage.tutorial.test-design">Verify the design</a></li></ul></li></ul></li><li><span class="hide">6 </span><a id="a-607333248" href="#hacking">Hacking</a><ul><li><span class="hide">6.1 </span><a id="a-607323788" href="#hacking.scm">Getting the source code</a></li><li><span class="hide">6.2 </span><a id="a-607326418" href="#hacking.release-packages">Building release packages</a></li><li><span class="hide">6.3 </span><a id="a-607328648" href="#hacking.manual">Editing this manual</a></li></ul></li><li><span class="hide">7 </span><a id="a-607380138" href="#problems">Known problems</a><ul><li><span class="hide">7.1 </span><a id="a-607358828" href="#problem.ivl">Icarus Verilog</a><ul><li><span class="hide">7.1.1 </span><a id="a-607339198" href="#problems.ivl.vpi_handle_by_name.absolute-paths">Give full paths to Verilog objects</a></li><li><span class="hide">7.1.2 </span><a id="a-607348888" href="#problems.ivl.vpi_handle_by_name.connect-registers">Registers must be connected</a></li></ul></li><li><span class="hide">7.2 </span><a id="a-607361048" href="#problems.ivl.vpi_reset">Vpi::reset</a></li></ul></li><li><span class="hide">8 </span><a id="a-607138038" href="#glossary">Glossary</a><ul><li><span class="hide">8.1 </span><a id="a-607382968" href="#glossary.test">Test</a></li><li><span class="hide">8.2 </span><a id="a-607385468" href="#glossary.design">Design</a></li><li><span class="hide">8.3 </span><a id="a-607076108" href="#glossary.specification">Specification</a></li><li><span class="hide">8.4 </span><a id="a-607080598" href="#glossary.expectation">Expectation</a></li><li><span class="hide">8.5 </span><a id="a-607087288" href="#glossary.handle">Handle</a></li><li><span class="hide">8.6 </span><a id="a-607093708" href="#glossary.rake">Rake</a></li><li><span class="hide">8.7 </span><a id="a-607099278" href="#glossary.RSpec">RSpec</a></li><li><span class="hide">8.8 </span><a id="a-607104428" href="#glossary.TDD">Test driven development</a></li><li><span class="hide">8.9 </span><a id="a-607113088" href="#glossary.BDD">Behavior driven development</a></li></ul></li></ul> + <ul><li><span class="hide">1 </span><a id="a-606440488" href="#Ruby-VPI_18.0.0_user_manual">Ruby-VPI 18.0.0 user manual</a><ul><li><span class="hide">1.1 </span><a id="a-606415398" href="#About_this_manual">About this manual</a></li><li><span class="hide">1.2 </span><a id="a-606424618" href="#Legal_notice">Legal notice</a></li></ul></li><li><span class="hide">2 </span><a id="a-607201618" href="#intro">Welcome</a><ul><li><span class="hide">2.1 </span><a id="a-605996598" href="#resources">Resources</a><ul><li><span class="hide">2.1.1 </span><a id="a-606452258" href="#Records">Records</a></li><li><span class="hide">2.1.2 </span><a id="a-606462328" href="#Documentation">Documentation</a></li><li><span class="hide">2.1.3 </span><a id="a-605931928" href="#Facilities">Facilities</a></li></ul></li><li><span class="hide">2.2 </span><a id="a-605842608" href="#intro.features">Features</a><ul><li><span class="hide">2.2.1 </span><a id="a-606012168" href="#Portable">Portable</a></li><li><span class="hide">2.2.2 </span><a id="a-606021388" href="#Agile">Agile</a></li><li><span class="hide">2.2.3 </span><a id="a-606032478" href="#Powerful">Powerful</a></li></ul></li><li><span class="hide">2.3 </span><a id="a-607160758" href="#intro.reqs">Requirements</a><ul><li><span class="hide">2.3.1 </span><a id="a-605864868" href="#Verilog_simulator">Verilog simulator</a></li><li><span class="hide">2.3.2 </span><a id="a-607153788" href="#Compilers">Compilers</a></li><li><span class="hide">2.3.3 </span><a id="a-607156088" href="#Libraries">Libraries</a></li></ul></li><li><span class="hide">2.4 </span><a id="a-607163318" href="#intro.applications">Applications</a></li><li><span class="hide">2.5 </span><a id="a-607165918" href="#intro.appetizers">Appetizers</a></li><li><span class="hide">2.6 </span><a id="a-607168788" href="#intro.license">License</a></li><li><span class="hide">2.7 </span><a id="a-607174178" href="#intro.related-works">Related works</a><ul><li><span class="hide">2.7.1 </span><a id="a-607171238" href="#intro.related-works.pli">Ye olde PLI</a></li></ul></li></ul></li><li><span class="hide">3 </span><a id="a-607242278" href="#setup">Setup</a><ul><li><span class="hide">3.1 </span><a id="a-607204808" href="#setup.manifest">Manifest</a></li><li><span class="hide">3.2 </span><a id="a-607210248" href="#setup.reqs">Requirements</a></li><li><span class="hide">3.3 </span><a id="a-607216418" href="#setup.recom">Recommendations</a><ul><li><span class="hide">3.3.1 </span><a id="a-607213078" href="#setup.recom.merger">Text merging tool</a></li></ul></li><li><span class="hide">3.4 </span><a id="a-607225558" href="#setup.inst">Installation</a><ul><li><span class="hide">3.4.1 </span><a id="a-607221498" href="#setup.inst.windows">Installing on Windows</a></li></ul></li><li><span class="hide">3.5 </span><a id="a-607227838" href="#setup.maintenance">Maintenance</a></li></ul></li><li><span class="hide">4 </span><a id="a-607196488" href="#organization">Organization</a><ul><li><span class="hide">4.1 </span><a id="a-607251168" href="#overview.relay">Ruby/Verilog interaction</a></li><li><span class="hide">4.2 </span><a id="a-607256738" href="#organization.tests">Tests</a></li><li><span class="hide">4.3 </span><a id="a-607326178" href="#VPI_in_Ruby">VPI in Ruby</a><ul><li><span class="hide">4.3.1 </span><a id="a-607265658" href="#Deviations_from_the_VPI_standard">Deviations from the VPI standard</a><ul><li><span class="hide">4.3.1.1 </span><a id="a-607259228" href="#Names_are_capitalized">Names are capitalized</a></li><li><span class="hide">4.3.1.2 </span><a id="a-607261728" href="#a_vprintf__is__printf_"><code class="code">vprintf</code> is <code class="code">printf</code></a></li></ul></li><li><span class="hide">4.3.2 </span><a id="a-607291198" href="#vpi.handles">Handles</a><ul><li><span class="hide">4.3.2.1 </span><a id="a-607268318" href="#Shortcuts_for_productivity">Shortcuts for productivity</a></li><li><span class="hide">4.3.2.2 </span><a id="a-607270878" href="#Accessing_a_handle_s_relatives">Accessing a handle&#8217;s relatives</a></li><li><span class="hide">4.3.2.3 </span><a id="a-607273818" href="#Accessing_a_handle_s_properties">Accessing a handle&#8217;s properties</a></li></ul></li><li><span class="hide">4.3.3 </span><a id="a-607299628" href="#vpi.callbacks">Callbacks</a></li></ul></li></ul></li><li><span class="hide">5 </span><a id="a-607334198" href="#usage">Usage</a><ul><li><span class="hide">5.1 </span><a id="a-607215298" href="#usage.prototyping">Prototyping</a><ul><li><span class="hide">5.1.1 </span><a id="a-607200928" href="#Getting_started">Getting started</a></li><li><span class="hide">5.1.2 </span><a id="a-607205498" href="#How_does_prototyping_work_">How does prototyping work?</a></li></ul></li><li><span class="hide">5.2 </span><a id="a-607224358" href="#usage.debugger">Debugging</a><ul><li><span class="hide">5.2.1 </span><a id="a-607219398" href="#usage.debugger.init">Advanced initialization</a></li></ul></li><li><span class="hide">5.3 </span><a id="a-607246938" href="#usage.test-runner">Test runner</a><ul><li><span class="hide">5.3.1 </span><a id="a-607236808" href="#usage.test-runner.env-vars">Environment variables</a><ul><li><span class="hide">5.3.1.1 </span><a id="a-607229738" href="#Variables_as_command-line_arguments">Variables as command-line arguments</a></li></ul></li></ul></li><li><span class="hide">5.4 </span><a id="a-607278778" href="#usage.tools">Tools</a><ul><li><span class="hide">5.4.1 </span><a id="a-607262938" href="#usage.tools.generate">Automated test generation</a></li><li><span class="hide">5.4.2 </span><a id="a-607265448" href="#usage.tools.convert">Verilog to Ruby conversion</a></li></ul></li><li><span class="hide">5.5 </span><a id="a-607282618" href="#usage.examples">Sample tests</a></li><li><span class="hide">5.6 </span><a id="a-607395798" href="#usage.tutorial">Tutorial</a><ul><li><span class="hide">5.6.1 </span><a id="a-607290888" href="#usage.tutorial.declare-design">Start with a Verilog design</a></li><li><span class="hide">5.6.2 </span><a id="a-607305468" href="#usage.tutorial.generate-test">Generate a test</a></li><li><span class="hide">5.6.3 </span><a id="a-607315968" href="#usage.tutorial.specification">Specify your expectations</a></li><li><span class="hide">5.6.4 </span><a id="a-607322378" href="#usage.tutorial.implement-proto">Implement the prototype</a></li><li><span class="hide">5.6.5 </span><a id="a-607341078" href="#usage.tutorial.test-proto">Verify the prototype</a></li><li><span class="hide">5.6.6 </span><a id="a-607349478" href="#usage.tutorial.implement-design">Implement the design</a></li><li><span class="hide">5.6.7 </span><a id="a-607359608" href="#usage.tutorial.test-design">Verify the design</a></li></ul></li></ul></li><li><span class="hide">6 </span><a id="a-607351098" href="#hacking">Hacking</a><ul><li><span class="hide">6.1 </span><a id="a-607337768" href="#hacking.scm">Getting the source code</a></li><li><span class="hide">6.2 </span><a id="a-607340498" href="#hacking.release-packages">Building release packages</a></li><li><span class="hide">6.3 </span><a id="a-607344628" href="#hacking.manual">Editing this manual</a></li></ul></li><li><span class="hide">7 </span><a id="a-607417768" href="#problems">Known problems</a><ul><li><span class="hide">7.1 </span><a id="a-607385318" href="#problem.ivl">Icarus Verilog</a><ul><li><span class="hide">7.1.1 </span><a id="a-607359978" href="#problems.ivl.vpi_handle_by_name.absolute-paths">Give full paths to Verilog objects</a></li><li><span class="hide">7.1.2 </span><a id="a-607371468" href="#problems.ivl.vpi_handle_by_name.connect-registers">Registers must be connected</a></li><li><span class="hide">7.1.3 </span><a id="a-607373948" href="#problems.ivl.vpi_reset">Vpi::reset</a></li></ul></li><li><span class="hide">7.2 </span><a id="a-607390998" href="#problem.ncsim">Cadence NC-Sim</a><ul><li><span class="hide">7.2.1 </span><a id="a-607387788" href="#problem.ncsim.vpiForceFlag">Cannot force values onto handles</a></li></ul></li></ul></li><li><span class="hide">8 </span><a id="a-607450218" href="#glossary">Glossary</a><ul><li><span class="hide">8.1 </span><a id="a-607420598" href="#glossary.test">Test</a></li><li><span class="hide">8.2 </span><a id="a-607423098" href="#glossary.design">Design</a></li><li><span class="hide">8.3 </span><a id="a-607425858" href="#glossary.specification">Specification</a></li><li><span class="hide">8.4 </span><a id="a-607428078" href="#glossary.expectation">Expectation</a></li><li><span class="hide">8.5 </span><a id="a-607430558" href="#glossary.handle">Handle</a></li><li><span class="hide">8.6 </span><a id="a-607432818" href="#glossary.rake">Rake</a></li><li><span class="hide">8.7 </span><a id="a-607435358" href="#glossary.RSpec">RSpec</a></li><li><span class="hide">8.8 </span><a id="a-607437618" href="#glossary.TDD">Test driven development</a></li><li><span class="hide">8.9 </span><a id="a-607439878" href="#glossary.BDD">Behavior driven development</a></li></ul></li></ul> <h1 id="toc:tip">Tips</h1> <ol> - <li><a href="#Add_support_for_your_Verilog_simulator" id="a-607693408">Add support for your Verilog simulator</a></li> - <li><a href="#Using__kdiff3__with_the_automated_test_generator." id="a-607251318">Using <strong>kdiff3</strong> with the automated test generator.</a></li> - <li><a href="#What_can_the_test_runner_do_" id="a-607126068">What can the test runner do?</a></li> + <li><a href="#Add_support_for_your_Verilog_simulator" id="a-607207278">Add support for your Verilog simulator</a></li> + <li><a href="#Tuning_for_maximum_performance" id="a-607218968">Tuning for maximum performance</a></li> + <li><a href="#Using__kdiff3__with_the_automated_test_generator." id="a-607255718">Using <strong>kdiff3</strong> with the automated test generator.</a></li> + <li><a href="#What_can_the_test_runner_do_" id="a-607335018">What can the test runner do?</a></li> </ol> - <h1 id="toc:note">Notes</h1> - <ol> - <li><a href="#Tuning_for_maximum_performance" id="a-607705108">Tuning for maximum performance</a></li> - </ol> <h1 id="toc:caution">Cautions</h1> <ol> - <li><a href="#Do_not_rename_generated_files" id="a-607248828">Do not rename generated files</a></li> + <li><a href="#Do_not_rename_generated_files" id="a-607250958">Do not rename generated files</a></li> </ol> <h1 id="toc:figure">Figures</h1> <ol> - <li><a href="#fig:organization.detail" id="a-607731018">Where does Ruby-VPI fit in?</a></li> - <li><a href="#fig:ruby_relay" id="a-607733828">Interaction between Ruby and Verilog</a></li> - <li><a href="#fig:organization" id="a-607070888">Organization of a test in Ruby-VPI</a></li> - <li><a href="#fig:method_naming_format" id="a-607093898">Method naming format for accessing a handle&#8217;s properties</a></li> + <li><a href="#fig:organization.detail" id="a-607244878">Where does Ruby-VPI fit in?</a></li> + <li><a href="#fig:ruby_relay" id="a-607247688">Interaction between Ruby and Verilog</a></li> + <li><a href="#fig:organization" id="a-607253638">Organization of a test in Ruby-VPI</a></li> + <li><a href="#fig:method_naming_format" id="a-607276618">Method naming format for accessing a handle&#8217;s properties</a></li> </ol> <h1 id="toc:table">Tables</h1> <ol> - <li><a href="#tbl:accessors" id="a-607096328">Possible accessors and their implications</a></li> - <li><a href="#ex:properties" id="a-607099288">Examples of accessing a handle&#8217;s properties</a></li> + <li><a href="#tbl:accessors" id="a-607279048">Possible accessors and their implications</a></li> + <li><a href="#ex:properties" id="a-607281988">Examples of accessing a handle&#8217;s properties</a></li> </ol> <h1 id="toc:example">Examples</h1> <ol> - <li><a href="#ex:callback" id="a-607121788">Using a callback for value change notification</a></li> - <li><a href="#Running_a_test_with_environment_variables" id="a-607234788">Running a test with environment variables</a></li> - <li><a href="#fig:counter.v_decl" id="a-607271338">Declaration of a simple up-counter with synchronous reset</a></li> - <li><a href="#fig:generate-test.RSpec" id="a-607278188">Generating a test with specification in RSpec format</a></li> - <li><a href="#fig:generate-test.xUnit" id="a-607073088">Generating a test with specification in xUnit format</a></li> - <li><a href="#fig:RSpec_counter_spec.rb" id="a-607085368">Specification implemented in RSpec format</a></li> - <li><a href="#fig:xUnit_counter_spec.rb" id="a-607089898">Specification implemented in xUnit format</a></li> - <li><a href="#fig:counter_proto.rb" id="a-607102138">Ruby prototype of our Verilog design</a></li> - <li><a href="#fig:test-proto.RSpec" id="a-607119008">Running a test with specification in RSpec format</a></li> - <li><a href="#fig:test-proto.unit-test" id="a-607123158">Running a test with specification in xUnit format</a></li> - <li><a href="#fig:counter.v_impl" id="a-607135238">Implementation of a simple up-counter with synchronous reset</a></li> - <li><a href="#fig:test-design.RSpec" id="a-607141778">Running a test with specification in RSpec format</a></li> - <li><a href="#fig:test-design.unit-test" id="a-607144398">Running a test with specification in xUnit format</a></li> - <li><a href="#ex:TestFoo" id="a-607336038">Part of a bench which instantiates a Verilog design</a></li> - <li><a href="#ex:TestFoo_bad" id="a-607342098">Bad design with unconnected registers</a></li> - <li><a href="#ex:TestFoo_fix" id="a-607344538">Fixed design with wired registers</a></li> + <li><a href="#ex:callback" id="a-607295148">Using a callback for value change notification</a></li> + <li><a href="#Running_a_test_with_environment_variables" id="a-607232388">Running a test with environment variables</a></li> + <li><a href="#fig:counter.v_decl" id="a-607287308">Declaration of a simple up-counter with synchronous reset</a></li> + <li><a href="#fig:generate-test.RSpec" id="a-607296778">Generating a test with specification in RSpec format</a></li> + <li><a href="#fig:generate-test.xUnit" id="a-607299658">Generating a test with specification in xUnit format</a></li> + <li><a href="#fig:RSpec_counter_spec.rb" id="a-607308538">Specification implemented in RSpec format</a></li> + <li><a href="#fig:xUnit_counter_spec.rb" id="a-607310978">Specification implemented in xUnit format</a></li> + <li><a href="#fig:counter_proto.rb" id="a-607318638">Ruby prototype of our Verilog design</a></li> + <li><a href="#fig:test-proto.RSpec" id="a-607325878">Running a test with specification in RSpec format</a></li> + <li><a href="#fig:test-proto.unit-test" id="a-607330448">Running a test with specification in xUnit format</a></li> + <li><a href="#fig:counter.v_impl" id="a-607343828">Implementation of a simple up-counter with synchronous reset</a></li> + <li><a href="#fig:test-design.RSpec" id="a-607352688">Running a test with specification in RSpec format</a></li> + <li><a href="#fig:test-design.unit-test" id="a-607355168">Running a test with specification in xUnit format</a></li> + <li><a href="#ex:TestFoo" id="a-607355728">Part of a bench which instantiates a Verilog design</a></li> + <li><a href="#ex:TestFoo_bad" id="a-607364178">Bad design with unconnected registers</a></li> + <li><a href="#ex:TestFoo_fix" id="a-607366888">Fixed design with wired registers</a></li> </ol> </div> </body> </html>