"Design of Parameterizable Hardware Macros for Reconfigurable Computers"

Kris Gaj2, Tarek El-Ghazawi1, Dan Poznanovic3, Hoang Le2, Proshanta Saha1, Steve Heistand3, Chang Shu2, Esam El-Araby1, Miaoqing Huang1, Deapesh Misra2, and Paul Gage3

1The George Washington University
2George Mason University
3SRC Computers


Multiple applications targeting reconfigurable computers, including cryptography and image processing, require universal parameterizable hardware macros that can solve the same problem for many different values of some basic parameters. 

For example, in public-key cryptography, a key size can often vary in a wide range, e.g., from 160 to 512 bits, and its size determines the size of inputs, outputs, and intermediate variables. Similarly, in image processing, filters and transforms, can often have multiple parameters, such as the numbers of rows and columns, the number of bands, etc. 

Hardware description languages, and in particular VHDL, allow the development of universal functions, which work for arbitrary values of parameters described using constants or generics. The exact range of allowed parameter values is often limited only by the available area or the required clock frequency. 

Unfortunately, in the current generation of reconfigurable computers and programming environments, calling these hardware macros from a high-level language is a much more challenging problem. Majority of the today’s programming languages being compiled to hardware, such as MAP C from SRC Computers or Handel C from Celoxica, do not support pointers, unconventional data types, or run-time parameter changes. 

In this paper, we demonstrate that the problem of calling parametrizable hardware macros from MAP C can be resolved by using two types of preprocessors and the special preprocessor directives embedded within MAP C.  

The first preprocessor is a script that based on a user input regarding parameter values creates all necessary black-box interfaces, info files, etc. The second preprocessor is a script that takes the predefined short directives embedded by a programmer in the MAP C code, and turns them into a much longer sequence of instructions of MAP C. 

The ways of generalizing our solution to other high level languages capable of hardware macro calls, e.g., Mitrion-C or Handel C, will be investigated, and the conclusions provided.

2006 MAPLD International Conference Home Page