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

Create successful ePaper yourself

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

CHAPTER 5. SPECIALISATION 120<br />

block or2 (data a, data b) ∼ (data c) {<br />

if (a = Known a2) {<br />

if a2 { c = Known true. }else { c = b. } .<br />

} else if (b = Known b2) {<br />

if b2 { c = Known true. }else { c = Known false. }.<br />

} else<br />

(Wire a, Wire b) ; or2 ; (Wire c).<br />

} .<br />

}<br />

Figure 5.9: Distributed specialisation for an or2 block <strong>with</strong> a better type system<br />

5.4 High Level Specialisation<br />

Primitive-level specialisation <strong>with</strong> clever components that can eliminate individual gates is<br />

a useful process however it is not a total solution to all possible specialisation requirements.<br />

A higher level approach to specialisation, writing specialisation code for larger blocks such<br />

as library elements, also has a significant role to play.<br />

An important consideration is that constant folding, while one <strong>of</strong> the most useful optimi-<br />

sations to carry out when specialising circuits <strong>with</strong> an aim to reduce their area or improve<br />

performance, is not the only specialisation procedure we might wish to apply. There are<br />

many reasons we might wish to specialise a design, for example:<br />

1. To eliminate unnecessary logic in order to free space on the device for other function-<br />

ality, or to reduce the circuit’s power consumption.<br />

2. To increase the maximum clock frequency and run the circuit at a higher speed.<br />

3. To eliminate unnecessary computation from the critical path <strong>of</strong> a pipelined design,<br />

reducing the overall latency.<br />

4. To free space, allowing it to be used to further parallelise the computation.<br />

Items 3 & 4 are particularly interesting. If the initial stages <strong>of</strong> a pipelined computation could<br />

be eliminated by pre-computation <strong>of</strong> some <strong>of</strong> the inputs then the resulting circuit’s latency<br />

could be reduced. If the circuit is required to have a specific latency then this “latency slack”<br />

can be used to introduce additional pipelining in the later stages. This could then allow the<br />

design to run at a higher clock frequency overall, or the design could be run at the same

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

Saved successfully!

Ooh no, something went wrong!