From 7f1f280e156a2ecf3fe7a324227fb465a06df87b Mon Sep 17 00:00:00 2001
From: Yaman Umuroglu <maltanar@gmail.com>
Date: Fri, 8 May 2020 00:28:25 +0100
Subject: [PATCH] [Refactor] CodeGen_npysim is renamed to PrepareCppSim

---
 docs/finn/source_code/finn.transformation.fpgadataflow.rst  | 2 +-
 notebooks/advanced/1_custom_transformation_pass.ipynb       | 2 +-
 notebooks/end2end_example/tfc_end2end_verification.ipynb    | 6 +++---
 src/finn/custom_op/fpgadataflow/__init__.py                 | 2 +-
 src/finn/transformation/fpgadataflow/compile.py             | 2 +-
 .../fpgadataflow/{codegen_npysim.py => prepare_cppsim.py}   | 2 +-
 tests/end2end/test_end2end_cnv_w1a1.py                      | 4 ++--
 tests/end2end/test_end2end_tfc_w1a1_throughput_test.py      | 4 ++--
 tests/end2end/test_end2end_tfc_w1a2.py                      | 4 ++--
 tests/end2end/test_end2end_tfc_w2a2.py                      | 4 ++--
 tests/fpgadataflow/test_code_gen_trafo.py                   | 4 ++--
 tests/fpgadataflow/test_compilation_trafo.py                | 4 ++--
 tests/fpgadataflow/test_convert_to_hls_layers_cnv.py        | 4 ++--
 tests/fpgadataflow/test_convert_to_hls_layers_fc.py         | 6 +++---
 tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py  | 4 ++--
 tests/fpgadataflow/test_fpgadataflow_fclayer.py             | 4 ++--
 tests/fpgadataflow/test_layer_streaming_maxpool_batch.py    | 4 ++--
 17 files changed, 31 insertions(+), 31 deletions(-)
 rename src/finn/transformation/fpgadataflow/{codegen_npysim.py => prepare_cppsim.py} (98%)

diff --git a/docs/finn/source_code/finn.transformation.fpgadataflow.rst b/docs/finn/source_code/finn.transformation.fpgadataflow.rst
index c4afa056f..5a6acbe39 100644
--- a/docs/finn/source_code/finn.transformation.fpgadataflow.rst
+++ b/docs/finn/source_code/finn.transformation.fpgadataflow.rst
@@ -32,7 +32,7 @@ finn.transformation.fpgadataflow.codegen\_ipstitch
 finn.transformation.fpgadataflow.codegen\_npysim
 ------------------------------------------------
 
-.. automodule:: finn.transformation.fpgadataflow.codegen_npysim
+.. automodule:: finn.transformation.fpgadataflow.prepare_cppsim
    :members:
    :undoc-members:
    :show-inheritance:
diff --git a/notebooks/advanced/1_custom_transformation_pass.ipynb b/notebooks/advanced/1_custom_transformation_pass.ipynb
index f79ea9fc1..a35786a85 100644
--- a/notebooks/advanced/1_custom_transformation_pass.ipynb
+++ b/notebooks/advanced/1_custom_transformation_pass.ipynb
@@ -404,7 +404,7 @@
       "                    inst.get_nodeattr(\"code_gen_dir_npysim\") != \"\"\n",
       "                ), \"\"\"Node\n",
       "                attribute \"code_gen_dir_npysim\" is not set. Please run\n",
-      "                Transformation CodeGen_npysim first.\"\"\"\n",
+      "                Transformation PrepareCppSim first.\"\"\"\n",
       "                # call the compilation function for this node\n",
       "                inst.compile_singlenode_code()\n",
       "                # ensure that executable path is now set\n",
diff --git a/notebooks/end2end_example/tfc_end2end_verification.ipynb b/notebooks/end2end_example/tfc_end2end_verification.ipynb
index f03add2da..4b6f98678 100644
--- a/notebooks/end2end_example/tfc_end2end_verification.ipynb
+++ b/notebooks/end2end_example/tfc_end2end_verification.ipynb
@@ -219,7 +219,7 @@
    "metadata": {},
    "source": [
     "To generate the code for this simulation and to generate the executable two transformations are used:\n",
-    "* `CodeGen_npysim` which generates the C++ code for the corresponding hls layer\n",
+    "* `PrepareCppSim` which generates the C++ code for the corresponding hls layer\n",
     "* `Compile` which compules the C++ code and stores the path to the executable"
    ]
   },
@@ -229,10 +229,10 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim\n",
+    "from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim\n",
     "from finn.transformation.fpgadataflow.compile import Compile\n",
     "\n",
-    "model_for_npysim = model_for_npysim.transform(CodeGen_npysim())\n",
+    "model_for_npysim = model_for_npysim.transform(PrepareCppSim())\n",
     "model_for_npysim = model_for_npysim.transform(Compile())"
    ]
   },
diff --git a/src/finn/custom_op/fpgadataflow/__init__.py b/src/finn/custom_op/fpgadataflow/__init__.py
index 8430a56bc..8e61b362d 100644
--- a/src/finn/custom_op/fpgadataflow/__init__.py
+++ b/src/finn/custom_op/fpgadataflow/__init__.py
@@ -288,7 +288,7 @@ class HLSCustomOp(CustomOp):
         if code_gen_dir == "":
             raise Exception(
                 """
-Found no codegen dir for this node, did you run the codegen_npysim transformation?
+Found no codegen dir for this node, did you run the prepare_cppsim transformation?
             """
             )
         # create a npy file for each input of the node (in_ind is input index)
diff --git a/src/finn/transformation/fpgadataflow/compile.py b/src/finn/transformation/fpgadataflow/compile.py
index 40c7da8f7..512c9562c 100644
--- a/src/finn/transformation/fpgadataflow/compile.py
+++ b/src/finn/transformation/fpgadataflow/compile.py
@@ -58,7 +58,7 @@ class Compile(NodeLocalTransformation):
                     inst.get_nodeattr("code_gen_dir_npysim") != ""
                 ), """Node
                 attribute "code_gen_dir_npysim" is not set. Please run
-                Transformation CodeGen_npysim first."""
+                Transformation PrepareCppSim first."""
                 # call the compilation function for this node
                 inst.compile_singlenode_code()
                 # ensure that executable path is now set
diff --git a/src/finn/transformation/fpgadataflow/codegen_npysim.py b/src/finn/transformation/fpgadataflow/prepare_cppsim.py
similarity index 98%
rename from src/finn/transformation/fpgadataflow/codegen_npysim.py
rename to src/finn/transformation/fpgadataflow/prepare_cppsim.py
index 02200e76d..a68e37bc3 100644
--- a/src/finn/transformation/fpgadataflow/codegen_npysim.py
+++ b/src/finn/transformation/fpgadataflow/prepare_cppsim.py
@@ -57,7 +57,7 @@ def _codegen_single_node(node, model):
         raise Exception("Custom op_type %s is currently not supported." % op_type)
 
 
-class CodeGen_npysim(Transformation):
+class PrepareCppSim(Transformation):
     """Call custom implementation to generate code for single custom node
     and create folder that contains all the generated files.
     All nodes in the graph must have the fpgadataflow backend attribute.
diff --git a/tests/end2end/test_end2end_cnv_w1a1.py b/tests/end2end/test_end2end_cnv_w1a1.py
index f6b4d8990..536b1bb6b 100644
--- a/tests/end2end/test_end2end_cnv_w1a1.py
+++ b/tests/end2end/test_end2end_cnv_w1a1.py
@@ -62,7 +62,7 @@ from finn.transformation.fpgadataflow.replace_verilog_relpaths import (
 )
 from finn.transformation.fpgadataflow.create_stitched_ip import CreateStitchedIP
 from finn.transformation.fpgadataflow.set_exec_mode import SetExecMode
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.make_pynq_driver import MakePYNQDriver
 from finn.transformation.fpgadataflow.make_pynq_proj import MakePYNQProject
@@ -189,7 +189,7 @@ def test_end2end_cnv_w1a1_verify_dataflow_part():
     out_name = model.graph.output[0].name
     inp_dict = {inp_name: x}
     # npysim
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     model = model.transform(SetExecMode("npysim"))
     model.save(build_dir + "/end2end_cnv_w1a1_ipgen_npysim.onnx")
diff --git a/tests/end2end/test_end2end_tfc_w1a1_throughput_test.py b/tests/end2end/test_end2end_tfc_w1a1_throughput_test.py
index 1cce1c55a..d73f79678 100644
--- a/tests/end2end/test_end2end_tfc_w1a1_throughput_test.py
+++ b/tests/end2end/test_end2end_tfc_w1a1_throughput_test.py
@@ -48,7 +48,7 @@ from finn.transformation.bipolar_to_xnor import ConvertBipolarMatMulToXnorPopcou
 from finn.transformation.fold_constants import FoldConstants
 from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen
 from finn.transformation.fpgadataflow.create_stitched_ip import CreateStitchedIP
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.create_dataflow_partition import (
     CreateDataflowPartition,
@@ -175,7 +175,7 @@ def test_end2end_tfc_w1a1_verify_dataflow_part():
     out_name = model.graph.output[0].name
     inp_dict = {inp_name: x}
     # npysim
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     model = model.transform(SetExecMode("npysim"))
     model.save(build_dir + "/end2end_tfc_w1a1_ipstitch_npysim.onnx")
diff --git a/tests/end2end/test_end2end_tfc_w1a2.py b/tests/end2end/test_end2end_tfc_w1a2.py
index a6516b8ea..e04c2866c 100644
--- a/tests/end2end/test_end2end_tfc_w1a2.py
+++ b/tests/end2end/test_end2end_tfc_w1a2.py
@@ -45,7 +45,7 @@ from finn.custom_op.registry import getCustomOp
 from finn.transformation.fold_constants import FoldConstants
 from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen
 from finn.transformation.fpgadataflow.create_stitched_ip import CreateStitchedIP
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.create_dataflow_partition import (
     CreateDataflowPartition,
@@ -167,7 +167,7 @@ def test_end2end_tfc_w1a2_verify_dataflow_part():
     out_name = model.graph.output[0].name
     inp_dict = {inp_name: x}
     # npysim
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     model = model.transform(SetExecMode("npysim"))
     model.save(build_dir + "/end2end_tfc_w1a2_ipstitch_npysim.onnx")
diff --git a/tests/end2end/test_end2end_tfc_w2a2.py b/tests/end2end/test_end2end_tfc_w2a2.py
index c33525428..07ea53569 100644
--- a/tests/end2end/test_end2end_tfc_w2a2.py
+++ b/tests/end2end/test_end2end_tfc_w2a2.py
@@ -45,7 +45,7 @@ from finn.custom_op.registry import getCustomOp
 from finn.transformation.fold_constants import FoldConstants
 from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen
 from finn.transformation.fpgadataflow.create_stitched_ip import CreateStitchedIP
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.create_dataflow_partition import (
     CreateDataflowPartition,
@@ -167,7 +167,7 @@ def test_end2end_tfc_w2a2_verify_dataflow_part():
     out_name = model.graph.output[0].name
     inp_dict = {inp_name: x}
     # npysim
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     model = model.transform(SetExecMode("npysim"))
     model.save(build_dir + "/end2end_tfc_w2a2_ipstitch_npysim.onnx")
diff --git a/tests/fpgadataflow/test_code_gen_trafo.py b/tests/fpgadataflow/test_code_gen_trafo.py
index a9b9cd84d..129d9ae16 100644
--- a/tests/fpgadataflow/test_code_gen_trafo.py
+++ b/tests/fpgadataflow/test_code_gen_trafo.py
@@ -33,7 +33,7 @@ from onnx import TensorProto, helper
 import finn.util.basic as util
 from finn.core.datatype import DataType
 from finn.core.modelwrapper import ModelWrapper
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 
 
 def test_code_gen_trafo():
@@ -77,7 +77,7 @@ def test_code_gen_trafo():
     W = util.gen_finn_dt_tensor(wdt, (mw, mh))
     model.set_initializer("weights", W)
 
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     for node in model.graph.node:
         code_gen_attribute = util.get_by_name(node.attribute, "code_gen_dir_npysim")
         tmp_dir = code_gen_attribute.s.decode("UTF-8")
diff --git a/tests/fpgadataflow/test_compilation_trafo.py b/tests/fpgadataflow/test_compilation_trafo.py
index 7a5088854..42f4bfc84 100644
--- a/tests/fpgadataflow/test_compilation_trafo.py
+++ b/tests/fpgadataflow/test_compilation_trafo.py
@@ -33,7 +33,7 @@ from onnx import TensorProto, helper
 import finn.util.basic as util
 from finn.core.datatype import DataType
 from finn.core.modelwrapper import ModelWrapper
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 
 
@@ -78,7 +78,7 @@ def test_compilation_trafo():
     W = util.gen_finn_dt_tensor(wdt, (mw, mh))
     model.set_initializer("weights", W)
 
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     for node in model.graph.node:
         compilation_attribute = util.get_by_name(node.attribute, "executable_path")
diff --git a/tests/fpgadataflow/test_convert_to_hls_layers_cnv.py b/tests/fpgadataflow/test_convert_to_hls_layers_cnv.py
index 46c39e45a..273ebc952 100644
--- a/tests/fpgadataflow/test_convert_to_hls_layers_cnv.py
+++ b/tests/fpgadataflow/test_convert_to_hls_layers_cnv.py
@@ -45,7 +45,7 @@ from finn.transformation.double_to_single_float import DoubleToSingleFloat
 from finn.transformation.lower_convs_to_matmul import LowerConvsToMatMul
 from finn.transformation.bipolar_to_xnor import ConvertBipolarMatMulToXnorPopcount
 import finn.transformation.fpgadataflow.convert_to_hls_layers as to_hls
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.set_exec_mode import SetExecMode
 from finn.custom_op.registry import getCustomOp
@@ -113,7 +113,7 @@ def test_convert_to_hls_layers_cnv_w1a1():
     mp_nodes = model.get_nodes_by_op_type("StreamingMaxPool_Batch")
     assert len(mp_nodes) == 2
     # model.save("cnv-pre-compile.onnx")
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     model = model.transform(SetExecMode("npysim"))
     # model.save("cnv-post-compile.onnx")
diff --git a/tests/fpgadataflow/test_convert_to_hls_layers_fc.py b/tests/fpgadataflow/test_convert_to_hls_layers_fc.py
index 1a2d65de0..7b18e8585 100644
--- a/tests/fpgadataflow/test_convert_to_hls_layers_fc.py
+++ b/tests/fpgadataflow/test_convert_to_hls_layers_fc.py
@@ -42,7 +42,7 @@ from finn.core.modelwrapper import ModelWrapper
 from finn.custom_op.registry import getCustomOp
 from finn.transformation.bipolar_to_xnor import ConvertBipolarMatMulToXnorPopcount
 from finn.transformation.fold_constants import FoldConstants
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.set_exec_mode import SetExecMode
 from finn.transformation.general import GiveReadableTensorNames, GiveUniqueNodeNames
@@ -107,7 +107,7 @@ def test_convert_to_hls_layers_tfc_w1a1():
     fc3w.set_nodeattr("SIMD", 16)
     fc3w.set_nodeattr("PE", 10)
 
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     model = model.transform(SetExecMode("npysim"))
 
@@ -171,7 +171,7 @@ def test_convert_to_hls_layers_tfc_w1a2():
     fc3w = getCustomOp(fc3)
     fc3w.set_nodeattr("SIMD", 16)
     fc3w.set_nodeattr("PE", 10)
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     model = model.transform(SetExecMode("npysim"))
     raw_i = get_data("finn", "data/onnx/mnist-conv/test_data_set_0/input_0.pb")
diff --git a/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py b/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py
index 7c19ebbfa..68421d67d 100644
--- a/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py
+++ b/tests/fpgadataflow/test_fpgadataflow_convinputgenerator.py
@@ -34,7 +34,7 @@ import finn.core.onnx_exec as oxe
 from finn.core.datatype import DataType
 from finn.core.modelwrapper import ModelWrapper
 from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.hlssynth_ipgen import HLSSynth_IPGen
 from finn.transformation.fpgadataflow.set_exec_mode import SetExecMode
@@ -147,7 +147,7 @@ def test_fpgadataflow_slidingwindow(idt, k, ifm_dim, ifm_ch, stride, exec_mode,
 
     if exec_mode == "npysim":
         model = model.transform(SetExecMode("npysim"))
-        model = model.transform(CodeGen_npysim())
+        model = model.transform(PrepareCppSim())
         model = model.transform(Compile())
     elif exec_mode == "rtlsim":
         model = model.transform(SetExecMode("rtlsim"))
diff --git a/tests/fpgadataflow/test_fpgadataflow_fclayer.py b/tests/fpgadataflow/test_fpgadataflow_fclayer.py
index 7552fecd8..75ebf80e2 100644
--- a/tests/fpgadataflow/test_fpgadataflow_fclayer.py
+++ b/tests/fpgadataflow/test_fpgadataflow_fclayer.py
@@ -39,7 +39,7 @@ from finn.core.datatype import DataType
 from finn.core.modelwrapper import ModelWrapper
 from finn.custom_op.multithreshold import multithreshold
 from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.hlssynth_ipgen import HLSSynth_IPGen
 from finn.transformation.fpgadataflow.set_exec_mode import SetExecMode
@@ -191,7 +191,7 @@ def test_fpgadataflow_fclayer_npysim(mem_mode, idt, wdt, act, nf, sf, mw, mh):
         inst = getCustomOp(node)
         inst.set_nodeattr("mem_mode", mem_mode)
     model = model.transform(SetExecMode("npysim"))
-    model = model.transform(CodeGen_npysim())
+    model = model.transform(PrepareCppSim())
     model = model.transform(Compile())
     # prepare input data
     input_dict = prepare_inputs(x, idt, wdt)
diff --git a/tests/fpgadataflow/test_layer_streaming_maxpool_batch.py b/tests/fpgadataflow/test_layer_streaming_maxpool_batch.py
index a7a731aaa..0e470a751 100644
--- a/tests/fpgadataflow/test_layer_streaming_maxpool_batch.py
+++ b/tests/fpgadataflow/test_layer_streaming_maxpool_batch.py
@@ -34,7 +34,7 @@ import finn.core.onnx_exec as oxe
 from finn.core.datatype import DataType
 from finn.core.modelwrapper import ModelWrapper
 from finn.transformation.fpgadataflow.codegen_ipgen import CodeGen_ipgen
-from finn.transformation.fpgadataflow.codegen_npysim import CodeGen_npysim
+from finn.transformation.fpgadataflow.prepare_cppsim import PrepareCppSim
 from finn.transformation.fpgadataflow.compile import Compile
 from finn.transformation.fpgadataflow.hlssynth_ipgen import HLSSynth_IPGen
 from finn.transformation.fpgadataflow.set_exec_mode import SetExecMode
@@ -138,7 +138,7 @@ def test_fpgadataflow_streamingmaxpool(idt, k, ifm_dim, ifm_ch, exec_mode):
 
     if exec_mode == "npysim":
         model = model.transform(SetExecMode("npysim"))
-        model = model.transform(CodeGen_npysim())
+        model = model.transform(PrepareCppSim())
         model = model.transform(Compile())
     elif exec_mode == "rtlsim":
         model = model.transform(SetExecMode("rtlsim"))
-- 
GitLab