245 lines
16 KiB
HTML
245 lines
16 KiB
HTML
<!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>Xilinx notes — openFPGALoader: universal utility for programming FPGA latest documentation</title>
|
||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=5ecbeea2" />
|
||
<link rel="stylesheet" type="text/css" href="../_static/basic.css?v=b08954a9" />
|
||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=27fed22d" />
|
||
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
|
||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
|
||
<link rel="index" title="Index" href="../genindex.html" />
|
||
<link rel="search" title="Search" href="../search.html" />
|
||
<link rel="next" title="To Do" href="../todo.html" />
|
||
<link rel="prev" title="Lattice notes" href="lattice.html" />
|
||
|
||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||
|
||
|
||
|
||
|
||
|
||
</head><body>
|
||
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
|
||
|
||
<div class="body" role="main">
|
||
|
||
<section id="xilinx-notes">
|
||
<span id="xilinx"></span><h1>Xilinx notes<a class="headerlink" href="#xilinx-notes" title="Link to this heading">¶</a></h1>
|
||
<p>To simplify further explanations, we consider the project is generated in the current directory.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<ol class="arabic simple">
|
||
<li><p>Spartan Edge Accelerator Board has only pinheader, so the cable must be provided</p></li>
|
||
<li><p>A <em>JTAG</em> <-> <em>SPI</em> bridge (used to write bitstream in FLASH) is available for some device, see
|
||
<a class="extlink-ghsrc reference external" href="https://github.com/trabucayre/openFPGALoader/blob/master/spiOverJtag">spiOverJtag</a> to check if your model is supported.</p></li>
|
||
<li><p>Board provides the device/package model, but if the targeted board is not officially supported but the FPGA yes,
|
||
you can use <code class="docutils literal notranslate"><span class="pre">--fpga-part</span></code> to provide the model.</p></li>
|
||
<li><p>With spartan3, the flash is an independent JTAG device.
|
||
User has to use <code class="docutils literal notranslate"><span class="pre">--index-chain</span></code> to access FPGA (RAM only) or flash (write/read only).</p></li>
|
||
</ol>
|
||
</div>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">*.bin</span></code> may be loaded in memory or in flash, but this extension is a classic extension for CPU firmware and, by
|
||
default, <em>openFPGALoader</em> loads file in memory.
|
||
Double check <code class="docutils literal notranslate"><span class="pre">-m</span></code> / <code class="docutils literal notranslate"><span class="pre">-f</span></code> when you want to use a firmware for a softcore (or anything, other than a bitstream) to
|
||
write somewhere in the FLASH device).</p>
|
||
</div>
|
||
<p><code class="docutils literal notranslate"><span class="pre">.bit</span></code> file is the default format generated by <em>vivado</em>, so nothing special task must be done to generate this
|
||
bitstream.</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">.bin</span></code> is not, by default, produced.
|
||
To have access to this file you need to configure the tool:</p>
|
||
<ul class="simple">
|
||
<li><p>GUI: <em>Tools</em> -> <em>Settings</em> -> <em>Bitstreams</em> -> check <code class="docutils literal notranslate"><span class="pre">-bin_file</span></code>.</p></li>
|
||
<li><p>TCL: append your <em>TCL</em> file with <code class="docutils literal notranslate"><span class="pre">set_property</span> <span class="pre">STEPS.WRITE_BITSTREAM.ARGS.BIN_FILE</span> <span class="pre">true</span> <span class="pre">[get_runs</span> <span class="pre">impl_1]</span></code>.</p></li>
|
||
</ul>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>For alchitry board the bitstream must be configured with a buswidth of 1 or 2.
|
||
Quad mode can’t be used with alchitry’s FLASH.</p>
|
||
</div>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>For boards based on a Zynq (7000 or MPSoC), boot mode must be configured for JTAG (for Zedboard JP7->JP11 must be
|
||
to GND).</p>
|
||
</div>
|
||
<section id="loading-a-bitstream">
|
||
<h2>Loading a bitstream<a class="headerlink" href="#loading-a-bitstream" title="Link to this heading">¶</a></h2>
|
||
<p><code class="docutils literal notranslate"><span class="pre">.bit</span></code> and <code class="docutils literal notranslate"><span class="pre">.bin</span></code> are allowed to be loaded in memory.</p>
|
||
<p>File load:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span><span class="o">[</span>-m<span class="o">]</span><span class="w"> </span>-b<span class="w"> </span>arty<span class="w"> </span>*.runs/impl_1/*.bit<span class="w"> </span><span class="o">(</span>or<span class="w"> </span>*.bin<span class="o">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>or</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span><span class="o">[</span>-m<span class="o">]</span><span class="w"> </span>-b<span class="w"> </span>spartanEdgeAccelBoard<span class="w"> </span>-c<span class="w"> </span>digilent_hs2<span class="w"> </span>*.runs/impl_1/*.bit<span class="w"> </span><span class="o">(</span>or<span class="w"> </span>*.bin<span class="o">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<section id="spi-flash">
|
||
<h3>SPI flash<a class="headerlink" href="#spi-flash" title="Link to this heading">¶</a></h3>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">.bit</span></code>, <code class="docutils literal notranslate"><span class="pre">.bin</span></code>, and <code class="docutils literal notranslate"><span class="pre">.mcs</span></code> are supported for FLASH.</p>
|
||
</div>
|
||
<p><code class="docutils literal notranslate"><span class="pre">.mcs</span></code> must be generated through Vivado with a tcl script like:</p>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>For boards based on Zynq device (7000 and MPSoC) SPI flash is not accessible through PL.</p>
|
||
</div>
|
||
<div class="highlight-tcl notranslate"><div class="highlight"><pre><span></span><span class="k">set</span><span class="w"> </span>project<span class="w"> </span><span class="k">[</span><span class="nb">lindex</span><span class="w"> </span><span class="nv">$argv</span><span class="w"> </span><span class="mi">0</span><span class="k">]</span>
|
||
|
||
<span class="k">set</span><span class="w"> </span>bitfile<span class="w"> </span><span class="s2">"${project}.runs/impl_1/${project}.bit"</span>
|
||
<span class="k">set</span><span class="w"> </span>mcsfile<span class="w"> </span><span class="s2">"${project}.runs/impl_1/${project}.mcs"</span>
|
||
|
||
<span class="nv">write_cfgmem</span><span class="w"> </span><span class="o">-</span>format<span class="w"> </span>mcs<span class="w"> </span><span class="o">-</span>interface<span class="w"> </span>spix4<span class="w"> </span><span class="o">-</span>size<span class="w"> </span><span class="mi">16</span><span class="w"> </span><span class="err">\</span>
|
||
<span class="w"> </span><span class="nv">-loadbit</span><span class="w"> </span><span class="s2">"up 0x0 $bitfile"</span><span class="w"> </span><span class="o">-</span>loaddata<span class="w"> </span><span class="s2">""</span><span class="w"> </span><span class="err">\</span>
|
||
<span class="w"> </span><span class="nv">-file</span><span class="w"> </span><span class="nv">$mcsfile</span><span class="w"> </span><span class="o">-</span>force
|
||
</pre></div>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">-interface</span> <span class="pre">spix4</span></code> and <code class="docutils literal notranslate"><span class="pre">-size</span> <span class="pre">16</span></code> depends on SPI flash capability and size.</p>
|
||
</div>
|
||
<p>The tcl script is used with:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>vivado<span class="w"> </span>-nolog<span class="w"> </span>-nojournal<span class="w"> </span>-mode<span class="w"> </span>batch<span class="w"> </span>-source<span class="w"> </span>script.tcl<span class="w"> </span>-tclargs<span class="w"> </span>myproject
|
||
</pre></div>
|
||
</div>
|
||
<p>File load:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span><span class="o">[</span>--fpga-part<span class="w"> </span>xxxx<span class="o">]</span><span class="w"> </span>-f<span class="w"> </span>-b<span class="w"> </span>arty<span class="w"> </span>*.runs/impl_1/*.mcs<span class="w"> </span><span class="o">(</span>or<span class="w"> </span>.bit<span class="w"> </span>/<span class="w"> </span>.bin<span class="o">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">-f</span></code> is required to write bitstream (without them <code class="docutils literal notranslate"><span class="pre">.bit</span></code> and <code class="docutils literal notranslate"><span class="pre">.bin</span></code> are loaded in memory).</p>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><code class="docutils literal notranslate"><span class="pre">--fpga-part</span></code> is only required if this information is not provided at <code class="docutils literal notranslate"><span class="pre">board.hpp</span></code> level or if the board is not
|
||
officially supported.
|
||
device/package format is something like xc7a35tcsg324 (arty model).
|
||
See <a class="extlink-ghsrc reference external" href="https://github.com/trabucayre/openFPGALoader/blob/master/src/board.hpp">src/board.hpp</a>, or <a class="extlink-ghsrc reference external" href="https://github.com/trabucayre/openFPGALoader/blob/master/spiOverJtag">spiOverJtag</a> directory for examples.</p>
|
||
</div>
|
||
<p>Some boards with UltraScale FPGAs, like the VCU118 and KCU16, support the SPIx8 (Dual Quad SPI) configuration.
|
||
In this case, the <code class="docutils literal notranslate"><span class="pre">spix8</span></code> option <code class="docutils literal notranslate"><span class="pre">write_cfgmem</span></code> on the above example can be used to generate two <code class="docutils literal notranslate"><span class="pre">.mcs</span></code> files,
|
||
to fit bigger designs or for faster programming. Only <code class="docutils literal notranslate"><span class="pre">.mcs</span></code> files can be used to program the FPGA in this case.</p>
|
||
<p>In this case, to load the two <code class="docutils literal notranslate"><span class="pre">.mcs</span></code> files:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>--board<span class="w"> </span>vcu118<span class="w"> </span>-f<span class="w"> </span>--target-flash<span class="w"> </span>both<span class="w"> </span>--bitstream<span class="w"> </span>*.runs/impl_1/*_primary.mcs<span class="w"> </span>--secondary-bitstream<span class="w"> </span>*.runs/impl_1/*_secondary.mcs
|
||
</pre></div>
|
||
</div>
|
||
<p>On these boards, each SPI flash can be programmed independently with the <code class="docutils literal notranslate"><span class="pre">--target-flash</span></code> option.
|
||
The default target is the <code class="docutils literal notranslate"><span class="pre">primary</span></code> flash.</p>
|
||
<p>For example, to program only the secondary flash with arbitrary data not related to FPGA configuration:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>openFPGALoader<span class="w"> </span>--board<span class="w"> </span>vcu118<span class="w"> </span>-f<span class="w"> </span>--target-flash<span class="w"> </span>secondary<span class="w"> </span>--bitstream<span class="w"> </span>arbitrary_data
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||
<div class="sphinxsidebarwrapper">
|
||
<h1 class="logo"><a href="../index.html">openFPGALoader: universal utility for programming FPGA</a></h1>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<search id="searchbox" style="display: none" role="search">
|
||
<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" placeholder="Search"/>
|
||
<input type="submit" value="Go" />
|
||
</form>
|
||
</div>
|
||
</search>
|
||
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
|
||
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../guide/first-steps.html">First steps with openFPGALoader</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../guide/install.html">Installing openFPGALoader</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../guide/troubleshooting.html">Troubleshooting Guide</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../guide/advanced.html">Advanced usage of openFPGALoader</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Compatibility</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../compatibility/fpga.html">FPGAs</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../compatibility/board.html">Boards</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../compatibility/cable.html">Cables</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Vendors</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="anlogic.html">Anlogic notes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="colognechip.html">Cologne Chip notes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="efinix.html">Efinix notes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="gowin.html">Gowin notes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="intel.html">Intel notes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="lattice.html">Lattice notes</a></li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Xilinx notes</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#loading-a-bitstream">Loading a bitstream</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#spi-flash">SPI flash</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Development</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../todo.html">To Do</a></li>
|
||
</ul>
|
||
|
||
<div class="relations">
|
||
<h3>Related Topics</h3>
|
||
<ul>
|
||
<li><a href="../index.html">Documentation overview</a><ul>
|
||
<li>Previous: <a href="lattice.html" title="previous chapter">Lattice notes</a></li>
|
||
<li>Next: <a href="../todo.html" title="next chapter">To Do</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="clearer"></div>
|
||
</div>
|
||
<div class="footer">
|
||
©2019-2022, Gwenhael Goavec-Merou and contributors.
|
||
|
||
|
|
||
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 9.1.0</a>
|
||
& <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
||
|
||
|
|
||
<a href="../_sources/vendors/xilinx.rst.txt"
|
||
rel="nofollow">Page source</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</body>
|
||
</html> |