24.04.2013 Views

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CHAPTER 2. BACKGROUND AND RELATED WORK 7<br />

<strong>FPGA</strong>s consist <strong>of</strong> a grid <strong>of</strong> programmable logic cells and programmable routing to connect<br />

these computational elements together. The vast proportion <strong>of</strong> chip area is made up <strong>of</strong><br />

programmable routing resources. As well as basic programmable logic cells, many <strong>FPGA</strong><br />

architectures also include more complex hardware such as embedded RAMs, multipliers and<br />

instruction processors.<br />

The main component <strong>of</strong> each <strong>FPGA</strong> logic cell is typically an SRAM look-up table (LUT),<br />

which can be programmed to implement any n-input logic function. Each logic cell usually<br />

contains a flip-flop which can be connected to the output <strong>of</strong> the LUT and possibly other<br />

specific logic designed to accelerate particular common functions.<br />

<strong>FPGA</strong>s are programmed to adopt a particular configuration by loading a “bitstream”. This<br />

is usually done at start-up but it is also possible reconfigure <strong>FPGA</strong>s at run-time, adapting<br />

their function as they continue to process data. This bitstream is typically generated from a<br />

high-level description in some kind <strong>of</strong> hardware description language.<br />

2.1.1 Generating <strong>FPGA</strong> <strong>Circuit</strong>s<br />

The process <strong>of</strong> generating <strong>FPGA</strong> configurations from hardware descriptions is usually a<br />

complex and time consuming process. Four major steps are:<br />

1. Synthesis: generating a graph representing <strong>of</strong> logical expressions representing a design<br />

from a higher-level hardware description. This could include the process <strong>of</strong> creating a<br />

logical description from an imperative one, such as Handel-C [12].<br />

2. Mapping: assigning logic graph nodes into devices resources such as look-up tables or<br />

registers. Algorithms like FlowMap [13] can be used to achieve this.<br />

3. Placement: the placement <strong>of</strong> mapped resources onto specific resources <strong>of</strong> the target<br />

architecture. Automatic placement algorithms typically use heuristics such as simulated<br />

annealing [35].<br />

4. Routing: configuring the programmable routing fabric to connect the placed resources<br />

together to implement the logic graph.

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

Saved successfully!

Ooh no, something went wrong!