An Overview of Embedded System Design Education at Berkeley
An Overview of Embedded System Design Education at Berkeley
Education at Berkeley
ALBERTO L. SANGIOVANNI-VINCENTELLI and ALESSANDRO PINTO
University of California, Berkeley
Embedded systems have been a traditional area of strength in the research agenda of the Univer-
sity of California at Berkeley. In parallel to this effort, a pattern of graduate and undergraduate
classes has emerged that is the result of a distillation process of the research results. In this paper,
we present the considerations that are driving our curriculum development and we review our un-
dergraduate and graduate program. In particular, we describe in detail a graduate class (EECS249:
Design of Embedded Systems: Modeling, Validation and Synthesis) that has been taught for six
years. A common feature of our education agenda is the search for fundamentals of embedded
system science rather than embedded system design techniques, an approach that today is rather
unique.
Categories and Subject Descriptors: K.3.2 [Computers and Education]: Computer and Informa-
tion Science Education—Curriculum
General Terms: Design, Standardization, Theory, Verification
Additional Key Words and Phrases: Graduate and undergraduate education, embedded systems,
embedded software, functional design, architectural design, sourcework
1. INTRODUCTION
Embedded systems have been a strong research area for the University of
California at Berkeley. We will briefly review this intense research activity
as a preamble to present the Berkeley effort in embedded system education
that is intimately related to the research program.
The research activities on embedded systems at Berkeley can be cast in a
matrix organization (see Figure 1) where vertical research areas cover applica-
tion domains, such as automotive, avionics, energy, and industrial control; hor-
izontal areas cover enabling technologies such as Integrated Circuits, Sensors,
Wireless Networks, Operating Systems, Embedded Software, Automatic Con-
trol, Design Methodologies, and Tools. The important aspect of our approach is
ACM Transactions on Embedded Computing Systems, Vol. 4, No. 3, August 2005, Pages 472–499.
Embedded System Design Education at Berkeley • 473
that the enabling technologies, are explicitly linked to the vertical application
areas and are geared toward the embedded system domain.
At Berkeley, we have traditionally based our research programs on a strong
interaction with industry and collaboration among faculty in different disci-
plines; embedded system research is no exception.
Among embedded system application domains, automotive has been an area
of interest for many years. The PATH project [PATH ] of CALTRANS (California
Transportation Department) has been a test bed to develop new concepts in
control of distributed systems, modeling, tools, and methodologies with a strong
experimental part and an intense interaction with industry. The automotive
emphasis of our design methodology work dates back to 1988 when a joint
program on formal approaches to embedded controller design with Magneti
Marelli for their Formula one robotized gear shift for Ferrari began. In the
automotive domain, there has also been strong interdepartmental interaction
between mechanical engineering and electrical engineering/computer science.
In U.S. universities, bottom-up aggregation of interests and approaches to ed-
ucation is more common than top-down planning. Hence, education initiatives
in novel areas almost always begin with advanced graduate course offerings
to migrate toward coordinated graduate programs and eventually into under-
graduate courses. Thus, it is no wonder that course offering in Berkeley on
embedded systems has been strong for years in the advanced course series (the
EE and CS 290 series) that are related to faculty research activities. One such
course has migrated to a regular offering in the graduate program—(EECS249:
Embedded System Design: Modeling, Analysis and Synthesis)—the main topic
of this paper.
The guiding principle in our teaching and research agenda related to embed-
ded systems is to bring closer together system theory and computer science. The
ACM Transactions on Embedded Computing Systems, Vol. 4, No. 3, August 2005.
474 • A. L. Sangiovanni-Vincentelli and A. Pinto
two fields have drifted apart for years while we believe that the core of embed-
ded systems intended as an engineering discipline lies in the marriage of the
two approaches. While computer science traditionally deals with abstractions
where the physical world has been carefully and artfully hidden to facilitate
the development of application software, system theory deals with the physical
foundations of engineering where quantities such as time, power, and size play
a fundamental role in the models upon which this theory is based. The issue
then is how to harmonize the physical view of systems with the abstractions
that have been so useful in developing the CS intellectual agenda. We argue
that a novel system theory is needed that, at the same, time is computational
and physical. The basis of this theory cannot be but a set of novel abstractions
that partially expose the physical reality to the higher levels and methods to
manipulate the abstractions and link them in a coherent whole. The research
community is indeed developing some of the necessary results to build this
novel system theory. We believe it is time to inject these findings in the teach-
ing infrastructure so that students can be exposed to this new way of thinking
that should advance the state of embedded system design to a point where reli-
able and secure distributed systems can be designed quickly, inexpensively and
error free.
The paper presents the guiding principles we have followed in our education
effort and the set of courses offered that have direct relevance to the field of
embedded system design. We list only the courses whose embedded system
content is explicitly addressed. Otherwise, we may end up with a comprehensive
list of all courses offered in engineering (except maybe a few) as today electronic
system design is almost a synonym with embedded system design. In particular,
we present first (Section 2) the graduate program: we zoom in on EECS249 and
then we briefly review a set of advanced topical courses on embedded systems.
In Section 3, we present an overview of our undergraduate program centered
on a sophomore core course1 (EECS20N [Lee 2000; Lee and Varaiya 2000]) that
has been now offered over the past 5 years. This course for EE and CS students
addresses mathematical modeling of signals and systems from a computational
perspective. This reflects an effort of Berkeley faculty to set new foundations
for the education in electrical engineering that is based on fundamentals rather
than application domains. In this section, we also offer a view on our programs
for the near future to address specifically embedded systems at the junior and
senior level. In Section 4, we offer concluding remarks that could be of use for
setting up a graduate or advanced undergraduate class in embedded system
design in other institutions.
The idea of the course is to emphasize the commonality among the variety
of application fields and to use a design methodology as the unified frame-
work where the topics of the course are embedded. In this way, the variety
of the advanced courses offered in our curriculum benefits from the founda-
tions laid out by EECS249. The course is rather unique as it aims at bringing
together the behavioral aspects of embedded system design with implemen-
tation within a rigorous as possible mathematical framework. Behavior cap-
ture, verification, and transformation are taught using the concepts pioneered
by Edward Lee associated to models of computation. The implementation de-
sign is seen as a companion to the behavioral design as opposed to a more
traditional academic view where implementation follows in a top-down fash-
ion behavioral design. We adopt the view presented in Sangiovanni-Vincentelli
2002 and Sangiovanni-Vincentelli et al. 2004 to provide the intellectual back-
ground. In this methodology, the design proceeds by refinement steps where
the mapping of behavior into “architecture” is the step to move to the next
level of abstraction. Using this view, embedded software design is the process
of mapping a particular behavior on a computing platform. By the same token,
the choice of a particular distributed architecture due to geographical distribu-
tion or to performance optimization is handled in a unified way. The choice of
components including reconfigurable and programmable parts is the result of
architectural space exploration where cost functions and constraints guide the
search.
From this brief overview, it should be clear that our motivation is to bring
out the fundamental issues and the formalization that enables verification and
synthesis at a level that would not be otherwise possible. This particular aspect
should be seen as the quest for a new system science that serves as a framework
to teach design that transcends the traditional discipline boundaries.
Given the large scope of the course, it has a heavy load; four contact hours
and two lab hours per week. The contact hours are broken into traditional
lectures and discussion of papers presented by the students. The verification of
the learning process is left to weekly homework that are a mix of exercises and
of theory, and to a final project that is fairly advanced, so much so that often the
project reports see the light in the community as conference or journal papers.
The contents and the organization of the class has been the result of a number
of advanced courses in hybrid systems and system level design that date back
to 1991, when the first such class was taught.
1. After a presentation of the motivation for the class extracted from a variety
of examples in different industrial domains, we introduce the methodology
followed (Platform-Based Design [Sangiovanni-Vincentelli 2002]) and exam-
ples of its applications.
2. The notion of behavior is analyzed and the role of nondeterminism in spec-
ification is explained. We present the basic models of computation that are
needed to represent the behavior of most designs: Finite-State Machines,
Synchronous Languages, Data Flow Networks, Petri Nets, Discrete Event
Systems and Hybrid Systems. We outline the use of a unified framework to
compare the different models of computation and we present the Tagged-
Signal Model (TSM) [Lee and Sangiovanni-Vincentelli 1998] as a unifying
theory to allow the composition of different models of computation to de-
scribe a complete system. We introduce here the Ptolemy [PtolemyII] and
Metropolis [Balarin et al. 2003] environments for analysis and simulation
of heterogeneous specifications.
3. We then introduce the notion of architecture as a set of components (in-
terconnections for communication and building blocks that are capable of
carrying out computation) that are providing services to the behavior that
we wish to implement. Optimal architecture choice is presented as the se-
lection of a particular set of computational blocks in a library of available
components and of their interconnection. The evaluation of the quality of a
selected architecture is based on a mapping process of behavior to the com-
putation blocks, including programmable components. The mapping process
should be accompanied by an estimate of the performance of the design once
mapped onto the architecture. Communication representation is illustrated.
The representation of architectures in the Metropolis and Mescal [Mescal]
environments are presented.
4. Embedded software design is considered as part of the mapping process. In
this context, we review the approaches followed to estimate physical quanti-
ties such as time and power for embedded software. We present scheduling
as a way of mapping concurrent processes in a resource limited architecture
and we address the characteristics of real-time operating systems. We review
code generation techniques used in widely used industrial tools such as Real
Time Workshop and Target Link. We present software synthesis approaches
that exploit the mathematical properties of the design. We also address the
problem of synthesizing communication structures given the system level
requirements. The different coordination policies used at different levels of
abstraction are introduced with particular emphasis on the desynchroniza-
tion paradigm where a synchronous specification is mapped onto an asyn-
chronous implementation that is guaranteed functionally equivalent to the
specification.
Since we believe that design methods without applications are easily forgot-
ten and not well assimilated, application examples are drawn from the multi-
media and the automotive industrial sectors.
ACM Transactions on Embedded Computing Systems, Vol. 4, No. 3, August 2005.
Embedded System Design Education at Berkeley • 477
Labs. The two tools presented in the lab sessions are the Virtual Compo-
nent Co-design (VCC) from Cadence and Metropolis. In the approach followed
by VCC, mapping is the assignment of pieces of functions to architectural com-
ponents. In the Metropolis framework, mapping is implemented as intersection
of the function and architecture execution in a common domain, which serves
as common refinement.
Discussions. Most of the papers that we discuss in this part of the course
are about synthesis. Students are exposed to recent approaches to software
synthesis and the difference between synthesis and compilation. We start with
a discussion on the Polis approach to software synthesis emphasizing why it is
suitable for control applications and not for signal processing. In the discussion,
we emphasize what are the implications of having a formal model (CFSM) of
computation on the solution of the synthesis problem.
Then we move from the control domain to the synthesis of software for digital
signal processing applications. The synthesis algorithm starts from a dataflow
model and generates code that can be optimized for a specific processor. We
highlight the difference between control and digital signal processing applica-
tions: the description that we start from has different assumptions (different
models of computations) and also the target platforms are different.
Labs. We present two industrial tools for automatic code generation: the
real-time workshop (RTW) [Mathworks] by Mathworks and Targetlink [dSpace]
by dSPACE.
One lab presents the xGiotto [Giotto] approach to software synthesis and
verification. xGiotto starts from the description of a program in a language
with a formal semantics and is able to perform analysis like schedulability
and race condition detection. Once a program has been verified, code can be
automatically generated for a target platform.
2.8 Projects
The course is graded on the basis of a set of homework and on a final project.
After the first week of class, a list of project proposals is given to the students.
We rely on a group of highly qualified mentors from industry and academia that
help the students in reviewing previous work and conducting the research to
complete their projects on time. We push students to start as early as possible
and we motivate them by mentioning the possibility of submitting for the best
reports for publication.
Table II gives an idea of the projects that have been carried out since 1998.
Following the course organization, the table is divided in projects that are re-
lated to functional description, architectural description, and mapping. We also
added two columns for projects that cross all of the three main sections of the
course: case studies and design methodologies.
The choices of students are often concentrated on the definition of formal
models for describing a function and on the development of algorithms for
verification and synthesis. The case studies were mainly developed by stu-
dents coming from departments other than EECS that are interested in study-
ing how the methodology can be applied to solve specific design problems.
Given the shortness of available time, it is not possible, in general, for stu-
dents to develop and show the effectiveness of a complete design methodol-
ogy for a specific application domain. This is the reason why these kind of
projects are rarely taken even though a couple were chosen and had worthwhile
results.
Few projects were given on architecture. This situation reflects the status
of our research in the field that only recently has taken an important turn,
determined by the extensive introduction of the use of the MMM and of the
characterization work carried out in conjunction with the Xilinx project. We
expect that more projects on this subject will be proposed in the future, par-
ticularly in the area of syntax and semantics of languages for architectural
description and automatic verification and refinement tools for architectures.
ACM Transactions on Embedded Computing Systems, Vol. 4, No. 3, August 2005.
Embedded System Design Education at Berkeley • 485
year and can be taken by students multiple times. In general, they are taken by
PhD students who are interested in research topics in the area covered by the
course. Regular graduate courses are often derived from the advanced series
after the content has stabilized and there is enough interest from the student
population. Since embedded systems are so important in our research agenda,
there are several advanced courses that have a direct relationship with the
topics of this paper. These courses are labeled EE290 and CS294 followed by a
letter indicating the area these courses belong to.
In Figure 2, we show a the backbone of a graduate program in embedded
systems that traverses the courses presented in this paper. A well thought out
course program in embedded systems should include domain-specific courses
that provide the reference framework for the students to be productive in the
outside world.
analysis of the first 5 weeks of EECS249. It has been taught four different
times with contents that are converging to a unified view so that there is a plan
of making it a regular graduate course. Abstract semantics, concrete semantics,
and implementation of some of the most commonly used models are presented.
Besides homework assignments, students are required to work on a project.
The class is organized as follows:
Week 1–2. The first two lectures present the main differences between em-
bedded software and software for standard applications. In particular, threads
are formally defined and their limitations are underlined, with particular em-
phasis on the problems that arise when using this technique for developing
concurrent programs. Language for particular applications, like NesC [Gay
et al. 2003] and Lustre [Caspi et al. 1987], are then taken as representative
of domain specific models for embedded software.
Week 3–5. In this part of the class, Process Networks (PN) are used to in-
troduce a formalism that will be used in the rest of the class. First, the abstract
semantics of PN is presented together with the notion of partial ordering and
prefix ordering on sequences of events. In this abstract settings, properties like
monotonicity, continuity, and determinacy of a process are described as proper-
ties of the input–output function on streams that characterize a process. The
fixed-point semantics is also introduced when multiple processes are connected
together and loops are present in the corresponding functional graph. A con-
crete semantics is then presented and, finally, the concrete implementation of
PN semantics, following the Kahn-McQueen execution semantics, is shown by
using PtolemyII as a platform for implementing and composing models of com-
putation. The problem of bounded execution (an execution that used a bounded
amount of memory) is introduced and simulation techniques are presented.
Week 8–10. Three weeks are devoted to the different varieties of data flow
models of computation. The first kind of data flow is called Statically Schedula-
ble Data Flow (originally defined by Edward Lee in his thesis as Synchronous
Data Flow and more recently referred to as Static Data Flow). The concept of
ACM Transactions on Embedded Computing Systems, Vol. 4, No. 3, August 2005.
Embedded System Design Education at Berkeley • 489
balance equation and scheduling of static data flow models is explained. A more
concrete execution semantics is explained as a sequence of firings of data flow
actors. Firing rules and fixed-point computation are presented. The second part
of this section presents extensions to the basic data flow model like multidimen-
sional and heterochronous data flow. The last part presents boolean data flow
networks to express data dependent flow of tokens.
Week 11. The last part of the class introduces continuous time models and
hybrid systems. The emphasis is on the semantics and the techniques that
are used to solve systems of differential equations. In particular, problems like
event detection and Zeno behaviors for hybrid systems are considered and the
impact on the simulation engine are explained.
EE290O: Embedded Software Engineering. While the previous class ex-
plores the models that should be used in developing embedded software, this
class focuses on a particular design flow. The class presents a model of compu-
tation, the Giotto model [Henzinger et al. 2003], and explains why it is suitable
for a class of embedded software [EE290O]. The class is divided into three parts:
Week 1–3. The first part of the class introduces the content of the course by
giving examples of applications and platforms. Several models of computation,
like finite state machines, process networks, data flow, synchronous/reactive,
communicating sequential processes, and codesign finite state machines are
introduced, emphasizing the fact that each model is particularly suitable for a
specific application domain. The Click [Shah et al. 2004] model of computation
is explained for modeling the processing of streams of packets in routers.
Week 5–7. The motivations for using programmable platforms are ex-
plained. Several platforms are then presented: the Nexperia [Nexperia] plat-
form by Philips for multimedia application and the Ixp1200 [IXP1200] platform
by Intel for network processing. For each platform, examples of what kind of
application they target are given together with performances result. In week
7, a broad overview of the available platforms for VoIp is given.
Week 8–10. This part of the class gives two examples of mapping the con-
currency of the application onto the concurrency of the platform. The Giotto
model of computation and the E-Machine are presented and an example of the
software running on an autonomous helicopter is shown. A guest lecture from
the Xilinx research group shows the implementation of an IP router on a Vir-
texII Pro FPGA and the implication of using a multithreaded implementation.
The last presentation is given by the SCORE (Stream Computations Organized
for Reconfigurable Execution) [Caspi et al. 2000] project team. In this project
both function and architecture are described using Kahn process networks. The
challenge is to find a schedule of processes for bounded execution. The architec-
ture is composed of a set of processors that communicate over a shared network.
Buffers are allocated on memory segments.
4.2 Civil and Mechanical Engineering 290I: “Civil Systems, Control and
Information Management”
The possibility of sensing the environment and communicating over a dense
network of tiny objects is of great interest for the civil engineering community.
This course starts with an introductory lecture that motivates the use of em-
bedded networks with several applications: automatic control of the BART (Bay
Area Rapid Transportation) system, earthquakes monitoring, and mesh stable
formation flight of unmanned air vehicles.
The emphasis of the class is on the formal specification of complex networked
systems. The Teja [Teja] environment is used as example of formal language to
specify systems of users and resources. Syntax and semantics of the language
are explained in the class and students are trained in using the environment
with labs and homework.
understand signals and systems, and adopted tools such as Matlab [Matlab] to
lower the barrier to abstract reasoning using extensively visualization of sys-
tem behavior. The description of their approach can be found in two papers [Lee
2000; Lee and Varaiya 2000] from which this section is taken.
relations and bisimulation are defined for both deterministic and nondeter-
ministic machines. These are used to explain that two state machines may be
equivalent even if they have a different number of states, and that one state ma-
chine may be an abstraction of another in that it has all input/output behaviors
of the other (and then some).
Week 5. The fifth week is devoted to composition of state machines. The deep
concepts are synchrony, which gives a rigorous semantics to block diagrams and
feedback. The most useful concept to help subsequent material is that feedback
loops with delays are always well formed.
Week 6–14. In these weeks, the course deals with traditional linear system
topics, such as time-domain response, frequency domain analysis and response,
filtering, convolution, Fourier transforms, sampling and aliasing, and filter
design.
Week 15. This week develops applications that showcase the techniques
presented in the course. The precise topics depend on the interests and ex-
pertise of the instructors, but we have specifically covered vehicle automation,
with emphasis on feedback control systems for automated highways. The use
of discrete magnets in the road and sensors on the vehicles provides a superb
illustration of the risks of aliasing. The few exercises in the text that require
calculus provide any integration formulas that a student might otherwise look
up. Although series figure prominently, we only lightly touch on convergence,
raising, but not resolving, the issue.
The Lab. A major objective of the course is to introduce applications early,
well before the students have built up enough theory to fully analyze the appli-
cations. This helps to motivate the students to learn the theory. In the Lab, we
emphasize the use of software to perform operations that could not possibly be
done by hand, operations on real signals, such as sounds and images.
While the mathematical treatment that dominates in the lecture and text-
book is declarative, the labs focus on an imperative style, where signals and sys-
tems are constructed procedurally. Matlab and Simulink [Matlab] have chosen
this as the basis for these exercises because they are widely used by practition-
ers in the field, and because they are capable of realizing interesting systems.
The labs are divided into two distinct sections: in-lab and independent. The
purpose of the in-lab section is to introduce concepts needed for later parts of
the lab. Each in-lab section is designed to be completed during a scheduled lab
time with an instructor present to clear up any confusing or unclear concepts.
The independent section begins where the in-lab section leaves off. It can be
completed within the scheduled lab period, or may be completed on the students
own time. They write a brief summary of their solution, following a supplied
template, and turn it in at the beginning of the next scheduled lab period.
There are 11 lab exercises, each designed to be completed in 1 week. The
exercises include: Arrays and Sound, Images, State Machines, Control Sys-
tems, Difference and Differential Equations, Spectrum, Comb Filters, Modu-
lation and Demodulation, Sampling and Aliasing. Two of the weeks are quite
interesting (State Machines and Control Systems) from the point of view of
ACM Transactions on Embedded Computing Systems, Vol. 4, No. 3, August 2005.
Embedded System Design Education at Berkeley • 495
embedded systems and models of computation. The third lab uses Matlab as
a low-level programming language to construct state machines according to
a systematic design pattern that will allow for easy composition. The theme
of the lab is establishing the correspondence between pictorial representa-
tions of finite automata, mathematical functions giving the state update, and
software realizations. The main project in this lab exercise is to construct
a virtual pet. This problem is inspired by the Tamagotchi virtual pet made
by Bandai in Japan. Tamagotchi pets were popular in the late 1990s and
had behavior considerably more complex than that described in this exercise.
The students design an open-loop controller that keeps the virtual pet alive.
This illustrates that systematically constructed state machines can be easily
composed.
In the Control System lab, students modify the pet so that its behavior is
nondeterministic. They are asked to construct a state machine that can be
composed in a feedback arrangement such that it keeps the cat alive. The
semantics of feedback in this course are consistent with tradition in signals
systems. Computer scientists call this style synchronous composition, and de-
fine the behavior of the feedback system as a (least or greatest) fixed point of a
monotonic function on a partial order. In a course at this level, we cannot go into
this theory in much depth, but we can use this example to explore the subtleties
of synchronous feedback. Most students find this lab quite challenging, but also
very gratifying when they figure it out. The concepts behind it are complex and
better students realize that.
Since many of these topics are covered in the graduate class of EECS249, we
will borrow heavily from that experience, while the material of EECS249 will
evolve toward more advanced topics.
6. CONCLUSIONS
We outlined the embedded system education program at the University of
California at Berkeley. We stressed the importance of foundations in educa-
tion as opposed to technicalities. Embedded systems are important enough to
warrant a careful analysis of the mathematical bases upon which we can build
a solid discipline that marries rigor with practical relevance. Given the present
role of embedded systems in our research agenda and the traditional approach
to education in the leading U.S. Universities, the first courses to be developed
are advanced graduate courses. The natural evolution is to solidify the teaching
material to a point where regular graduate classes can be taught and finally
move the contents to the undergraduate curriculum while the graduate courses
adjust continuously to the advances in the field brought about by research. The
flexibility of the U.S. system allows the curriculum to change fairly easily and
to strive for relevance to the ever-changing society and cultural landscape.
While we believe that our program has achieved a set of important goals,
we do realize that much remains to be done. At the undergraduate level, we
are planning to introduce an upper division class on hybrid and embedded
ACM Transactions on Embedded Computing Systems, Vol. 4, No. 3, August 2005.
Embedded System Design Education at Berkeley • 497
software systems. At the graduate level, we are considering the addition of reg-
ular courses on theoretical foundations focusing on function description and
manipulation as well as one on reconfigurable and programmable architec-
tural platforms to follow the basic graduate course (EECS249) on embedded
systems. We also believe that embedded system courses should be considered
foundational courses for the entire college of engineering and we are working
with our Dean and Department Chairpersons to address this issue.
The views presented here are for a large part shared with the Artist [Artist]
Network of Excellence Education Team, whose agenda is described in another
paper of this special issue.
ACKNOWLEDGMENTS
REFERENCES
ARTIST. http://www.artist-embedded.org/overview/.
BALARIN, F. ET AL. 1997. Polis: A Design Environment for Control-Dominated Embedded Systems.
Kluwer, Boston, MA.
BALARIN, F. ET AL. 1999. Synthesis of software programs for embedded control application. IEEE
Transactions on Computer-Aided Design of Integrated Circuits and Systems.
BALARIN, F., WATANABE, Y., HSIEH, H., LAVAGNO, L., PASSERONE, C., AND SANGIOVANNI-VINCENTELLI, A.
2003. Metropolis: An integrated electronic system design environment. IEEE Computer.
BALEANI, M., GENNARI, F., JIANG, Y., PATEL, Y., BRAYTON, R. K., AND SANGIOVANNI-VINCENTELLI, A. 2002.
HW/SW partitioning and code generation of embedded control applications on a reconfigurable ar-
chitecture platform. In Proceedings of the 10th International Symposium on Hardware/Software
Codesign (CODES), Estes Park, Colorado.
BERRY, G. AND GONTHIER, G. 1992. The esterel synchronous programming language: Design, se-
mantics, implementation. Science of Computer Programming 19, 2, 87–152.
BORKAR, S., COHN, R., COX, G., GLEASON, S., AND GROSS, T. 1988. Warp: An integrated solution
of high-speed parallel computing. In Supercomputing ’88: Proceedings of the 1988 ACM/IEEE
Conference on Supercomputing. IEEE Computer Society Press. 330–339.
BRAYTON, R. K., RUDELL, R., SANGIOVANNI-VINCENTELLI, A., AND WANG, A. R. 1987. Mis: A multiple-
level logic optimization system. IEEE Trans. Comput.-Aided Design Integrated Circuits 6, 6
(Nov.), 1062–1081.
BRYANT, R. E. 1986. Graph-based algorithms for Boolean function manipulation. IEEE Trans.
Comput. C-35, 8 (Aug.), 677–691.
CARLONI, L. P. 2004. Latency-Insensitive Design. Ph.D. thesis, University of California at
Berkeley, Electronics Research Laboratory, College of Engineering, Berkeley, CA 94720. Memo-
randum No. UCB/ERL M04/29.
CASPI, P., PILAUD, D., HALBWACHS, N., AND PLAICE, J. A. 1987. Lustre: A declarative language for real-
time programming. In POPL ’87: Proceedings of the 14th ACM SIGACT-SIGPLAN Symposium
on Principles of Programming Languages. ACM Press, New York. 178–188.
CASPI, E., CHU, M., HUANG, R., YEH, J., WAWRZYNEK, J., AND DEHON, A. 2000. Stream computa-
tions organized for reconfigurable execution (score). In FPL ’00: Proceedings of the The Roadmap
to Reconfigurable Computing, 10th International Workshop on Field-Programmable Logic and
Applications. Springer-Verlag. 605–614.
CS294. http://www.cs.berkeley.edu/˜culler/cs294-f03/.
CS294W. http://www.cs.berkeley.edu/˜adj/cs294-1.f00/.
DE KOCK, E. A., ESSINK, G., SMITS, W. J. M., VAN DER WOLF, P., BRUNEL, J.-Y., KRUIJTZER, W. M.,
LIEVERSE, P., AND VISSERS, K. A. 2000. Yapi: Application modeling for signal processing sys-
tems. Proceedings of the Design Automation Conference.
DSPACE. http://www.dspaceinc.com/ww/en/inc/products/sw/targetli.htm.
EE249. http://www-cad.eecs.berkeley.edu/˜polis/class.
EE290A. http://www-cad.eecs.berkeley.edu/respep/research/classes/ee290a/fall02/.
EE290N. http://embedded.eecs.berkeley.edu/concurrency/.
EE290O. http://www.cs.uni-salzburg.at/˜ck/teaching/eecs290o-spring-2002.
EECS20N. http://ptolemy.eecs.berkeley.edu/eecs20/index.html.
FERDINAND, C. AND WILHELM, R. 1998. On predicting data cache behavior for real-time systems. In
Proceedings of the ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded
Systems. Springer-Verlag, 16–30.
GAY, D., LEVIS, P., VON BEHREN, R., WELSH, M., BREWER, E., AND CULLER, D. 2003. The nesc language:
A holistic approach to networked embedded systems. SIGPLAN Not. 38, 5, 1–11.
GIOTTO. http://embedded.eecs.berkeley.edu/giotto/.
HAREL, D. 1987. Statecharts: A visual formalism for complex systems. Science of Computer Pro-
gramming 8, 3 (June), 231–274.
HENZINGER, T. A., HOROWITZ, B., AND KIRSCH, C. M. 2003. Giotto: A time-triggered language for
embedded programming. Proceedings of the IEEE 91, 84–99.
HENZINGER, T. A. AND KIRSCH, C. M. 2002. The embedded machine: Predictable, portable real-
time code. In Proceedings of the International Conference on Programming Language Design and
Implementation. ACM Press, New York, 315–326.
HOROWITZ, B. LIEBMAN, J., MA, C., KOO, J., SANGIOVANNI-VINCENTELLI, A., AND SASTRY, S. 2003.
Platform-based embedded software design and system integration for autonomous vehicles. In
Proceedings of the IEEE.
IXP1200. http://www.intel.com/design/network/products/npfamily/ixp1200.htm.
KOPETZ, H. AND GRUNSTEIDL, G. 1994. Ttp-a protocol for fault-tolerant real-time systems. Com-
puter 27, 1, 14–23.
KOUSHANFAR, F., DAVARE, A., NGUYEN, D. T., POTKONJAK, M., AND SANGIOVANNI-VINCENTELLI, A. 2003.
Distributed localized algorithms and protocols for power minimization in networked embedded
systems. In ACM/IEEE International Symposium On Low Power Electronics and Design.
LEE, E. A. 2000. Designing a relevant lab for introductory signals and systems. Proc. of the First
Signal Processing Education Workshop.
LEE, E. A. AND MESSERSCHMITT, D. G. 1987. Synchronous data flow. In Proceedings of the IEEE.
LEE, E. A. AND SANGIOVANNI-VINCENTELLI, A. L. 1998. A framework for comparing models of com-
putation. IEEE Trans. Comput.-Aided Design Integrated Circuits 17, 12 (Dec.), 1217–1229.
LEE, E. A. AND VARAIYA, P. 2000. Introducing signals and systems—the Berkeley approach. Proc.
of the First Signal Processing Education Workshop.
LEE, E. A. AND VARAIYA, P. 2003. Structure and interpretation of signals and systems. Addison-
Wesley, Reading, MA.
LI, Y.-T. S. AND MALIK, S. 1995. Performance analysis of embedded software using implicit path
enumeration. In Workshop on Languages, Compilers and Tools for Real-Time Systems. 88–98.
LIBERTY. http://liberty.cs.princeton.edu/software/lse/.
LIU, C. L. AND LAYLAND, J. W. 1973. Scheduling algorithms for multiprogramming in a hard-real-
time environment. Journal of the ACM 20, 1, 46–61.
LYGEROS, J., TOMLIN, C., AND SASTRY, S. 1999. Controllers for reachability specifications for hybrid
systems. In Automatica, Special Issue on Hybrid Systems.
MARTIN, G. AND SALEFSKI, B. 1998. Methodology and technology for design of communications and
multimedia products via system-level ip integration. In Proceedings of the Conference on Design,
Automation and Test in Europe. IEEE Computer Society.
MATHWORKS. http://www.mathworks.com/products/rtw/.
MATLAB. http://www.mathworks.com/.
MESCAL. http://embedded.eecs.berkeley.edu/mescal.
MURATA, T. 1989. Petri nets: Properties, analysis and applications. In Proceedings of the IEEE.
541–580. NewsletterInfo: 33. Published as Proceedings of the IEEE, 77, 4.
NEXPERIA. http://www.semiconductors.philips.com/products/nexperia/.
PASSERONE, R. 2004. Semantic foundations for heterogeneous systems. Ph.D. thesis, University
of California, Berkeley.
PATH. http://www.path.berkeley.edu/.
PICORADIO. http://bwrc.eecs.berkeley.edu/research/pico radio.
PINTO, A., CARLONI, L., AND SANGIOVANNI-VINCENTELLI, A. 2002. Constraint-driven communication
synthesis. In Proceedings of the Design Automation Conference 2002 (DAC’02).
PNUELI, A. 1977. The temporal logic of programs. In Proceedings of the 18th IEEE Symposium
on the Foundations of Computer Science (FOCS-77). IEEE, IEEE Computer Society Press, Prov-
idence, Rhode Island, 46–57.
PTOLEMYII. http://ptolemy.eecs.berkeley.edu.
SANGIOVANNI-VINCENTELLI, A. 2002. Defining platform-based design. EEDesign of EETimes.
SANGIOVANNI-VINCENTELLI, A., CARLONI, L., BERNARDINIS, F. D., AND SGROI, M. 2004. Benefits and
challenges for platform-based design. In Proceedings of the 41st Annual Conference on Design
Automation. ACM Press, New York, 409–414.
SHAH, N., PLISHKER, W., AND KEUTZER, K. 2004. NP-Click: A Programming Model for the Intel
IXP1200, 1 ed. Vol. 2. Elsevier, Chapter 9, 181–201.
TEJA. http://www.teja.com/.
VACHHARAJANI, M., VACHHARAJANI, N., PENRY, D. A., BLOME, J., AND AUGUST, D. I. 2004. The liberty
simulation environment, version 1.0. Performance Evaluation Review: Special Issue on Tools for
Architecture Research 31, 4 (Mar.).
XILINX. http://www.xilinx.com.
ZIMET, L., KAO, S., AMIR, A., AND SANGIOVANNI-VINCENTELLI, A. 2004. An embedded system for an eye
detection sensor. In Computer Vision and Image Understanding: Special Issue on Eye detection
and Tracking.
ZIVOJNOVIC, V., PEES, S., AND MEYR, H. 1996. Lisa—machine description language and generic
machine model for hw/sw co-design. IEEE Workshop on VLSI Signal Processing.