finn
finn copied to clipboard
Dataflow compiler for QNN inference on FPGAs
Currently we extract data from .vcd traces for performance debugging purposes. This can get very slow for large networks as the traces can be huge, and the cycle-by-cycle behavior has...
Sometimes it's necessary to iterate over a design multiple times by changing some parameters to observe how the behavior changes. To speed up the dev process for these use cases,...
For StreamingFCLayer_Batch with large initializators, g++ may have a Segment fault. ``` g++: internal compiler error: Segmentation fault (program cc1plus) ... ```` clang++ stalls. This problem disappears when applying folding....
For large nets, it can take several more than 20 to compile the sources even using 15 thread (with a uP with more that 15 cores and low load). It...
FINN uses almost exclusively NHWC operators, while most onnx ops prefer NCHW. When mixing the two kinds of operators in the same graph it's required to add transpose nodes that...
ONNX provides two ways of providing constant tensors, which is either to use tensor initializers or to use a `Constant` node. FINN adopts the initializer approach and we make assumptions...
Thanks to @quetric we now have a `finn.util.fpgadataflow.rtlsim_multi_io()` function that handles rtlsim for modules with multiple input/output streams. For now this is called with a separate method in `HLSCustomOp` also...
Currently the `AddStreams_Batch` op sets its output DataType to be the next available integer FINN DataType as follows: ``` idt = DataType[self.get_nodeattr("inputDataType")] if idt.signed(): return DataType.get_smallest_possible(2 * idt.min()) else: return...
We typically create an ONNX `Constant` node that produces the correct output shape for `CustomOp` derivatives that can't use other ONNX standard ops for shape inference. It almost always looks...
Transformations that work with generated Verilog files such as `PrepareRTLSim` and `CreateStitchedIP` can break if `ReplaceVerilogRelPaths` is not called first to replace any generated relative paths for memfiles with absolute...