iverilog/developer/guide/ivl/t-dll.html

173 lines
7.1 KiB
HTML
Raw Normal View History

2025-11-11 23:55:57 +01:00
<!DOCTYPE html>
<html lang="en" data-content_root="../../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Loadable Targets &#8212; Icarus Verilog documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../../_static/alabaster.css?v=cb25574f" />
<script src="../../../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../../../_static/doctools.js?v=888ff710"></script>
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="VVP - Verilog Virtual Processor" href="../vvp/index.html" />
<link rel="prev" title="What Is LPM" href="lpm.html" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="loadable-targets">
<h1>Loadable Targets<a class="headerlink" href="#loadable-targets" title="Link to this heading"></a></h1>
<p>Icarus Verilog supports dynamically loading code generator modules to
perform the back-end processing of the completed design. The user
specifies on the command line the module to load. The compiler loads
the module (once the design is compiled and elaborated) and calls it
to finally handle the design.</p>
<p>Loadable target modules implement a set of functions that the core
compiler calls to pass the design to it, and the module in turn uses a
collection of functions in the core (the API) to access details of the
design.</p>
<section id="loading-target-modules">
<h2>Loading Target Modules<a class="headerlink" href="#loading-target-modules" title="Link to this heading"></a></h2>
<p>The target module loader is invoked with the ivl flag “-tdll”. That
is, the DLL loader is a linked in target type. The name of the target
module to load is then specified with the DLL flag, i.e. “-fDLL=&lt;path&gt;”.</p>
</section>
<section id="compiling-target-modules">
<h2>Compiling Target Modules<a class="headerlink" href="#compiling-target-modules" title="Link to this heading"></a></h2>
<p>&lt;write me&gt;</p>
</section>
<section id="loadable-target-module-api">
<h2>Loadable Target Module Api<a class="headerlink" href="#loadable-target-module-api" title="Link to this heading"></a></h2>
<p>The target module API is defined in the ivl_target.h header file. This
declares all the type and functions that a loadable module needs to
access the design.</p>
</section>
<section id="about-specific-expression-types">
<h2>About Specific Expression Types<a class="headerlink" href="#about-specific-expression-types" title="Link to this heading"></a></h2>
<p>In this section find notes about the various kinds of expression
nodes. The notes here are in addition to the more general
documentation in the ivl_target.h header file.</p>
<ul>
<li><p>IVL_EX_CONCAT</p>
<p>The concatenation operator forms an expression node that holds the
repeat count and all the parameter expressions. The repeat count is
an integer that is calculated by the core compiler so it fully
evaluated, and <em>not</em> an expression.</p>
<p>The parameter expressions are retrieved by the ivl_expr_parm method,
with the index increasing as parameters go from left to right, from
most significant to least significant. (Note that this is different
from the order of bits within an expression node.)</p>
</li>
<li><p>IVL_EX_NUMBER</p>
<p>This is a constant number. The width is fully known, and the bit
values are all represented by the ASCII characters 0, 1, x or z. The
ivl_expr_bits method returns a pointer to the least significant bit,
and the remaining bits are ordered from least significant to most
significant. For example, 5b1zzx0 is the 5 character string “0xzz1”.</p>
</li>
</ul>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../index.html">Icarus Verilog</a></h1>
<h3>Navigation</h3>
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../usage/index.html">Icarus Verilog Usage</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../targets/index.html">The Icarus Verilog Targets</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Icarus Verilog Developer Support</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../getting_started.html">Getting Started as a Contributor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../regression_tests.html">The Regression Test Suite</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../version_stamps.html">Files With Version Information</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">Developer Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../index.html">Documentation overview</a><ul>
<li><a href="../../index.html">Icarus Verilog Developer Support</a><ul>
<li><a href="../index.html">Developer Guide</a><ul>
<li><a href="index.html">IVL - The Core Compiler</a><ul>
<li>Previous: <a href="lpm.html" title="previous chapter">What Is LPM</a></li>
<li>Next: <a href="../vvp/index.html" title="next chapter">VVP - Verilog Virtual Processor</a></li>
</ul></li>
</ul></li>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2024-2025, Stephen Williams.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 7.2.6</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="../../../_sources/developer/guide/ivl/t-dll.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>