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 156<br />

x_in<br />

y_in<br />

R<br />

x_out<br />

z_in z_out<br />

y_out<br />

Figure 6.21: The cube cell wiring block<br />

have implemented tplapl and tplapr using the Quartz compiler infrastructure for defining new<br />

experimental language constructs.<br />

The tuple-append operations do exhibit some interesting behaviour because <strong>of</strong> the way they<br />

interact <strong>with</strong> other aspects <strong>of</strong> the Quartz type system, in particular the typing rule which<br />

treats a singleton as equivalent to a single-element tuple. For example, the operation tplapl<br />

1 or tplapr 1 applied to a pair leaves the pair unchanged – the effect is to append the left or<br />

right element to the single element tuple <strong>of</strong> the other element forming a new pair <strong>with</strong>in the<br />

original tuple, which is then eliminated because it only contains a single element (the pair).<br />

For tplapl the process looks a little like:<br />

(a, b) −→ ((a), b) −→ ((a, b)) −→ (a, b)<br />

The tuple-append operators allow us to decompose an n-tuple into a pair <strong>of</strong> the leftmost/right-<br />

most element and the rest <strong>of</strong> the tuple. Once this has been done we can use standard oper-<br />

ations on pairs to manipulate the tuple. They are vital in allowing us to generalise the 3D<br />

combinator we have developed in this section into an n-dimensional meta-combinator, nd .<br />

We describe this as a meta-combinator because it is not itself a valid Quartz combinator<br />

since it is parameterised in its number <strong>of</strong> dimensions and utilises tuples <strong>of</strong> parameterisable<br />

lengths, something that is not valid in the Quartz type system. Each possible instance is a<br />

valid combinator but must be described individually. It has been designed to use point-free<br />

wiring constructs in order to achieve its generality and thus could be a valid construct in the<br />

untyped Ruby calculus. The limiting influence <strong>of</strong> type systems in specification languages has

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

Saved successfully!

Ooh no, something went wrong!