Learning Arithmetic Operations from Gate-Level Circuit

C++

In collaboration with 張家翔、陳宥辰. 
This is the final project of Introduction to Electronic Design Automation (Spring 2022)
It received the top score among 25+ teams.

Introduction

Reverse engineering, which aims to reconstruct high-level description of a given gate-level netlist, is essential for maintaining design security and detecting malicious third-party hard IP cores. In this work, we implemented an efficient engineering solver and proposed a method for determining if-else conditions using the Quine-Mccluskey procedure. Our design solves netlists consisting of general operations efficiently using equivalence checking. Our design derives the high-level description of the netlist by the following steps: (1) Converting the netlist into a graph. (2) Performing equivalence checking between the netlist and the output function candidates to form a two dimensional boolean table. (3) Applying the Quine-Mccluskey procedure to find the minimum cover of the table. (4) Finding the control signals according to the cover and solving its high-level logic. This design reaches maximum re-duction for 8 test cases provided by CAD contest out of 20 while maintaining extremely low runtime.

Presentation Slide