The microelectronics industry is build upon Moore's Law, which changes many aspects of
the design of an electronic system at an exponential rate. As such, it has proved
impossible for any single approach to the design of single-chip electronic systems to last
more than about a decade without requiring a significant change in the way we construct
and verify such systems. In 1971, the invention of the microprocessor was one such change.
In the early 1980's, the use of regular layout structures and the adoption of physical
synthesis (the birth of the ASIC industry) was a major change and in the late 1980's the
widespread adoption of logic synthesis fundamentally changed the way in which most
designers approached their task.
We need another major change if we are to achieve the full potential of tomorrow's
silicon--in fact we are already late!
One of the key ideas both industry and academia is exploring in this direction is that
of design re-use. If over than 90% of a design involves the reuse of pre-existing
components, then we have increased design productivity by at least order of magnitude. But
what does it mean to actually re-use a design?
To begin with, we need a way of capturing, encapsulating and abstracting design
components such that there is a significant advantage in the re-use of an existing design.
How do we abstract such a component for use in other contexts and preserve as much of the
work we have already done in optimizing, verifying, and testing the component? At what
levels should we capture the component design and why?
These are a few of the questions we wish to address this Spring semester in our
seminar, oriented towards the understanding of what a useful component-based methodology
should look like and how to implement it efficiently. The goal is not as much to solve the
problem, but to formulate it and identify the key open research issues that need to be
addressed.
To that end, we plan to tackle the problem by taking one or more real designs developed
here at Berkeley and revisiting them in the context of a component-based approach.
The course will be organized around the three major emphases of component-based design,
implementation(hard, firm, and soft), and component-based verification. We
will emphasize both the software and hardware aspects of implementation, and their
tradeoffs. In many areas, we will invite guest lecturers to present the state-of-the-art
and help us sort through the issues. Some of the topics we will be covering include:
We will begin by introducing the notion of component-based design and by defining a
number of the key concepts. We will review an existing design with a view to understanding
the types of components used and their interactions. We will explore the issues of
function, architecture, and microarchitecture in a component-based approach.
Introduction to levels of abstraction and representations of systems.
Parameterization of components in design.
Encapsulation of behaviors and specification of interfaces
Aspects of the interaction among heterogeneous components
- Implementation Issues for Components
What are the tradeoffs: Hard versus firm versus soft components.
What is most likely to be the dominant component paradigm—soft, firm or hard?
What are the advantages and disadvantages of an RTL-std cell implementation flow versus a
schematic-std cell path? How about compared to a custom design or "compiled"
design?
- Verification of Parameterizable IP
How can we do it and how can we do it efficiently?
How does Design for Verifiability play a role and what are the tradeoffs here?
Verification of IP interfaces
- Software compilation for Parameterizable Processors
ISA extension identification
Automatic compiler generation from ISA’s
Simulator generation
- Important Classifications of Component Implementation Styles
Memory
Regular structures
Microcontrollers
DSPs
What are the parameters that characterize IP
What is the quantum for a block of circuitry to be called a "component"?
- Business issues and legal issues