aboutsummaryrefslogtreecommitdiffstats
path: root/future/index.html
blob: 562ef22cf6653ebce8f265263fa473fa71d3f370 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html><html lang=en><head><meta name=generator content="Hugo 0.80.0"><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="This section contains future work that should be added to Vericert to make it into a better high-level synthesis tool.
The next interesting optimisations that should be looked at are the following:
 globals, type support, memory partitioning, and loop pipelining.  Globals #  Globals are an important feature to add, as have to be handled carefully in HLS, because they have to be placed into memory, and are often used in HLS designs."><meta name=theme-color content="#FFFFFF"><meta property="og:title" content="Future Work"><meta property="og:description" content="This section contains future work that should be added to Vericert to make it into a better high-level synthesis tool.
The next interesting optimisations that should be looked at are the following:
 globals, type support, memory partitioning, and loop pipelining.  Globals #  Globals are an important feature to add, as have to be handled carefully in HLS, because they have to be placed into memory, and are often used in HLS designs."><meta property="og:type" content="article"><meta property="og:url" content="https://vericert.ymhg.org/future/"><title>Future Work | Vericert</title><link rel=manifest href=/manifest.json><link rel=icon href=/favicon.png type=image/x-icon><link rel=stylesheet href=/book.min.dbf27d0aee7c885a97dc865e7209c83dde91bef2046568d3366053c4027e2089.css integrity="sha256-2/J9Cu58iFqX3IZecgnIPd6RvvIEZWjTNmBTxAJ+IIk="><script defer src=/en.search.min.8744a59deef42a09f73b965fa29a56c40c4f8892dff5bfae0b331df4b63bb70d.js integrity="sha256-h0Slne70Kgn3O5ZfoppWxAxPiJLf9b+uCzMd9LY7tw0="></script></head><body><input type=checkbox class="hidden toggle" id=menu-control>
<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><nav><div class=book-brand><a href=/><div id=book-logo></div></a><p>A formally verified high-level synthesis tool written in Coq.</p></div><div class=book-search><input type=text id=book-search-input placeholder=Search aria-label=Search maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><ul><li><a href=https://vericert.ymhg.org/blog/>Blog</a><ul></ul></li><li><a href=https://vericert.ymhg.org/docs/>Docs</a><ul><li><a href=https://vericert.ymhg.org/docs/building/>Building Vericert</a></li><li><a href=https://vericert.ymhg.org/docs/coq-style-guide/>Coq Style Guide</a></li><li><a href=https://vericert.ymhg.org/docs/unreleased/>Unreleased Features</a></li><li><a href=https://vericert.ymhg.org/docs/using-vericert/>Using Vericert</a></li></ul></li><li><a href=https://vericert.ymhg.org/future/ class=active>Future Work</a></li></ul><ul><li><a href=https://github.com/ymherklotz/vericert target=_blank rel=noopener>Github</a></li></ul></nav><script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu></label>
<strong>Future Work</strong>
<label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><ul><li><a href=#globals>Globals</a></li><li><a href=#type-support>Type Support</a></li><li><a href=#memory-partitioning>Memory Partitioning</a></li><li><a href=#loop-pipelining>Loop pipelining</a></li></ul></li></ul></nav></aside></header><article class=markdown><h1><a href=/future/>Future Work</a></h1><p><p>This section contains future work that should be added to Vericert to make it into a better
high-level synthesis tool.</p><p>The next interesting optimisations that should be looked at are the following:</p><ul><li><a href=#globals>globals</a>,</li><li><a href=#type-support>type support</a>,</li><li><a href=#memory-partitioning>memory partitioning</a>, and</li><li><a href=#loop-pipelining>loop pipelining</a>.</li></ul><h2 id=globals>Globals
<a class=anchor href=#globals>#</a></h2><p>Globals are an important feature to add, as have to be handled carefully in HLS, because they have
to be placed into memory, and are often used in HLS designs. Proper handling of globals would allow
for a larger subset of programs to be compiled, even allowing for larger benchmarks to be used, such
as CHStone.</p><h2 id=type-support>Type Support
<a class=anchor href=#type-support>#</a></h2><p>It would also be useful to have support for other datatypes in C, such as <code>char</code> or <code>short</code>, as using
these small datatypes is also quite popular in HLS to make the final designs more efficient.</p><h2 id=memory-partitioning>Memory Partitioning
<a class=anchor href=#memory-partitioning>#</a></h2><p>Memory partitioning is quite an advanced optimisation, which could be combined with the support for
globals so as to make memory layouts on the FPGA more efficient and run various memory operations in
parallel.</p><h2 id=loop-pipelining>Loop pipelining
<a class=anchor href=#loop-pipelining>#</a></h2><p>Loop pipelining is an optimisation to schedule loops, instead of only scheduling the instructions
inside of the loop. There are two versions of loop pipelining, software and hardware loop
pipelining. The former is done purely on instructions, whereas the latter is performed in tandem
with <a href=/docs/unreleased/#scheduling>scheduling</a>.</p></p></article><footer class=book-footer><div class="flex flex-wrap justify-between"></div></footer><div class=book-comments></div><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><nav id=TableOfContents><ul><li><ul><li><a href=#globals>Globals</a></li><li><a href=#type-support>Type Support</a></li><li><a href=#memory-partitioning>Memory Partitioning</a></li><li><a href=#loop-pipelining>Loop pipelining</a></li></ul></li></ul></nav></aside></main></body></html>