1.2   DESIGN AND IMPLEMENTATION USING FPGAs

A design exists separately from its mapping into its implementation as one or more FPGAs. Often an individual design is part of a larger system’s design. Designing, in any medium is the most compelling part of engineering, and designing with FPGAs is particularly challenging because the technology is progressing so rapidly, while “manufacturing” times are so short. Unfortunately, designing is not necessarily simple and can require a great deal of creative effort. Standard textbook treatments of design usually focus on some tractable subproblems in designing, such as logic minimization or state machine design. Or they attempt to reduce design to a mathematical formulation, in which there is a perfect solution to an idealized problem. To clarify the situation, it may be better not to strive for a definition of design [Bell72], but to make a distinction between design and implementation. Within this view, a design is an abstract collection of connected elements, each of which has a defined performance. Elements may of course be recursively defined and may be assemblies of other elements. This structural view of a design is common to all branches of engineering. In electronics, gate elements are connected by wires; in mechanics, beams are connected by fasteners.

For a design to be realized, however, the abstract elements in its structural definition must be mapped onto physical elements that actually exist in some medium. Once this has been achieved an implementation exists. At this point, it is possible to determine quantitative properties of the design to ascertain its “goodness.” There are some obviously important properties:

Space: How many components, how much board space, and so on? Space is clearly a key determinant of manufacturing cost, along with production volume.

Speed: How fast does it run? There are normally several performance requirements for a design.

Energy and power demand: Working on data generates waste heat which must be removed with a possible impact on the space measures.

Timeliness: Have all of the above been achieved consistent with some time measure such as total time-to-market?

In product development, engineering is the management of time and space.

A diagrammatic form of this view of the world is shown in Figure 1–2. This flowchart clearly separates a technology-independent design phase from a technology-dependent implementation phase. It also suggests an oversimplified view of the world in which a design is implemented in a single FPGA, gate array, cell-based ASIC, and so forth. In real-world implementations, designs are partitioned across a number of parts and a number of levels of physical hierarchy, as shown in Figure 1–3. This figure shows two levels, semiconductor components and printed circuit board assembly. Some products, for example, supercomputers, may be partitioned across as many as eight levels of hierarchy [Bell78].

The simplified view of the process tends to be presented dogmatically, since it provides protection against designs being taken hostage by implementation style, and hence by supplier. But recognizably great designs exhibit a nebulous elegance due to some technology dependence, that is, the engineer has usually exploited some technology-specific feature to meet or exceed required measures in an economic way. This implifies information flow across the interface from implementation to design whether by formal or informal means. It may be in the form of design rules, recommended practice, and so on, but is more likely to consist of knowledge from design experience and practice.

Image

Figure 1–2. Design and implementation.

Image

Figure 1–3. Product implementation.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.221.112.220