I. Introduction
Field Programmable Gate Arrays (FPGAs) are programmable platforms for lots of applications such as networking, signal processing, encryption, and storage systems. In static random access memory (SRAM)-based FPGAs, logic elements and programmable switches can be reprogrammed by loading a configuration bitstream, giving FPGAs an incredible flexibility to implement any digital circuit on the same piece of silicon.