summaryrefslogtreecommitdiffstats
path: root/algorithm.tex
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2021-04-15 10:38:53 +0100
committerYann Herklotz <git@yannherklotz.com>2021-04-15 10:38:53 +0100
commit2bf1ff846a792ef3007fa1e97928697509f318f7 (patch)
treede842907b30c337f3c20a35f36fc17ede8147fd7 /algorithm.tex
parent6363b3998d65dc7a4e45cec0db9b41f69f45fb31 (diff)
downloadoopsla21_fvhls-2bf1ff846a792ef3007fa1e97928697509f318f7.tar.gz
oopsla21_fvhls-2bf1ff846a792ef3007fa1e97928697509f318f7.zip
Update the table
Diffstat (limited to 'algorithm.tex')
-rw-r--r--algorithm.tex2
1 files changed, 1 insertions, 1 deletions
diff --git a/algorithm.tex b/algorithm.tex
index 1d8201d..2241ee6 100644
--- a/algorithm.tex
+++ b/algorithm.tex
@@ -292,7 +292,7 @@ Typically, HLS-generated hardware consists of a sea of registers and RAM memorie
This memory view is very different to the C memory model, so we perform the following translation.
Variables that do not have their address taken are kept in registers, which correspond to the registers in 3AC.
All address-taken variables, arrays, and structs are kept in RAM.
-The stack of the main function becomes an unpacked array of 32-bit integers, which is translated to a RAM when the hardware description is passed through a synthesis tool. \vericert{} generates a well-formed RAM template in Verilog to ensure that a RAM is present in the final hardware, performing reads and writes using the signals that the RAM template exposes, instead of directly modifying the memory.
+The stack of the main function becomes an unpacked array of 32-bit integers, which is translated to a RAM when the hardware description is passed through a synthesis tool. Initially, \vericert{} translates loads and stores to direct accesses to the memory. An extra compiler pass is added to generate a well-formed RAM template to ensure that a RAM is correctly inferred by the synthesis tool. Loads and stores are performed using the signals that the RAM template exposes, instead of directly modifying the array.
Finally, global variables are not translated in \vericert{} at the moment.
A high-level overview of the architecture can be seen in Figure~\ref{fig:accumulator_diagram}.