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 6. LAYOUT CASE STUDIES 133<br />

b<br />

a<br />

cout<br />

Figure 6.1: <strong>Circuit</strong> diagram <strong>of</strong> the full adder block<br />

block fadd ((wire a, wire b), wire cout) ∼ (wire cin, wire ans)<br />

attributes { height = 1. width = 1. }{<br />

wire xored ab.<br />

(a,b) ; xor2 ; xored ab at (0,0).<br />

(cin, xored ab) ;xorcy ; ans at (0,0).<br />

(a, cin) ; muxcy xored ab ;cout at (0,0).<br />

}<br />

Figure 6.2: A full adder <strong>with</strong>in a single Virtex 2 slice<br />

All three primitive components <strong>with</strong>in the fadd block are placed at co-ordinates (0, 0) indi-<br />

cating that they should be located <strong>with</strong>in the same slice. The xor2 block is a wrapper for the<br />

Xilinx lut2 primitive which initialises the look-up table <strong>with</strong> the values necessary to produce<br />

an xor function.<br />

We have illustrated the full adder from the unpipelined ripple adder circuit, however, it is<br />

possible to connect a pipeline register on the output ans signal in a series composition <strong>with</strong><br />

the xorcy block, all <strong>with</strong>in the same slice. A full n-bit ripple adder can be formed using the<br />

column combinator: (a, b) ; zip 2 ; π1 −1 ; coln fadd ; (cin, ans).<br />

The verification <strong>of</strong> the fadd layout is a particular issue. Since the smallest meaningful element<br />

in our layout framework is a block <strong>of</strong> size 1 ×1 (half a slice, for Virtex-II) and our framework<br />

assumes a homogeneous grid <strong>of</strong> resources, it is not possible to verify the layout <strong>with</strong>in the full<br />

adder block. Instead, we reason about circuits using the full adder at the level <strong>of</strong> individual<br />

full adders, assuming that fadd itself is correct. The xor2, xorcy and muxcy blocks (and fd<br />

flip-flop primitives, if desired) are given a size <strong>of</strong> 0 × 0 to indicate that many can be packed<br />

<strong>with</strong>in a slice.<br />

cin<br />

ans

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

Saved successfully!

Ooh no, something went wrong!