doc/readme.html in ruby-vpi-15.0.2 vs doc/readme.html in ruby-vpi-16.0.0
- old
+ new
@@ -3,100 +3,137 @@
<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>Welcome to Ruby-VPI</title>
+ <title>Ruby-VPI: Ruby interface to Verilog VPI</title>
</head>
<body>
+ <style type="text/css">
+ body {
+ margin-left: 275px;
+ padding-right: 1em;
+ }
- <h1 style="margin-top: 0;" id="anchor132">1 Welcome to Ruby-VPI</h1>
+ #resources {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 200px;
+ padding: 1em;
+ border: thin solid red;
+ border-left: none;
+ border-top: none;
+ background-color: snow;
+ }
- <p>Ruby-VPI is a <a href="http://www.ruby-lang.org">Ruby</a> interface to <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945"><span class="caps">IEEE 1364</span>-2005 Verilog <span class="caps">VPI</span></a>. It lets you create complex Verilog test benches easily and wholly in Ruby.</p>
+ #resources li {
+ margin-top: 1em;
+ margin-left: -1em;
+ }
+ #resources h2 {
+ display: none;
+ }
+</style>
- <p class="title">Documentation</p>
+ <h1 style="margin-top: 0;"><a id="Ruby-VPI" href="#a-606773538">1</a> Ruby-VPI</h1>
+ <p><a href="http://www.ruby-lang.org"><img src="images/ruby/logo-reflection.png" alt="Logo of the Ruby programming language" style="margin: 0; margin-left: 2em; float: right"/></a></p>
+
+
+ <p>Ruby-VPI is a platform for unit testing, rapid prototyping, and systems integration of Verilog modules through the <a href="http://www.ruby-lang.org">Ruby programming language</a>. It lets you:</p>
+
+
<ul>
- <li><a href="manual.html#usage.tutorial">Tutorial</a>
- – learn how to use Ruby-VPI quickly.</li>
- <li><a href="manual.html">Manual</a>
- – complete documentation for users. <em>Start here!</em></li>
- <li><a href="../ref/">Reference</a>
- – <span class="caps">API</span> documentation for Ruby libraries and C extension.</li>
+ <li>Access the <em>entire</em> <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945"><span class="caps">IEEE 1364</span>-2005 Verilog <span class="caps">VPI</span></a> interface from Ruby.</li>
+ <li>Create complex Verilog test benches easily and wholly in Ruby.</li>
+ <li>Apply agile software development practices to develop hardware.</li>
+ <li>Perform <a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html">specification-driven functional verification</a> (<a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.pdf"><span class="caps">PDF</span> version</a>).</li>
</ul>
+ <p>Ruby-VPI is <a href="http://en.wikipedia.org/wiki/Open_source_software">open source software</a> released under <a href="#intro.license">this license</a>.</p>
+
+
+<div id="resources">
+
+ <h2><a id="Resources" href="#a-606776378">1.1</a> Resources</h2>
+
+
<p class="title">Records</p>
+ <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></p>
+
+
<ul>
- <li><a type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml"><img src="images/feed-icon.png" title="RSS feed icon" alt="RSS feed icon" /> RSS feed</a>
- – keep track of new releases at your leisure.</li>
- <li><a href="history.html">Release history</a>
- – record of all release notes.</li>
- <li><a href="memo.html">Memorandum</a>
+ <li><a href="history.html">What’s new?</a>
+ – a record of all release notes.</li>
+ <li><a href="memo.html">Plans</a>
– pending tasks for future releases.</li>
+ <li><a href="http://ruby-vpi.rubyforge.org/talks/">Talks</a>
+ – materials from presentations and seminars.</li>
+ <li><a href="http://ruby-vpi.rubyforge.org/papers/">Papers</a>
+ – research publications.</li>
</ul>
+ <p class="title">Documentation</p>
+
+
+ <ul>
+ <li><a href="manual.html#usage.tutorial">Tutorial</a>
+ – learn how to use Ruby-VPI quickly.</li>
+ <li><a href="manual.html">Manual</a>
+ – complete documentation for users. <em>Start here!</em></li>
+ <li><a href="../ref/">Reference</a>
+ – <span class="caps">API</span> documentation for Ruby libraries and C extension.</li>
+ </ul>
+
+
<p class="title">Facilities</p>
<ul>
- <li><a href="http://rubyforge.org/projects/ruby-vpi">Project portal</a>
- – hosted generously by <a href="http://rubyforge.org">RubyForge</a>.</li>
- <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Source code</a>
- – browse online or obtain through <a href="http://abridgegame.org/darcs/">Darcs</a>.</li>
- <li><a href="http://rubyforge.org/frs/?group_id=1339">Downloads</a>
+ <li><a href="http://rubyforge.org/frs/?group_id=1339">Downloads</a>
– obtain release packages.</li>
+ <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Source code</a>
+ – 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>
+ – discuss things and ask questions.</li>
<li><a href="http://rubyforge.org/tracker/?group_id=1339">Bugs</a>
– report defects in the software.</li>
<li><a href="http://rubyforge.org/tracker/?group_id=1339">Patches</a>
– submit patches to source code.</li>
<li><a href="http://rubyforge.org/tracker/?group_id=1339">Requests</a>
– request new features or get support.</li>
- <li><a href="http://rubyforge.org/forum/?group_id=1339">Forums</a>
- – discuss things and ask questions.</li>
+ <li><a href="http://rubyforge.org/projects/ruby-vpi">Project portal</a>
+ – hosted generously by <a href="http://rubyforge.org">RubyForge</a>.</li>
</ul>
- <p class="title">Outreach</p>
+</div>
+ <h2 ><a id="intro.features" href="#a-606777368">1.2</a> Features</h2>
- <ul>
- <li><a href="http://ruby-vpi.rubyforge.org/news">News</a>
- – see what’s cooking for the next release.</li>
- <li><a href="http://ruby-vpi.rubyforge.org/talks">Talks</a>
- – materials from presentations and seminars.</li>
- </ul>
+ <p class="title">Portable</p>
- <h2 id="intro.features">1.1 Prominent features</h2>
-
- <h3 id="anchor133">1.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 1364</span>-2005 Verilog <span class="caps">VPI</span></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>
</ul>
- <ul>
- <li>Works with all <a href="manual.html#setup.reqs">major Verilog simulators</a> available today.
- <ul>
- <li>Compiled <em>just once</em> during <a href="manual.html#setup.installation">installation</a> and used forever!</li>
- </ul></li>
- </ul>
+ <p class="title">Agile</p>
- <h3 id="anchor134">1.1.2 Agile</h3>
-
-
<ul>
<li>Enables <a href="http://agilemanifesto.org/">agile practices</a> such as
<ul>
<li><a href="http://www.testdriven.com">test-driven</a> development</li>
<li><a href="http://behaviour-driven.org">behavior-driven</a> development</li>
@@ -113,11 +150,11 @@
<li>There is absolutely <em>no compiling</em>!</li>
</ul></li>
</ul>
- <h3 id="anchor135">1.1.3 Powerful</h3>
+ <p class="title">Powerful</p>
<ul>
<li>Inherits the <a href="http://www.ruby-lang.org/en/about/">power and elegance</a> of Ruby:
<ul>
@@ -134,25 +171,95 @@
<li>Uses <a href="http://rubyforge.org/projects/ruby-debug/">ruby-debug</a> for <a href="manual.html#usage.debugger">interactive debugging</a>.</li>
<li>Uses <a href="http://eigenclass.org/hiki.rb?rcov">rcov</a> for test <a href="manual.html#usage.test-runner.env-vars">coverage analysis and report generation</a>.</li>
</ul>
- <h3 id="anchor136">1.1.4 Free</h3>
+ <h2 ><a id="intro.reqs" href="#a-606778438">1.3</a> Requirements</h2>
+ <p>The following software is necessary in order to use Ruby-VPI.</p>
+
+
+ <p class="title">Verilog simulator</p>
+
+
+ <p>Ruby-VPI is known to work with the following simulators. However, you should be able to use it with any Verilog simulator that supports <span class="caps">VPI</span>.</p>
+
+
<ul>
- <li>Gives you the <em>freedom</em> to study, modify, and distribute this software, in accordance with the <a href="http://www.gnu.org/copyleft/gpl.html"><span class="caps">GNU</span> General Public License</a>.</li>
+ <li><a href="http://www.synopsys.com/products/simulation/simulation.html">Synopsys <span class="caps">VCS</span></a>
+ – any version that supports the <tt>-load</tt> option is acceptable.</li>
</ul>
- <h2 id="intro.applications">1.2 Applications</h2>
+ <ul>
+ <li><a href="http://www.model.com">Mentor Modelsim</a>
+ – any version that supports the <tt>-pli</tt> option is acceptable.</li>
+ </ul>
- <p>Here is a modest sampling of tasks that Ruby-VPI can be used to perform.</p>
+ <ul>
+ <li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim / NC-Verilog</a>
+ – any version that supports the <tt>+loadvpi</tt> option is acceptable.</li>
+ </ul>
<ul>
+ <li><a href="http://www.pragmatic-c.com/gpl-cver/"><span class="caps">GPL</span> Cver</a>
+ – version 2.11a or newer is acceptable.</li>
+ </ul>
+
+
+ <ul>
+ <li><a href="http://www.icarus.com/eda/Verilog/">Icarus Verilog</a>
+ – version 0.8 is <em>mostly</em> acceptable—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="#problems.ivl.vpi_handle_by_name.absolute-paths">in the user manual</a>.</li>
+ </ul>
+
+
+ <p class="title">Compilers</p>
+
+
+ <ul>
+ <li><a href="http://en.wikipedia.org/wiki/Make">make</a>
+ – any flavor should be acceptable.</li>
+ </ul>
+
+
+ <ul>
+ <li>C compiler
+ – the <a href="http://www.gnu.org/software/gcc/" title="GCC"><span class="caps">GNU</span> Compiler Collection</a> is preferred, but any C compiler should be acceptable.</li>
+ </ul>
+
+
+ <ul>
+ <li><a href="http://www.ruby-lang.org">Ruby</a>
+ – 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>
+ </ul>
+
+
+ <p class="title">Libraries</p>
+
+
+ <ul>
+ <li><a href="http://en.wikipedia.org/wiki/Pthreads" title="pthreads"><span class="caps">POSIX</span> threads</a>
+ – header and linkable object files, and operating system support for this library are necessary.</li>
+ </ul>
+
+
+ <ul>
+ <li><a href="http://rubyforge.org/frs/?group_id=126">RubyGems</a>
+ – any recent version should be acceptable. You can install RubyGems by following <a href="http://www.rubygems.org/read/chapter/3">these instructions</a>.</li>
+ </ul>
+
+
+ <h2 ><a id="intro.applications" href="#a-606779428">1.4</a> Applications</h2>
+
+
+ <p>Examples of tasks that can be performed with Ruby-VPI are:</p>
+
+
+ <ul>
<li>From the second edition of <a href="http://www.sutherland-hdl.com/publications.html"><em>The Verilog <span class="caps">PLI</span> Handbook</em></a>:
<ul>
<li>C language bus-functional models</li>
<li>Reading test vector files</li>
<li>Delay calculation</li>
@@ -176,14 +283,14 @@
<li>Building a distributed simulation</li>
</ul></li>
</ul>
- <h2 id="intro.appetizers">1.3 Appetizers</h2>
+ <h2 ><a id="intro.appetizers" href="#a-606780568">1.5</a> Appetizers</h2>
- <p>Here is a modest sampling of code to whet your appetite.</p>
+ <p>Here is a tiny sampling of code to whet your appetite. See <a href="manual.html#usage.tutorial">the tutorial</a> for more samples.</p>
<ul>
<li>Assign the value 2<sup>2048</sup> to a register:</li>
</ul>
@@ -220,7 +327,63 @@
<blockquote>
<p><code class="code"><span style="color:#00D; font-weight:bold">15</span>.times { simulate }</code></p>
</blockquote>
+
+
+ <h2 ><a id="intro.license" href="#a-606781628">1.6</a> License</h2>
+
+
+ <p>Copyright© 2006-2007 Suraj N. Kurapati</p>
+
+
+ <p>Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the “Software”),
+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>All copies and portions of the Software (together the “Derivatives”) and
+their corresponding machine-readable source code (the “Code”) must include the
+above copyright notice and this permission notice. The Code must reflect all
+modifications made to the Derivatives. The Derivatives must be distributed
+either with the Code or, if the Code is obtainable for no more than the cost
+of distribution plus a nominal fee, with information on how to obtain the Code.</p>
+
+
+ <p><span class="caps">THE SOFTWARE IS PROVIDED</span> “AS IS”, <span class="caps">WITHOUT WARRANTY OF ANY KIND</span>, EXPRESS OR
+<span class="caps">IMPLIED</span>, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY</span>,
+<span class="caps">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT</span>. <span class="caps">IN NO EVENT SHALL</span>
+<span class="caps">THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM</span>, DAMAGES <span class="caps">OR OTHER</span>
+<span class="caps">LIABILITY</span>, WHETHER <span class="caps">IN AN ACTION OF CONTRACT</span>, TORT <span class="caps">OR OTHERWISE</span>, ARISING <span class="caps">FROM</span>,
+<span class="caps">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span>
+<span class="caps">THE SOFTWARE</span>.</p>
+
+
+ <h2 ><a id="intro.related-works" href="#a-606782898">1.7</a> Related works</h2>
+
+
+ <ul>
+ <li><a href="http://jove.sourceforge.net"><span class="caps">JOVE</span></a> is a Java interface to <span class="caps">VPI</span>.</li>
+ <li><a href="http://teal.sourceforge.net">Teal</a> is a C++ interface to <span class="caps">VPI</span>.</li>
+ <li><a href="http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/">ScriptEDA</a> is a Perl, Python, and Tcl interface to <span class="caps">VPI</span>.</li>
+ <li><a href="http://rhdl.rubyforge.org"><span class="caps">RHDL</span></a> is a hardware description and verification language based on Ruby.</li>
+ <li><a href="http://myhdl.jandecaluwe.com">MyHDL</a> is a hardware description and verification language based on Python, which features conversion to Verilog and co-simulation.</li>
+ </ul>
+
+
+ <h3 ><a id="intro.related-works.pli" href="#a-606785918">1.7.1</a> Ye olde <span class="caps">PLI</span></h3>
+
+
+ <p>The following projects utilize the archaic <strong>tf</strong> and <strong>acc</strong> PLI interfaces, which have been officially deprecated in <span class="caps">IEEE</span> Std 1364-2005.</p>
+
+
+ <ul>
+ <li><a href="http://www.nelsim.com">ScriptSim</a> is a Perl, Python, and Tcl/Tk interface to <span class="caps">PLI</span>.</li>
+ <li><a href="http://www.veripool.com/verilog-pli.html">Verilog::Pli</a> is a Perl interface to <span class="caps">PLI</span>.</li>
+ <li><a href="http://www.time-rover.com/jpli/"><span class="caps">JPLI</span></a> is a proprietary Java interface to <span class="caps">PLI</span>.</li>
+ </ul>
</body>
</html>