Hardware/Software Co-verification of DNN for IoT Edge Devices: Leveraging FPGAs
Deep neural networks (DNN) is one of the emerging types of machine learning that is being used to solve problems that are too complex to be solved by humans. However, with the growing complexity of the problems in practical applications today, there are more computations and a need for portability for these DNN. With the utilization of graphics processing units (GPUs) to perform the computations required by DNN now deep learning is becoming ubiquitous. However, the downside is that GPUs are not portable to deploy inference on non-specialized general purpose embedded system designs or internet of things (IoT) applications. An alternative is to use a Field Programmable Gate Arrays (FPGAs) which is an embedded system designed for data-intensive processing and can even be used in low-power battery operated devices. FPGAs can achieve a high level of performance at a lower cost of power. In this work, a complete methodology is shown to deploy inference phase of DNN. One of the most popular DNN architecture known as Convolutional Neural Network (CNN) has been implemented on a FPGA board known at PYNQ-Z1 using the PYNQ platform to execute the CNN. Our methodology takes the advantage of Python overlay provided for PYNQ-Z1 to easily debug and verify the CNN-IP generated by regular syntheses tools such as Xilinx’s Vivado.