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 &nbsp; 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> &nbsp; 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> - &#8211; learn how to use Ruby-VPI quickly.</li> - <li><a href="manual.html">Manual</a> - &#8211; complete documentation for users. <em>Start here!</em></li> - <li><a href="../ref/">Reference</a> - &#8211; <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> &nbsp; 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> - &#8211; keep track of new releases at your leisure.</li> - <li><a href="history.html">Release history</a> - &#8211; record of all release notes.</li> - <li><a href="memo.html">Memorandum</a> + <li><a href="history.html">What&#8217;s new?</a> + &#8211; a record of all release notes.</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> </ul> + <p class="title">Documentation</p> + + + <ul> + <li><a href="manual.html#usage.tutorial">Tutorial</a> + &#8211; learn how to use Ruby-VPI quickly.</li> + <li><a href="manual.html">Manual</a> + &#8211; complete documentation for users. <em>Start here!</em></li> + <li><a href="../ref/">Reference</a> + &#8211; <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> - &#8211; 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> - &#8211; 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> &#8211; obtain release packages.</li> + <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/forum/?group_id=1339">Forums</a> - &#8211; discuss things and ask questions.</li> + <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> - <p class="title">Outreach</p> +</div> + <h2 ><a id="intro.features" href="#a-606777368">1.2</a> &nbsp; Features</h2> - <ul> - <li><a href="http://ruby-vpi.rubyforge.org/news">News</a> - &#8211; see what&#8217;s cooking for the next release.</li> - <li><a href="http://ruby-vpi.rubyforge.org/talks">Talks</a> - &#8211; materials from presentations and seminars.</li> - </ul> + <p class="title">Portable</p> - <h2 id="intro.features">1.1 &nbsp; Prominent features</h2> - - <h3 id="anchor133">1.1.1 &nbsp; 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 &nbsp; 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 &nbsp; 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 &nbsp; Free</h3> + <h2 ><a id="intro.reqs" href="#a-606778438">1.3</a> &nbsp; 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> + &#8211; any version that supports the <tt>-load</tt> option is acceptable.</li> </ul> - <h2 id="intro.applications">1.2 &nbsp; Applications</h2> + <ul> + <li><a href="http://www.model.com">Mentor Modelsim</a> + &#8211; 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> + &#8211; 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> + &#8211; version 2.11a or newer is acceptable.</li> + </ul> + + + <ul> + <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="#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> + &#8211; any flavor should be acceptable.</li> + </ul> + + + <ul> + <li>C compiler + &#8211; 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> + &#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> + </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> + &#8211; 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> + &#8211; 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> &nbsp; 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 &nbsp; Appetizers</h2> + <h2 ><a id="intro.appetizers" href="#a-606780568">1.5</a> &nbsp; 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> &nbsp; License</h2> + + + <p>Copyright&#169; 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 &#8220;Software&#8221;), +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 &#8220;Derivatives&#8221;) and +their corresponding machine-readable source code (the &#8220;Code&#8221;) 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> &#8220;AS IS&#8221;, <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> &nbsp; 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> &nbsp; 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>