ECE 667 - Synthesis and Verification of Digital Systems
Spring 2016

Suggested Projects

Here is an example of a project report: Final Project Report Use this format to prepare yours.

This is the list of proposed projects for this class. Please check this site frequently as the projects get updated and new projects may be added. Students who will decide to take a project, will be required to submit the following reports:


Project 1 : Divider Circuit Generator

The goal of this project is to create software program that will automatically generate a divider circuit in verilog HDL. Follow the following steps.

NOTES:

1) You will need to develop and test your program on Ubuntu machine running Linux. Make sure it can be compiled on another Ubuntu machine.

2) To test your program, you should use ABC tool. Specifically, you will need to read the verilog file and simulate it on a sufficient number of test vectors to check if it works correctly.

3) When you submit your program, you must package all the files including the makefile . To learn about Makefile, consult the following link: Makefile tutorial .


Project 2 : Debugging of Arithmetic Circuits

This research project is related to a novel diagnosis and logic debugging method for gate-level arithmetic circuits. We have recently developed a method to detect logic bugs in a synthesized circuit that is caused by using a wrong gate ("gate replacement" error), which change the functionality of the circuit. The method is based on modeling the circuit in an algebraic domain and computing its algebraic "signature". The location and type of the bug is determined by comparing signatures computed in both directions, using forward (PI to PO) and backward (PO to PI) rewriting. Once the error location is identified (at the place when the two signatures differ), the method is able to automatically correct the detected bug. The problem we are facing now is how to find at which point to compare the two signature, as this will indicate the location of the actual bug.

This idea of arithmetic debugging is illustrated in the following poster: poster-debugging.pdf
A more detailed description of the technique is given in the following paper: debugging-paper-ISVLSI-2015.pdf

The goal of the project is to come up with the strategy and an algorithm to guide the rewriting process to efficiently localize the error. You will have access to the rewriting software and all the tools needed to traverse the circuit. Your task is to write a higher level program in C, C++ or Python, that will try to localize the error in the most efficient way.


Project 3 : Arithmetic Circuit Generator

Generate a gate-level BLIF netlist of an arithmetic circuit, with the function provided by the user. Description of the BLIF format can be found on the class website in the tools menu under ABC.


Project 4: Formal Verification of Arithmetic FPGA Circuits

Good luck !