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 2. BACKGROUND AND RELATED WORK 9<br />

Structural hardware descriptions in VHDL or Verilog can be annotated <strong>with</strong> “RLOC” place-<br />

ment constraints for targeting Xilinx <strong>FPGA</strong> architectures. Figure 2.1 illustrates how this<br />

can be used in VHDL to place a column <strong>of</strong> flip-flops. The placement co-ordinates are given<br />

using the co-ordinate system for Virtex and earlier Spartan devices, where positions are<br />

given as a string <strong>of</strong> “RmCn.Sp” to place a component in a particular row and column and<br />

then at a numbered slice at that position. Later device families, including Virtex-II, use a<br />

slice-based co-ordinate system where components are placed <strong>with</strong> a co-ordinate scheme <strong>of</strong><br />

“XmYn” where each combination <strong>of</strong> (m, n) describes a different slice.<br />

The Pebble language [46] supports a simpler but equivalent placement infrastructure by<br />

allowing hardware instantiations to be annotated <strong>with</strong> at (x,y). These co-ordinates are<br />

mapped into an appropriate architecture-specific format when the Pebble descriptions are<br />

compiled into VHDL [48].<br />

Specifying layouts <strong>with</strong> absolute co-ordinates is tedious and error-prone, particularly for<br />

parameterised hardware descriptions where placement constraints may work for some com-<br />

binations <strong>of</strong> parameters but not others. For parameterised, placed, hardware libraries this is<br />

a particular issue since even if the design if functionally correct some instantiations <strong>of</strong> it may<br />

not produce valid layouts.<br />

An alternative is relative placement, where components are instantiated below or beside one<br />

another. Relative placement is not as powerful as placement <strong>with</strong> explicit co-ordinates, how-<br />

ever if properly specified then it does remove the possibility <strong>of</strong> describing incorrect layouts.<br />

The Pebble system has been extended to support relative placement [49, 50]. All block<br />

instantiations must be contained <strong>with</strong>in a beside or below block which describes layout on a<br />

grid. beside for and below for constructs are provided to handle iteration. The Pebble system<br />

is unique in that relatively placed circuit descriptions can be compiled into parameterised<br />

libraries <strong>with</strong> explicit co-ordinates, however it does not always do this in the most optimal<br />

manner as we will discuss in Chapter 3.<br />

Relative placement systems based on higher-order combinators have been demonstrated for<br />

Lava [7] and Ruby [24, 26, 31]. Ruby circuits are described as relations between inputs<br />

and outputs and can be given layout interpretations through their use <strong>of</strong> beside and below

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

Saved successfully!

Ooh no, something went wrong!