Ali U. Irturk
Ph.D. at University of California, San Diego
M.A. and M.S. at University of California, Santa Barbara
B.A. and B.S. at Turkish Naval Academy
GUSTO
For automatic generation and optimization of application specific architectures, we have designed an easy to use tool, GUSTO ("General architecture design Utility and Synthesis Tool for Optimization"). GUSTO is the first tool of its kind to provide automatic generation and optimization of a variety of general purpose architectures with different parameterization options. It also optimizes the general purpose architecture to improve its area results and design quality which results in a scheduled, static, application specific architecture. GUSTO allows the user to select the application, the type and number of arithmetic resources, the data representation (the integer and fractional bit width) and the different modes of operation for general purpose or application specific architectures.
Flow of GUSTO
GUSTO has two different modes of operation. Mode 1 provides a general purpose architecture while Mode 2 provides an application specific architecture. The general purpose architecture is used for area and timing analysis of a general non-optimized solution, and the advantage of this architecture is that it is capable of performing different applications with a selection input. Unfortunately, Mode 1's general purpose architectures generally do not lead to high-performance results. When the user knows the environmental requirements and characteristics which will be encountered, choosing a specific method and creating an application specific architecture by optimizing/customizing these architectures to improve their area results is another essential step to enhance design quality.
In Mode 2, GUSTO creates a scheduled, static, application specific architecture while ensuring the correctness of the solution is maintained. we divided these optimizations into two sections: static architecture generation and trimming for optimization.
Static architecture generation: Mode 1 of GUSTO generates a general purpose architecture and its datapath by using resource constrained list scheduling after the required inputs are given. Simulating this architecture in Mode 2 helps us to reveal the assignments done to the arithmetic units and the memory elements during the scheduling process. Gathering this information and using it to cancel the scheduling process and dynamic memory assignments results in a static architecture with significant area and timing savings.
Trimming for optimization: GUSTO performs trimming/removing the unused resources from the general purpose architecture while ensuring that correctness of the solution is maintained. GUSTO simulates the architecture to define the usage of arithmetic units, multiplexers, register entries and input/output ports and trims away the unused components with their interconnects. A trimming example is shown below. Suppose there are 2 arithmetic units with 2 inputs/1 output each and one memory with 1 input/2 outputs (a). Input / output port relationships between arithmetic unit A and the other units are shown in a block diagram in (b). Although Out_A, Out_B, Out_mem1, and Out_mem2 are all inputs to In_A1 and In_A2, not all the inputs may be used during computation. We can represent whether an input/output port is used or not during simulation in a matrix such as the one shown in (c). As the simulation runs, the matrix is filled with 1s and 0s representing the used and unused ports respectively. GUSTO uses these matrices to remove the unused resources (d). In this example, two inputs, Out_A, Out_mem1 to In_A1 and another two inputs, Out_B, Out_mem2 to In_A2 are removed.
Flow of GUSTO's trimming feature