A Survey of Co-Design Ideas and Methodologies
A Survey of Co-Design Ideas and Methodologies
A Survey of Co-Design Ideas and Methodologies
G. Bosman
Supervisors:
Dr. Ir. A. M. Bos (Chess-iT)
1 Introduction 1
1.1 Traditional design . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Microprocessors . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 Von Neumann bottleneck . . . . . . . . . . . . . . . . . . 2
1.1.3 Paradigm shift problem . . . . . . . . . . . . . . . . . . . 2
1.2 Other types of hardware . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Application specific integrated circuits . . . . . . . . . . . 2
1.2.2 Programmable logic devices . . . . . . . . . . . . . . . . . 3
1.2.3 New design strategy . . . . . . . . . . . . . . . . . . . . . 3
1.3 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Outline of this thesis . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Background on Co-Design 5
2.1 Co-Design research . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Related work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Related approaches . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Software in the loop . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 Reconfigurable hardware . . . . . . . . . . . . . . . . . . . 6
2.3.3 Adaptive computing . . . . . . . . . . . . . . . . . . . . . 6
2.3.4 Hybrid systems . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Co-Design 8
3.1 Specification and modelling . . . . . . . . . . . . . . . . . . . . . 8
3.2 Modelling approaches . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1 Modelling with a single IDR . . . . . . . . . . . . . . . . . 9
3.2.2 Modelling using multiple IDRs . . . . . . . . . . . . . . . 10
3.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3.1 Hardware/software partitioning . . . . . . . . . . . . . . . 11
3.3.2 Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.4 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.4.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Computational Models 13
4.1 Properties of computational models . . . . . . . . . . . . . . . . . 13
4.1.1 Modelling of time . . . . . . . . . . . . . . . . . . . . . . . 13
4.1.2 Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1.3 Main application . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Example: internal combustion engine . . . . . . . . . . . . . . . . 15
ii
CONTENTS iii
6 Co-Design methodologies 30
6.1 Ptolemy II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.2 COSYMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.3 ForSyDe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.4 Polis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.5 SpecC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.6 SystemC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.6.1 SpecC vs. SystemC . . . . . . . . . . . . . . . . . . . . . 34
6.7 VULCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.8 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7 Conclusions 37
7.1 Internal design representation . . . . . . . . . . . . . . . . . . . . 37
7.2 Co-Design approaches . . . . . . . . . . . . . . . . . . . . . . . . 37
7.3 Future research . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.4 Chess roadmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Bibliography 39
A Vocabulary 46
Chapter 1
Introduction
Designing embedded systems becomes more and more complex due to the in-
creasing size of integrated circuits, increasing software complexity and decreas-
ing time-to-market requirements and product costs. The ongoing increasing
complexity of embedded systems motivates the search for a high-level system
design approach at Chess. High-level system design is currently a major aca-
demic research area world-wide and it is deeply rooted in traditional areas such
as control theory and digital design theory. For Chess such a design approach
could mean a faster and better design process. This paper investigates aspects
of high-level system design and the current state of the art in existing tools and
methods that allow high-level system design. It will provide input for the Chess
design strategy for the following years.
A system design notation should allow reasoning at a high level of abstrac-
tion. However, in order to be useful it should also be able to synthesize hardware
and software. Questions like how to divide the functionality of the system into
hardware and software are a very important aspect of this synthesis. Tradi-
tionally the decision what to implement in hardware and what to implement
in software is made early in the design process. Both parts are then made in
separate tracks by separate design teams. Too often, the validity of this decision
is not validated before system integration. This is far too late with respect to
project risk.
When the emphasis lies on the hardware-software partitioning problem,
system-level design methods are also called “Co-Design” methods. The terms
Co-Design and system-level design are often used interchangeably; in this paper
the term Co-Design will be used.
The goal of Co-Design is to explore the whole design-space to be able to
make well-informed critical design decisions. This would lead to a more optimal
partitioning and more flexibility in the process from design to implementation.
To really understand the improvement that a high-level system design paradigm
makes, it is important to see how traditional system design works and what it
lacks.
1
CHAPTER 1. INTRODUCTION 2
that they are also ‘hardwired’ solutions. It is very expensive to design an ASIC,
and the design is a significantly time-consuming process. Therefore, customizing
an ASIC for a single application is only feasible when the project is reasonably
large. In any case an ASIC can only be produced when the layout is final: it is
not possible to experiment with the layout and try several versions.
Although you’ll loose the optimalizations found in microprocessors there is
a huge potential gain when designing hardware that is parallel in nature. The
layout of the hardware can then be tailored exactly to the functional require-
ments. This can be extremely profitable, especially when the problem to be
solved is mainly parallel in character. ASICs are therefore often used in areas
which are parallel ‘in nature’, such as compression or encryption.
1.3 Assignment
This papers surveys Co-Design ideas and methodologies, and investigates what
direction research in system-level design methods will be concentrated on.
Background on Co-Design
5
CHAPTER 2. BACKGROUND ON CO-DESIGN 6
been developed. This is a device (a printed circuit board) that allows software
testing for onboard software [52].
Within Chess these opportunities have been recognized, and reconfigurable FP-
GAs are used in projects like the Interpay Terminal Application (ITA). This
is a payment terminal, which can be remotely updated by downloading new
software.
The operation of reconfigurable systems can either involve a configuration
phase followed by an execution phase or have concurrent (partial) configuration
and execution [37]. The major problem in this type of systems consists of
identifying the critical segments of the software programs and compiling them
efficiently to run on the programmable hardware. This identification of critical
segments is very related to the partitioning-step of Co-Design methods, which
will be discussed in §3.3.1.
computations and making sure properties are valid throughout the whole design
phase, can also be found in this hybrid system modelling.
Chapter 3
Co-Design
8
CHAPTER 3. CO-DESIGN 9
² ? ¯
Model (IDR)
± °
?
Partitioning
² ¼¯ j
² ¯
SW model HW model
± ° ± °
? ?
SW generation (co)simulation HW synthesis
q)
System
² ¼¯ j
² ¯
SW model (co)simulation HW model
± ° ± °
? ?
SW generation (co)simulation HW synthesis
q)
System
3.3 Implementation
The model found in the modelling phase has to be implemented into hardware
and software. An important notion in Co-Design approaches is that there must
not be a continuity problem. That is: the steps from model to the synthesis
should all be in the design process [47].
In the implementation phase architectural information is taken into account.
Varea [53] calls this a merger between the IDR and the technology library. It
is important that the intermediate IDR or specification is not too strongly in-
fluenced by the current target technology. Steps in the implementation phase
include:
1. hardware/software partitioning;
3.3.2 Synthesis
On the lowest level, FPGAs can be used to implement (small) microprocessors,
datapaths and nearly any digital circuit. The outcome of the synthesis process is
a final implementation of the embedded system. As an extra validation step the
result of the implementation is often checked by first creating a small amount
of prototypes.
3.4 Validation
The validation process in a design model should give the designer a reasonable
level of confidence about how much of the original embedded system design
will be in fact reflected in the final implementation [53]. A lot of research has
CHAPTER 3. CO-DESIGN 12
3.4.1 Conclusion
The discussion of homogeneous vs. heterogeneous modelling and about parti-
tioning of an initial model into hardware and software parts is related to the
paradigm shift problem discussed in §1.1.3. Both the heterogenous and ho-
mogenous modelling approach implicitly acknowledge that different parts of the
system should be treated differently in respect to modelling.
Both types of approaches take into account that a system will ultimately
consists of hardware and software, but they differ in the way they try to solve
the paradigm shift problem. In heterogenous methods the partitioning in hard-
ware and software parts is manually done when constructing the initial models.
This early decision allows the use of a specialized IDR for hardware parts, in
which hardware algorithms can easily be modelled, and a separate IDR for soft-
ware parts. In contrast, in homogenous approaches the partitioning step is an
explicit part of the design process. This means that an IDR must be used that
would support both the modelling of hardware- and software-like algorithms
and computations.
The following chapter will expand on the differences between IDRs and their
different applications in Co-Design.
Chapter 4
Computational Models
Modelling is at the heart of all development methods. All Co-Design systems are
based on a computational model, or combine a few of them. The computational
models can be found in the Internal Design Representation.
A computational model is a formal, abstract definition of a computer. It
describes the components in a system and how they communicate and exe-
cute [34]. In this chapter common computational models are described and
compared. This type of overview can never be complete. Many variants of the
selected Computational Models exists, and there is a lot of research into new
computational models.
This chapter ends with a matrix that compares the discussed models.
13
CHAPTER 4. COMPUTATIONAL MODELS 14
Synchrony hypothesis
A very useful abstraction when dealing with time is assuming synchroneous op-
erations. The synchrony hypothesis forms the base for the family of synchronous
languages. It assumes, that the outputs of a system are synchronized with the
system inputs, while the reaction of the system takes no observable time. In
this manner time is abstracted away. The synchrony hypothesis serves as a base
of a mathematical formalism.
In these synchronous languages, every signal is accompanied by a clock sig-
nal. The clock signal has a meaning relative to other clock signals and thus
defines the global ordering of events. When comparing two signals, the associ-
ated clock signals indicate which events are simultaneous and which precede or
follow others. A clock calculus allows a compiler to reason about these ordering
relationships [7].
Whether or not a language is synchronous has quite big implications. It is
therefore added in the matrix at the end of this chapter.
4.1.2 Orientation
A commonly used taxonomy by Gajski distinguises five categories of models of
specification [17]:
• State-oriented
• Activity-oriented
• Structural-oriented
• Data-oriented
• Heterogeneous
These categories reflect the distinct perspectives that one can have of a system,
namely its control sequence, its functionality, its structure and the data that it
manipulates [2].
This taxonomy is useful as it gives an indication of the application area of a
computational model. Gajski’s taxonomy has been critized by Jerraya et al. as
being to much focussed on specification style and not enough on the true nature
of the MoC [21].
Structural and data-oriented models of specification are not used to specify
models of computations. In this paper a distinction will be made between state-
oriented and activity-oriented specifications. Gajski did not classify all models
discussed here in his paper. In addition it is therefore necessary to recognize a
third category for models that are neither state- nor activity-based, but have
an emphasis on different notion of time. These will be called time-oriented.
dynamics for the engine in each of the phases. While all the mechanical parts
interact in a continuous-time style, the embedded controller – which may be
implemented by some hardware and software – works discretely.
Additionally, sensor information and driver’s demands may arrive through
some kind of network. The controller receives this information, computers the
control law, controls the air and fuel values, and produces spark signals, dis-
cretely. So, we want to use a model that is suitable for handling discrete events
for the network and the controller.
In this very common example, we have seen both continuous-time models
and several discrete models: finite state-machines, discrete events, and real-
time scheduling. These models, and other, will be described in the rest of this
chapter.
Figure 4.2: Forces on a car shock absorber that result in a differential equation
relationship between road height signal u(t) and the car height signal y(t) [40].
In our car controller example of Chapter 4.2 the mechanical behavior of the
engine and the car body are good candidates of components that can well be
described using differential equations. Mechanical systems are often described
CHAPTER 4. COMPUTATIONAL MODELS 17
of states, a set of inputs, a set of outputs, a function which defines the outputs Time Events
with time-
in terms of input and states and a next-state function. [9]. stamp
FSMs model systems where the system at any given point in time can exist Orientation State
in one of finitely many unique states. This makes them excellent for control Synchronous? No
logic in embedded systems. They can very well be formally analyzed and it is Main app. Control-
parts
relatively straightforward to synthesis code from this model [28].
FSM can be visualized very well using a state transition graph (see Figure
4.3.4). FSM have a number of weaknesses. They are not very expressive, and the
number of states can get very large even in the face of only modest complexity. Is
intended for control-oriented systems with relatively low algorithmic complexity.
p
Figure 4.5: A dataflow graph for (a ∗ b) + (c/d) − (e mod f ).
Time No explicit
4.3.6 Data Flow timing
Orientation Activity
Data flows are a common representation formalism for modeling algorithms, Synchronous? No (ADF)
often dealing with signal processing. Data flow can been seen as a special case Main app. Digital
signal
of Kahn process networks. There are many different variants of dataflows, an
processing
overview of which can be found in a paper by Lee [30]. Specifically there can
be made a distinction between synchronous and asynchronous data flow models Time No explicit
timing
(SDF and ADF). Orientation Activity
Synchronous? Yes (SDF)
Main app. Digital
signal
processing
CHAPTER 4. COMPUTATIONAL MODELS 20
Figure 4.6: Petri net representing: (a) sequential order, (b) branching, (c) syn-
chronization, (d) resource contention and (e) concurrency [17].
Time No explicit
4.3.9 Synchronous/Reactive timing
Orientation Timed
In synchronous languages, modules simultaneously react to a set of input events Synchronous? Yes
and instantaneously produce output events. If cyclic dependencies are allowed, Main app. Reactive
then execution involves finding a fixed point, or a consistent value for all events real-time
at a given time instant [7].
Very often real-time systems are specified by means of concurrent processes,
which communicate asynchronously [45].
4.4 Comparison
Three important characteristics have been described in Table 4.4. It shows
that there are a number of computational models suitable for digital signal
processing (the dataflow and process networks). Others are suitable mainly for
control-oriented work (CFSM, synchronous/reactive). This indicates that for a
real system various MoCs are necessary. Experience also suggest that several
MoCs are required for the design of a complete system [7].
Next to the computational models discussed in this chapter, there is a lot of
research into new Internal Design Representations, such as Dual Flow Nets and
FunState. These are still experimental, and there are no methodologies using
these IDRs.
The formal computational models are not the only way a model can be spec-
ified; some design methods use the syntax graph of an imperative programming
language as their IDR.
Because of the very different notions of time in the various MoCs, ranging
from continuous time to no time-notion at all, integrating them is by no means
CHAPTER 4. COMPUTATIONAL MODELS 22
trivial. This is one of the problems Co-Design approaches must solve before
being usable in system-design. In the next chapter various problems will be
analyzed.
CHAPTER 4. COMPUTATIONAL MODELS 23
a
The Codesign Finite State Machine is chosen as a representative because the
basic FSM is not sophisticated enough to be used as a Model of Computation
(see §4.3.4).
Chapter 5
Requirements for
Co-Design methodologies
In this chapter requirements for usable Co-Design methods are discussed. The
result of this Chapter is a list of requirements and important aspects of Co-
Design methodologies.
The main difference in the two approaches is that the co-simulation approach
allows for more MoCs in a methodology and are better capable of working with
optionally new developed MoCs. The other option promises a closer integration.
This relates to the conventional wisdom that high performance while minimizing
resources needed (or time needed) can be obtained by matching the architecture
to the algorithm [39].
24
CHAPTER 5. REQUIREMENTS FOR CO-DESIGN METHODOLOGIES 25
5.5.2 Hierarchy
Brute-force composition of heterogeneous models could cause emergent behav-
ior. Model behavior is emergent if it is caused by the interaction between
characteristics of different formal models and was not intended by the model
designer [14].
A common way to prevent unwanted emergent behavior is isolating various
subcomponents and letting these subcomponents work together in a hierarchical
way. Hierarchical in the sense of a containment relation, where an aggregation
of components can be treated as a (composite) component at a higher level.
In general, hierarchies help manage the complexity of a model by information
hiding — to make the aggregation details invisible from the outside and thus a
model can be more modularized and understandable [32]. This is about behav-
ioral hierarchy, composition of child behaviors in time, as opposed to structural
hierarchy.
In the Ptolemy project a lot of research has gone into this type of behavioral
composition. Chang et al. wrote a paper on mixing two models of computations
(discrete event and dataflow) using Ptolemy. They state:
5.5.3 Implementation
A discrete-event model of computation is well suited for generating hardware.
It is not very suitable to generate (sequential) software [7]. This is for example
why VHDL simulation surprises the designer by taking so long. A model that
heavily uses entities communicating through signals will burden the discrete-
event scheduler and slow down the simulation. Thus, a specification built on
discrete-event semantics is a poor match for implementation in software.
By contrast, VHDL that is written as sequential code runs relatively quickly
but may not translate well into hardware. The same goes for C: it runs very
quickly and is well suited for software, but not for specifying hardware.
Dataflow and finite-state models of computation have been shown to be
reasonably re-targettable. Hierarchical FSMs such as StateCharts can be used
effectively to design hardware or software. It has also been shown that a single
dataflow specification can be partitioned for combined hardware and software
implementation.’ [7]
What phases of
the development
process are
5.6 Conclusion supported in the
approach?
These aspects will be taking into account in the next chapter, where a number
of Co-Design methodologies will be analyzed.
Chapter 6
Co-Design methodologies
6.1 Ptolemy II
The Ptolemy project studies heterogeneous modelling, simulation and design of
concurrent systems, where the focus is on embedded systems.[12].
The primary investigator of the Ptolemy project is Edward A. Lee. In 1991
he presented a paper that described the Ptolemy system[5]. This system has
been in use for many years, and it’s now succeeded by a new version, Ptolemy
II.
The Ptolemy II software environment provides support for hierarchically
combining a large variety of models of computation and allows hierarchical nest-
ing of models[14]. It combines the wish for a homogeneous and thus predictable
model with the desire to mix partial models of different kinds in a common het-
erogeneous model by hierarchically nesting sub-models of potentially different
kinds.
A very good description of how this hierarchical mixed approach works in
practice can be found in [34].
Ptolemy II is a component-based design methodology. The components in
the model are called actors. A model is a hierarchial composition of actors. The
atomic actors, such as A1, only appear at the bottom of the hierarchy. Actors
that contain other actors, such as A2, are composite. A composite actor can be
contained by another composite actor.
Atomic actors contain basic computation, from as simple as an AND gate to
more complex as an FFT. Through composition, actors that perform even more
complex functions can be built. Actors have ports, which are their communi-
cation interfaces. For example in Figure 6.1, A5 receives data from input ports
P3 and P4, performs its computation, and sends the result to output port P5.
A port can be both an input and an output. Communication channels among
actors are established by connecting ports.
The possibility to have various MoC’s can be found in the director. A direc-
tor controls the execution order of the actors in a composite, and mediates their
30
CHAPTER 6. CO-DESIGN METHODOLOGIES 31
6.2 COSYMA
An older design method is COSYMA, “CoSynthesis for Embedded Architec-
tures”. It was developed at the IDA, Germany. It covers the entire design flow
from specification to synthesis. The target architecture consists of a standard
RISC processor, a fast RAM for program and data with single clock cycle access
time and an automatically generated application specific co-processors. Com-
munication between processors and co-processor takes place through shared
memory. The goal of Cosyma is basically speeding up existing programs by
replacing parts in hardware[41].
The system is designed in Cx . This is a C-extension with support for parallel
processes and timing constraints. The Cx specification is then converted into
an Extended Syntax Graph (ESG), the IDR. This is similar to a CDFG. The
CHAPTER 6. CO-DESIGN METHODOLOGIES 32
6.3 ForSyDe
ForSyDe is a model based on the synchronous-assumption (see Chapter 4.3.9).
It has been developed by Sander and Jantsch[44, 45].
In their model events are totally-ordered by their tags. Every signal has the
same set of tags. Events with the same tag are processed synchronously. There
is a special value ⊥ (“bottom”) to indicate the absence of an event. These are
necessary to establish a total ordering among events. A system is modelled by
means of concurrent processes, which are Haskell functions or ‘skeletons’.
Fundamental to the approach is the transformation process. The specifica-
tion of the system is done in Haskell, and an iterative process of rewriting the
specifications goes on until the requirements are met. ForSyDe does not allow
for architectures do be described in the method, as such it does not support
design space exploration directly.
Lu[35] shows how to transform a system specification described in ForSyDe
into its hardware and software counterparts. He does not provide a mixed
implementation of HW and SW. [Guus: why not per module possible to make
this decision?]
The hardware version of the Digital Equalizer that Lu makes is described
using behavioral VHDL. The process are described using skeletons and these
are then synthesized to VHDL code. The process described is manual. The
Haskell code turns into behavioral VHDL quite easily. To generate (naturally
sequential) C code an analysis phase is done to create a PASS.
IP reuse has not been specifically addressed.
6.4 Polis
The Polis research project started in 1988 by the UC Berkeley. It is a design
environment for control-dominated embedded systems. It supports designers
in the partitioning of a design and in the selection of a micro-controller and
peripherals.
The system specification language is Esterel, but a graphical specification
can also be given.
The generated software part consists of:
1. the application that has been modelled in CFSMs
CHAPTER 6. CO-DESIGN METHODOLOGIES 33
6.5 SpecC
SpecC is a new language based on the C programming language. SpecC in-
cludes a methodology for system design, that allows a systematic design space
exploration, called specify-explore-refine[16]. This methodology does not tend
to support complex target platform[55].
The IDR used in SpecC, the SpecC Internal Representation (SIR) is similar
to ones used in software compilers, essentially a syntax graph.
6.6 SystemC
The SystemC language is a C++ language subset for specifying and simulating
synchronous digital hardware. It’s based on a class library of C++; it’s not a
new language by itself. It’s a initiative by a group of vendors and embedded
software companies to create a common (open source) standard.
In SystemC a complete system description consists of multiple concurrent
processes. The system can be specified at various levels of abstraction (behav-
ioral hierarchy).
SystemC is a language, and doesn’t have a complete methodology for system-
level design[55].
CHAPTER 6. CO-DESIGN METHODOLOGIES 34
6.7 VULCAN
At the Stanford University the VULCAN system has been developed. The
specification language used is called HardwareC. Although its syntax is C-like
its semantics are that of a Hardware Design Language; thus rather low-level.
Initially, a system will be specified as a complete hardware solution (in Hard-
wareC). When the timing and resource constraints are specified, an iterative
automatic partitioning approach will be started. The basic idea of VULCAN
is to move suitable parts of the system to software (that will then be run on a
general purpose processor), thus making the dedicated hardware part smaller
in each iteration. This all under the given performance constraints. The main
purpose of this is cost reduction.
Internally Vulcan used a Flow Graph as its IDR. The design process Vul-
can offers is complete: its support specification, (automatic) partitioning and
synthesis of both software and hardware components. The ‘price’ paid in this
approach is that the specification level is low.
6.8 Comparison
Some approaches don’t try to incorporate many different models of computa-
tions. Polis for example is targetted towards control-oriented systems. It allows
for a complete design process from high-level model to implementation. Because
the computational model used in Polis is partly based on FSMs, the according
state-space explosion causes the Polis approach to be only suitable for smaller
systems.
Not all approaches described here are ‘industry-ready’. There is a lot of
research going on into new internal representation languages (such as ForSyDe).
This shows that many researchers believe the current IDRs are not rich enough.
A rough classification can be made of the direction research into IDRs is going:
• FSM based approaches (such as Polis)
low: they are both extensions of existing processes. Vulcan from a hardware
side, Cosyma from a software side.
SystemC and Specc also have a lower level of abstraction than for example
Polis offers. An important difference is that they do take IP integration into
account. It can be said that there are 2 ways to improve productivity: improving
the design process, and reusing more IP[41]. SystemC is less complete in its
methodology, but IP reuse has been an important feature. The same goes for
SpecC, but SpecC’s design methodology is much more mature. At the same
time there are languages that have a complete methodology, such as COSYMA
and Vulcan, but do not take IP reuse into account.
A recent trend in system design is platform based design, in which IP reuse
takes a prominent place. Most of the methods here can be described as top-down
methods, using a specification and than refining it. Platform based design works
more ad hoc: existing components are ‘glued’ together. Extensions to Polis that
take IP reuse into account [36] make it possible to use the best of two worlds.
A commercial tools based on Polis that also deals with IP reuse is VCC, from
Cadence.
It is clear that the choice of IDR is fundamental to a Co-Design methodol-
ogy. Using a mathematically strong IDR such as CSFM, allow POLIS to reach
a high level of abstraction and allow design-space exploration, with a broad
variety of target architectures. SpecC and SystemC, using a more pragmatic
IDRs based on syntax graphs (with extensions), also allow synthesis to many
target architectures, while supporting IP reuse. However, they pay a ‘price’ in
abstraction level, and the partitioning is not automated. Two other languages
based on similar IDR, COSYMA and Vulcan, do allow automatic partitioning,
but only for a very limited type of architecture. Their representation languages
(Cx and HardwareC respectively) are on a low level of abstraction.
Table 6.2: Questions from Chapter 5.
a
36
In Polis itself this has not specifically been addressed, but there are extensions[36] that take IP reuse into account. Also in tools based
on Polis such as VCC it can be found.
b
The design-space exploration of SpecC is less strong than a real Y-chart approach[55]
c
No complete synthesis-trajectory exists for stand-alone Ptolemy, only for specific MoC’s.
d
Ptolemy can certainly be used together with other tools that support IP reuse specifically, such as in [36].
e
Using ForSyDe either sequential C code for a processor can be generated, or (behavioral) VHDL to synthesize hardware.
Chapter 7
Conclusions
37
CHAPTER 7. CONCLUSIONS 38
are very good integrated tools and frameworks that allow working with both
parts of the system in a systematic way. In such a system a simulation-tool like
Ptolemy can be valuable as it allows co-simulation between the various software
and hardware components.
Ptolemy II seems to be a very mature tool, specifically the theoretical foun-
dation of mixing various computational models is well thought-out. However,
it is mainly focussed towards simulation, while true software and hardware-
synthesis is not sufficiently supported. This can still be a valuable addition to
existing design processes: the co-simulation made possible by Ptolemy can be
used much earlier in the design process than with existing approaches. Problems
can therefore be acknowledged at an earlier stage.
The homogeneous Co-Design approach, where the partitioning decision will
be supported by the method itself, as opposite to requiring the user to specify
this in front, is very attractive. However, there are no real tools that support
this completely. In this context Kienhuis [25] speaks about the refinement ap-
proach. He says: “the refinement approach has proven to be very effective for
implementing a single algorithm into hardware. The approach is, however, less
effective for a set of applications. In general, the refinement approach lacks the
ability to deal effectively with making trade-offs in favor of the set of applica-
tions”. It can therefore be concluded that an integral Co-Design approach is
possible for some specific algorithms or small applications, but not (yet) for a
broad range of applications.
40
BIBLIOGRAPHY 41
[34] X. Liu, J. Liu, J. Eker, and E. A. Lee. Heterogeneous modeling and design
of control systems. Software-Enabled Control: Information Technology for
Dynamical Systems, 2002. To appear.
[35] Z. Lu. Refinement of a system specification for a digital equalizer into HW
and SW implementations. January, Royal Institute of Technology, 2002.
[36] M. Meerwein, C. Baumgartner, and W. Glauert. Linking codesign and reuse
in embedded systems design. In Proceedings of the eighth international
workshop on Hardware/software codesign, pages 93–97. ACM Press, 2000.
[37] G. D. Micheli and R. K. Gupta. Hardware/software co-design. In Proceed-
ings of the IEEE, volume 85, pages 349–365, Mar. 1997.
[38] V. J. Mooney III and G. De Micheli. Real time analysis and priority sched-
uler generation for hardware-software systems with a synthesized run-time
system. In Proceedings of the 1997 IEEE/ACM international conference
on Computer-aided design, pages 605–612. IEEE Computer Society, 1997.
[39] S. Neema. System-level synthesis of adaptive computing systems, Mar.
2000.
[40] B. Ninness. Fundamentals of Signals, Systems and Filtering. –, 2002. To
appear.
BIBLIOGRAPHY 43
[52] J. van der Wateren and A. M. Bos. Real-time software testing throughout
a projects life cycle using simulated hardware. In Proceedings of the 5th
International Workshop on Simulation for European Space Programmes,
Nov. 1998.
[53] M. Varea. Mixed control/data-flow representation for modelling and verifi-
cation of embedded systems. Technical report, University of Southampton,
Mar. 2002.
[54] Various. VSI alliance deliverables document. Technical report, VSI Al-
liance, 1999.
BIBLIOGRAPHY 44
45
Appendix A
Vocabulary
46