Abstract
This paper presents a method to resynthesize logic of a programmed FPGA from a bitstream file that is a downloaded file for Xilinx FPGA (Field Programmable Gate Array). It focuses on reconfiguring the LUT (Look Up Table) logic. The bitstream data is compared and analyzed considering various situations and various input variables such as composing other logics using the same netlist or synthesizing the same logic at various positions to find a structure of the bitstream. Based on the analyzed bitstream, we construct a truth table of the LUT by implementing various logic for one LUT. The proposed algorithm extracts the logic of the LUT based on the truth table of the generated LUT and the bitstream. The algorithm determines the input and output pins used to implement the logic in the LUT. As a result, we extract a gate level logic from a bitstream file for the targeted Xillinx FPGA.
본 논문은 Xilinx FPGA(Field Programmable Gate Array)에 다운로드하는 비트스트림으로부터 FPGA의 리소스 중 하나인 LUT(Look Up Table)로직을 재합성하는 방법을 제안한다. 비트스트림과 디바이스 구조는 밀접한 관계가 있기 때문에, 비트스트림을 분석하기 위해서 FPGA디바이스 구조를 분석해야 한다. 동일한 네트리스트를 사용하여 여러 가지 로직을 합성하거나, 위치를 변경하면서 로직을 합성하는 등 다양한 상황, 여러 입력 변수에 대한 비트스트림과 FPGA 디바이스 구조를 비교분석해 비트스트림 구조를 파악한다. 분석된 비트스트림 구조와 다양한 논리함수의 비트스트림을 바탕으로 하나의 LUT에 대한 진리표를 구성하고, 구성된 LUT의 진리표와 제안한 알고리즘을 기반으로 LUT의 로직을 재합성 한다. 제안한 알고리즘은 LUT에 로직을 구현할 때 사용되는 입력 핀과 출력 핀을 결정할 수 있으며, FPGA에 다운로드 되는 비트스트림으로부터 게이트 레벨의 로직회로를 얻을 수 있었다.