Notes
Outline
Welcome
to
CS269: Hardware/Software Engineering of Embedded Systems
Harry Hsieh
Department of Computer Science and Engineering
University of California at Riverside
HW/SW Engineering of Embedded Systems
Class Meeting
SURGE 349
TuTh 12:40PM-2PM
Prerequisite:
CS/EE 120A
consent of instructor
Course number:
16546
4 units, grades only
No S/NC, P/NP,…
Instructor
Harry Hsieh
www.cs.ucr.edu/~harry
harry@cs.ucr.edu
Office (787-2030)
SURGE 329, TuTh 2PM-3PM
Check www for cancellation
Also available
by appointment
immediately after class
Class Web Page
www.cs.ucr.edu/~harry/classes_files/cs269_Win02.html
Grades
Presentations & participation 45%
Present 3-4 technical papers per quarter
1.5-2 hour-long lecture per quarter
Read 3 technical papers per week on the average
Attend every class meeting
Sign up for 1st round of presentation by Thursday, 1/10 !!!
Individual project 45%
List of projects provided
1-2 person per project team
Sign up by Thursday, 1/17 !!!
Quiz 10%
In-class
Open-everything
No human help whatsoever…
No homework, no exams, no texbook, no laboratory exercise, no
System Level Design is next…
The co-design ladder
In the past:
Hardware and software design technologies were very different
Recent maturation of synthesis enables a unified view of hardware and software
Hardware/software “codesign”
The solution
The entire system must be designed as a whole
Hardware
Software
Interface
Memory
Peripheral
…
Implementation Architecture
An Embedded System Application
Different Architectures
Different Architectures
Different Architectures
Different Architectures
Different Architectures
Different Architectures
Design Freedom
Change architecture
Change partitioning
Change scheduling
Change synthesis
Current Industrial Practice
Specify everything as ASIC
Offload as much as possible to processor
As long as timing constraints are met
Specify everything as software
If timing constraints are violated
Move functionality to hardware
System level partitioning
Implementations on different resources are proceed independently
“System Integration” at the end
Problem with Current Approach
Lack of unified system behavior representation
Can’t verify the entire system
Lead to possible incompatibility across boundary
A priori division into resources
Can’t optimize across boundary
Lead to suboptimal design
Lack of well defined design flow
Can’t revise easily
Directly impact time to market
Co-Design Methodology
Challenge for embedded system design
(I.e. CS269)
How to specify?
Languages and models
VHDL, C, Java, FSM, PN, Matlab,…
Framework (IDE)
Slide 21
Metropolis
Design Environment for Heterogeneous Systems
System Design: Industry Structure
Metropolis Project
Approaches to complex embedded systems
Design Reuse
Time to market push
High level of abstraction
Exploit all possible design freedom
Concurrency
Application concurrency matching architectural concurrency
Heterogeneity
Automotive: block based/multi-CPU/safety/deadline
Wireless: sequential program/single-CPU/QoS/protocol
Metropolis Project
Goal: develop a formal design environment
Orthogonalize concerns
Computation vs communication (synthesized vs translated)
Function vs architecture (should vs could)
Behavior vs performance (abstract vs implemented)
Behavior vs constraints (abstract vs required)
Have theoretical foundation
Metamodel to represent different models of computation
Model vs language…
Use Platform
Software, hardware, system
With its implied communication structure
Metropolis Project
Participants:
UC Berkeley (USA): methodologies, modeling, formal methods
CMU (USA): formal methods
Politecnico di Torino (Italy): modeling, formal methods
Universita Politecnica de Catalunya (Spain): modeling, formal methods
Cadence Berkeley Labs (USA): methodologies, modeling, formal methods
Philips (Netherlands): methodologies (multi-media)
Nokia (USA, Finland): methodologies (wireless communication)
BWRC (USA): methodologies (wireless communication)
BMW (USA): methodologies (fault-tolerant automotive controls)
Intel (USA): methodologies (microprocessors)
UC Riverside?
Metropolis Framework
Design Methodology
Balance between reusability and optimality
 orthogonalize design concerns as much as possible
 optimize the final implementation as much as necessary
Design Methodology
Functional decomposition
Behavior adaptation
Media and MoC wrapper insertion
Communication refinement
Optimization
Functional Decomposition
Behavior Adaptation
Communication Insertion
Refinement
Architecture
Architecture: abstracted layers for smooth refinement
Refinement
Optimization
Metropolis Framework
Metropolis Meta Model
Metropolis Meta Model
Metropolis Meta Model
Slight digression
Sentential logic
p, q
p ^q, pvq, -p, p->q
Linear Temporal Logic
Time is linear sequence of points
Gp: globally p
Fp: eventually p
Xp: next p
pUq: p until q
Example:
Gp->Fp
What’s always true is eventually true
Netlist
Why Java?
Object orientation is here to stay
C++ is yesterday’s news
What about inefficiency with interpreter?
Technology solution
Can always translate and compile
http://java.sun.com
Official site, contain tutorial
Process
May declare fields and functions
May  be extended to define other processes
Object orientation a la Java and C++
Fields and functions are private unless declared public
Contain at least on constructor and a thread function
Interact with other object through port
Port
Special field of type interface
Interface
Declare function with input/output type without implementing them
Process access port through calling interface functions
An example process
Update
Function may change the state of media that implements the interface
Eval
Function may NOT change the state of the media…
Medium
Implements interfaces by providing code for the function of the interfaces
May define fields and functions
An example medium
await
The only construct in metamodel for synchronization
Implement critical sections
Await ( guard ; test list; set list){critical section}
Guard: condition that must hold for execution to continue
Test list: other process should not have set these
Set list: other process can not set theses now
Nondeterminism
Await{ ( g1 ; t1 ; s1 ) c1 , ( g2 ; t2 ; s2 ) c2…}
Another example process