summaryrefslogtreecommitdiffstats
path: root/algorithm.tex
diff options
context:
space:
mode:
authorJohn Wickerson <j.wickerson@imperial.ac.uk>2020-11-17 15:45:21 +0000
committeroverleaf <overleaf@localhost>2020-11-17 15:45:24 +0000
commit82b9e2dd3ba311b4cfaf1aac04661f436ae7693b (patch)
treef44267f4ae7f49c843448c41153de4b2a91c0d66 /algorithm.tex
parenta91a5e9795aa3d0f20a77e92c4bb0213af892cc9 (diff)
downloadoopsla21_fvhls-82b9e2dd3ba311b4cfaf1aac04661f436ae7693b.tar.gz
oopsla21_fvhls-82b9e2dd3ba311b4cfaf1aac04661f436ae7693b.zip
Update on Overleaf.
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 da77aa1..21f19f7 100644
--- a/algorithm.tex
+++ b/algorithm.tex
@@ -227,7 +227,7 @@ This subsection lists some key challenges that were encountered when implementin
\subsubsection{Byte- and word-addressable memories}
-One big difference between C and Verilog is how memory is represented. In hardware, efficient RAMs are not as available as in software, and need to be explicitly implemented by declaring two-dimensional arrays with specific properties. A major limitation is that \JW{common} RAMs often only allow one read and one write per clock cycle, \JWcouldcut{for example if implementing single port RAM, which is the most common type of RAM}. To make loads and stores as efficient as possible, the RAM needs to be \JWcouldcut{implemented as being} word-addressable, so that an entire integer can load or store of an integer can be done in one clock cycle.
+One big difference between C and Verilog is how memory is represented. In hardware, efficient RAMs are not as available as in software, and need to be explicitly implemented by declaring two-dimensional arrays with specific properties. A major limitation is that \JW{common} RAMs often only allow one read and one write per clock cycle, \JWcouldcut{for example if implementing single port RAM, which is the most common type of RAM}. To make loads and stores as efficient as possible, the RAM needs to be \JWcouldcut{implemented as being} word-addressable, so that an entire integer can be loaded or stored of an integer can be done in one clock cycle.
However, the memory model that \compcert{} uses for it's intermediate languages~\cite{blazy05_formal_verif_memor_model_c} is byte-addressable. It therefore has to be proven that the byte-addressable memory behaves in the same way as the word-addressable memory in hardware. Any modifications of the bytes in the \compcert{} memory model have to also be shown to modify the word-addressable memory in the same way. As only integer loads and stores are currently supported for the HLS backend, it follows that the addresses given to the loads and stores should be divisible by four. If that is the case, then the translation from byte-addressed memory to word-addressed memory could be done by dividing the address by four and subtracting by the base address of the memory.
\subsubsection{Reset signals}