Optimizing Xilinx designs through primitive instantiation

This paper is intended as a guideline for people who are interested in manual instantiation of FPGA primitives as a way of improving the performance of an FPGA design. The focus of the paper is on designs where slice primitives like flip-fops and lookup tables are instantiated. Guidelines on how to develop a design with manual instantiation are presented together with a case study of a high performance bitserial two's complement divider where a majority of the area is manually instantiated. This divider is capable of reaching a maximum frequency of 345 MHz in the fastest Virtex-4 while utilizing less than 150 LUTs thanks to the high amount of manual optimizations. An open source library containing modules intended to promote the structured development of modules with manually instantiated components is also presented.

[1]  Dake Liu,et al.  A high performance microprocessor with DSP extensions optimized for the Virtex-4 FPGA , 2008, 2008 International Conference on Field Programmable Logic and Applications.

[2]  P. Metzgen Optimizing a high performance 32-bit processor for programmable logic , 2004, 2004 International Symposium on System-on-Chip, 2004. Proceedings..

[3]  Donald E. Knuth,et al.  Structured Programming with go to Statements , 1974, CSUR.

[4]  Satnam Singh Death of the RLOC? , 2000, Proceedings 2000 IEEE Symposium on Field-Programmable Custom Computing Machines (Cat. No.PR00871).

[5]  Dake Liu,et al.  An ASIC perspective on FPGA optimizations , 2009, 2009 International Conference on Field Programmable Logic and Applications.

[6]  Jean-Pierre Deschamps,et al.  High speed fixed point dividers for FPGAs , 2009, 2009 International Conference on Field Programmable Logic and Applications.