summaryrefslogtreecommitdiffstats
path: root/algorithm.tex
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2020-06-27 19:45:57 +0100
committerYann Herklotz <git@yannherklotz.com>2020-06-27 19:45:57 +0100
commit32f043997985bea5c1df1e795bdca6d9902ba5f9 (patch)
treeacab5c12ed5a0cd2064101eb37f21c36f42f04b6 /algorithm.tex
parent3adbaf460ffb2531b05a55a6f38ba1654a8058c3 (diff)
downloadoopsla21_fvhls-32f043997985bea5c1df1e795bdca6d9902ba5f9.tar.gz
oopsla21_fvhls-32f043997985bea5c1df1e795bdca6d9902ba5f9.zip
Add more semantics
Diffstat (limited to 'algorithm.tex')
-rw-r--r--algorithm.tex20
1 files changed, 10 insertions, 10 deletions
diff --git a/algorithm.tex b/algorithm.tex
index 45d3a42..6811137 100644
--- a/algorithm.tex
+++ b/algorithm.tex
@@ -55,16 +55,16 @@ RTL function definitions are a sequence of instructions encoded in a control-flo
RTL is first translated to an intermediate language called hardware transfer language (HTL), which is a finite state machine with datapath (FSMD) representation of the RTL code. HTL, like all CompCert intermediate languages, has the same program structure as RTL, but internal functions now contain logic to control the order of execution, and a datapath that transforms the data in the registers. This is represented by having two maps that link states to the control logic and to the current position in the datapath, which are both expressed using Verilog statements. The syntax for HTL functions are the following:
\begin{align*}
- \mathit{g} \quad &::= \quad n \mapsto s\\
- \mathit{d_{r}} \quad &::= \quad r \mapsto (io? * n)\\
- \mathit{d_{a}} \quad &::= \quad r \mapsto (io? * n * n)\\
- \mathit{F} \quad &::= \quad \big\{\ \mathtt{params} : \vec{r}\\
- &\mathtt{datapath} : g\\
- &\mathtt{controllogic} : g\\
- &\mathtt{entrypoint} : n\\
- &\mathtt{st, stk, finish, return, start, reset, clk} : r\\
- &\mathtt{scldecls} : d_{r}\\
- &\mathtt{arrdecls} : d_{a}\ \big\}
+ g \quad &::= \quad n \mapsto s\\
+ d_{r} \quad &::= \quad r \mapsto (io? * n)\\
+ d_{a} \quad &::= \quad r \mapsto (io? * n * n)\\
+ F \quad &::= \quad \big\{\ \texttt{params} : \vec{r}\\
+ &\texttt{datapath} : g\\
+ &\texttt{controllogic} : g\\
+ &\texttt{entrypoint} : n\\
+ &\texttt{st, stk, finish, return, start, reset, clk} : r\\
+ &\texttt{scldecls} : d_{r}\\
+ &\texttt{arrdecls} : d_{a}\ \big\}
\end{align*}
\subsection{HLS Algorithm}