15.01.2013 Views

U. Glaeser

U. Glaeser

U. Glaeser

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

FIGURE 37.6 Design flow using an HDL (e.g., VHDL).<br />

Note the absence of a feedback loop in the synthesis<br />

branch: for a design verified in simulation, the synthesis<br />

process is a black box.<br />

communication outside the array. Logic blocks take up to four 2-bit inputs and produce 2-bit outputs:<br />

a row of the array can thus process up to four 46-bit words. Garp’s designers hypothesize that the<br />

reconfigurable section may be used effectively to implement the critical kernels found in most code: the<br />

ability to hard-wire the control logic will reduce instruction fetch bottlenecks and better exploit parallelism.<br />

Memory queues, which handle streaming of data to and from memory, were added because many<br />

applications which use reconfigurable systems effectively process streams of data.<br />

Results from the Garp simulator on a wavelet image compression program showed an overall<br />

speedup of 2.9 compared to the MIPS processor. Individual kernels within this program showed<br />

speedups up to 12, observed when a kernel had high exploitable instruction level parallelism and the<br />

configuration loading time could be amortized over many compute cycles. Comparisons of Garp’s<br />

performance with a 4-issue superscalar processor also showed significant speedups, indicating that<br />

Garp was able to exploit more instruction level parallelism, sustaining 10 instructions per cycle in<br />

many cases.<br />

Programming Reconfigurable Systems<br />

High-Level Hardware Design Languages<br />

The design flow for a reconfigurable system is shown in Fig. 37.6; a high-level hardware design language<br />

(HDL) is usually used for the software modeling stage: VHDL and Verilog are widely used as excellent<br />

support tools are available. The design process is basically identical to that used for any software system:<br />

specifications are drawn up and validated, software models created and verified and the compiled<br />

“program” is loaded onto the target devices or burnt into ROMs. The only significant difference is that<br />

two compilers are generally used. A simulator compiles VHDL or Verilog source and produces diagnostic<br />

output not only as text to consoles or logged to files, but as waveforms or lists of changes in signal values.<br />

When the designer has verified that the models perform in accordance with their specifications under<br />

simulation, a synthesizer compiles the source again to a netlist—an intermediate representation of the<br />

final circuit. Device-specific place-and-route tools take netlists as input and place logic into logic blocks<br />

and configure the FPGA’s routing resources to make the necessary connections between logic blocks and<br />

I/O pins. The output of this stage is a configuration file—a stream of bits which are loaded onto the<br />

device to program its internal registers, multiplexors, etc. For many designs, the whole process (synthesis →<br />

place-and-route → configuration bit stream) can be viewed as a single step black-box, which turns verified<br />

HDL models into configuration files. Whilst it may take several hours for a complex system, it does not<br />

require any input from the user. The designer will usually simply advise the tools whether speed or area<br />

is the primary constraint. Significant interaction with the place-and-route tools is needed only if there<br />

are performance constraints which cannot be met with default parameters: in this case, manual placement<br />

of logic blocks can assist in satisfying the constraints.<br />

© 2002 by CRC Press LLC<br />

HDL Code<br />

Specification<br />

Software Models<br />

Simulation Synthesis<br />

Waveforms<br />

Signal lists<br />

Reports<br />

HDL Code<br />

Net lists<br />

Place and Route<br />

Configuration<br />

bit stream<br />

Program Device

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!