From 26e901f9debd072013a638042996edef24ef254d Mon Sep 17 00:00:00 2001
From: auphelia <jakobapk@web.de>
Date: Fri, 8 May 2020 10:52:25 +0100
Subject: [PATCH] [Sphinx documentation] Add section about mem mode in chapter
 Internals

---
 docs/finn/img/mem_mode.png | Bin 0 -> 41236 bytes
 docs/finn/internals.rst    |  40 ++++++++++++++++++++++++++++++-------
 2 files changed, 33 insertions(+), 7 deletions(-)
 create mode 100755 docs/finn/img/mem_mode.png

diff --git a/docs/finn/img/mem_mode.png b/docs/finn/img/mem_mode.png
new file mode 100755
index 0000000000000000000000000000000000000000..27783c5f3233cdf1d646e330d85ecdad39b8b922
GIT binary patch
literal 41236
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
N7W`9C;}Js6e*vL7m6`wm

literal 0
HcmV?d00001

diff --git a/docs/finn/internals.rst b/docs/finn/internals.rst
index 1e4ea189d..ce45b99e7 100644
--- a/docs/finn/internals.rst
+++ b/docs/finn/internals.rst
@@ -24,7 +24,7 @@ FINN uses many custom operations (op_type in ONNX NodeProto) that are not define
 Custom ONNX Execution Flow
 ==========================
 
-To verify correct operation of FINN-ONNX graphs, FINN provides its own ONNX execution flow (:py:mod:`finn.core.onnx_exec`). This flow supports the standard set of ONNX operations as well as the custom FINN operations. 
+To verify correct operation of FINN-ONNX graphs, FINN provides its own ONNX execution flow (:py:mod:`finn.core.onnx_exec`). This flow supports the standard set of ONNX operations as well as the custom FINN operations.
 
 .. warning:: This execution flow is only meant for checking the correctness of models after applying transformations, and not for high performance inference.
 
@@ -39,7 +39,7 @@ Some of the helper functions are described in more detail below.
 
 Create a ModelWrapper instance
 ------------------------------
-The ModelWrapper instance can be created using a model in .onnx format or by directly passing a ModelProto instance to the wrapper. The code block below gives an example of how to use the wrapper on a model in .onnx format. 
+The ModelWrapper instance can be created using a model in .onnx format or by directly passing a ModelProto instance to the wrapper. The code block below gives an example of how to use the wrapper on a model in .onnx format.
 ::
 
   from finn.core.modelwrapper import ModelWrapper
@@ -49,7 +49,7 @@ Access the ONNX GraphProto through ModelWrapper
 -----------------------------------------------
 The ONNX ModelProto can be accessed with following command:
 ::
-  
+
   modelproto = model.model
 
 The graph can be accessed using:
@@ -62,7 +62,7 @@ The node list is accessed by:
 
   nodes = model.graph.node
 
-The individual nodes can be selected via their indices. 
+The individual nodes can be selected via their indices.
 ::
 
   # first node
@@ -79,7 +79,7 @@ Helper functions for tensors
 
 A list of all tensors (names) can easily be accessed using:
 ::
-  
+
   tensor_list = model.get_all_tensor_names()
 
 If we take a single tensor from that list (by index), we can determine their producer or consumer node by using one of the following functions. Note that it may be that a tensor does not have a producer or consumer node, for example if the tensor represents a constant that is already set. In that case `None` will be returned.
@@ -105,13 +105,13 @@ Optionally, the dtype (container datatype) of the tensor can also be specified a
 
 As mentioned above there are FINN DataTypes additional to the container datatype, these can be accessed and set for a tensor with the following functions:
 ::
-  
+
   # get tensor dataype of third tensor in model tensor list
   model.get_tensor_datatype(tensor_list[2])
 
   # set tensor datatype of third tensor in model tensor list
   from finn.core.datatype import DataType
-  
+
   finn_dtype = DataType.BIPOLAR
   model.set_tensor_datatype(tensor_list[2], finn_dtype)
 
@@ -138,3 +138,29 @@ Transformation Pass
 
 A transformation passes changes (transforms) the given model, it gets the model in the ModelWrapper as input and returns the changed model (ModelWrapper) to the FINN flow. Additional the flag *model_was_changed* which indicates if a transformation has to be performed more than once, is returned. If you are interested in how to write a transformation pass for FINN, please take a look at the Jupyter notebook about how to write a transformation pass, see chapter :ref:`tutorials` for details. For more information about existing transformation passes in FINN, see module :py:mod:`finn.transformation`.
 
+StreamingFCLayer *mem_mode*
+===========================
+
+FINN supports two types of the so-called *mem_mode* for the node StreamingFCLayer. With the selection of this mode it is decided in which way the weight values are accessed during the execution. That means the mode setting has direct influence on the resulting circuit. Currently two settings for the *mem_mode* are supported in FINN:
+
+* "const"
+
+* "decoupled"
+
+The following picture shows the idea behind the two modes.
+
+.. image:: img/mem_mode.png
+   :scale: 55%
+   :align: center
+
+Const mode
+----------
+In *const* mode the weights are baked into the Matrix-Vector-Activate-Unit (MVAU), which means they are part of the HLS code. During the IP block generation the weight values are integrated as *params.h* file in the HLS code and synthesized together with it. For the *const* mode IP block generation the `StreamingFCLayer_Batch function <https://github.com/Xilinx/finn-hlslib/blob/07a8353f6cdfd8bcdd81e309a5581044c2a93d3b/fclayer.h#L94>`_ from the finn-hls library is used, which implements a standard MVAU. The resulting IP block has an input and an output stream, as shown in the above picture on the left. FIFOs in the form of verilog components are connected to these.
+
+Decoupled mode
+--------------
+In *decoupled* mode the MVAU has three ports. Besides the input and output streams, which are fed into the circuit via verilog FIFOs, there is another input, which is used to stream the weights. For this the `streaming MVAU <https://github.com/Xilinx/finn-hlslib/blob/07a8353f6cdfd8bcdd81e309a5581044c2a93d3b/mvau.hpp#L213>`_ from the finn-hls library is used. To make the streaming possible a verilog weight streamer component accesses the weight memory and sends the values via FIFO to the MVAU. This component can be found in the `finn-rtllib <https://github.com/Xilinx/finn/tree/dev/finn-rtllib>`_ under the name *memstream.v*. For the IP block generation this component, the IP block resulting from the synthesis of the HLS code of the streaming MVAU and a FIFO for the weight stream are combined in a verilog wrapper. The weight values are saved in .dat files and stored in the weight memory from which the weight streamer reads. The resulting verilog component, which is named after the name of the node and has the suffix "_memstream.v", exposes only two ports to the outside, the data input and output. It therefore behaves externally in the same way as the MVAU in *const* mode.
+
+How to set *mem_mode*
+---------------------
+When the nodes in the network are converted to HLS layers, the *mem_mode* can be passed. More detailed information about the transformations that prepare the network and the transformation that performs the conversion to HLS layers can be found in chapter :ref:`nw_prep`. The *mem_mode* is passed as argument. Note that if no argument is passed, the default is *const*.
-- 
GitLab