id 024c: auto code generation: the shortest distance from · pdf fileshortest distance from...
TRANSCRIPT
ID 024C: Auto Code Generation: The Shortest Distance From Idea to Implementation
Christopher Myers
Director of Software Development
12 October 2010
Version: 1.1
2
Christopher Myers [email protected]
� Director of Software Development
� Responsible for designing and managing development
of SimuQuest product lines
� Lead Developer of QuantiPhi, a line of code generation
tools that bring a hardware interface into the Simulink
modeling environment.
PREVIOUS EXPERIENCE:
� Working in the area of model-based development
using MATLAB / Simulink since 2003.
� Production automotive and consumer electronics
experience at Motorola since 2000.
� Designed high-performance network appliances
designed to provide unparalleled visibility into
network usage while at Arbor Networks, Inc.
� MS, BS from the University of Michigan
3
Renesas Technology and Solution Portfolio
Microcontrollers
& Microprocessors#1 Market share
worldwide *
Analog and
Power Devices#1 Market share
in low-voltage
MOSFET**
Solutions
for
Innovation
Solutions
for
InnovationASIC, ASSP
& MemoryAdvanced and
proven technologies
* MCU: 31% revenue
basis from Gartner
"Semiconductor
Applications Worldwide
Annual Market Share:
Database" 25
March 2010
** Power MOSFET: 17.1%
on unit basis from
Marketing Eye 2009
(17.1% on unit basis).
44
Renesas Technology and Solution Portfolio
Microcontrollers
& Microprocessors#1 Market share
worldwide *
Analog and
Power Devices#1 Market share
in low-voltage
MOSFET**
ASIC, ASSP
& MemoryAdvanced and
proven technologies
* MCU: 31% revenue
basis from Gartner
"Semiconductor
Applications Worldwide
Annual Market Share:
Database" 25
March 2010
** Power MOSFET: 17.1%
on unit basis from
Marketing Eye 2009
(17.1% on unit basis).
Solutions
for
Innovation
Solutions
for
Innovation
55
Microcontroller and Microprocessor Line-up
Superscalar, MMU, Multimedia� Up to 1200 DMIPS, 45, 65 & 90nm process
� Video and audio processing on Linux
� Server, Industrial & Automotive
� Up to 500 DMIPS, 150 & 90nm process
� 600uA/MHz, 1.5 uA standby
� Medical, Automotive & Industrial
� Legacy Cores
� Next-generation migration to RX
High Performance CPU, FPU, DSC
Embedded Security
� Up to 10 DMIPS, 130nm process
� 350 uA/MHz, 1uA standby
� Capacitive touch
� Up to 25 DMIPS, 150nm process
� 190 uA/MHz, 0.3uA standby
� Application-specific integration
� Up to 25 DMIPS, 180, 90nm process
� 1mA/MHz, 100uA standby
� Crypto engine, Hardware security
� Up to 165 DMIPS, 90nm process
� 500uA/MHz, 2.5 uA standby
� Ethernet, CAN, USB, Motor Control, TFT Display
High Performance CPU, Low Power
Ultra Low PowerGeneral Purpose
66
Microcontroller and Microprocessor Line-up
Superscalar, MMU, Multimedia� Up to 1200 DMIPS, 45, 65 & 90nm process
� Video and audio processing on Linux
� Server, Industrial & Automotive
� Up to 500 DMIPS, 150 & 90nm process
� 600uA/MHz, 1.5 uA standby
� Medical, Automotive & Industrial
� Legacy Cores
� Next-generation migration to RX
High Performance CPU, FPU, DSC
Embedded Security
� Up to 10 DMIPS, 130nm process
� 350 uA/MHz, 1uA standby
� Capacitive touch
� Up to 25 DMIPS, 150nm process
� 190 uA/MHz, 0.3uA standby
� Application-specific integration
� Up to 25 DMIPS, 180, 90nm process
� 1mA/MHz, 100uA standby
� Crypto engine, Hardware security
� Up to 165 DMIPS, 90nm process
� 500uA/MHz, 2.5 uA standby
� Ethernet, CAN, USB, Motor Control, TFT Display
High Performance CPU, Low Power
Ultra Low PowerGeneral Purpose
7
I n n o v a t i o n : I n n o v a t e F a s t e r
8
Model-Based Design
Model-Based Design and Automatic Code Generation is the
future of embedded controls. SimuQuest believes that as
companies across all industries realize the innovation
advantage that it provides, it will play a part in the design of
nearly all embedded systems worldwide.
9
Agenda
� Introduction to modeling and auto-code
� Examples of Simulink / Stateflow
� Exploration of design concerns
� Fixed-point vs. floating point
� Integrating hand code with auto-code
� Modeling an entire application: One-Touch code generation
� Q&A
10
Agenda (in other words)
� Make the case for modeling and auto-code
� Show you what modeling and auto-code is all about
� Show you just how far it can be taken
� Answer questions
11
Key Takeaways
� Models helps define requirements
� Models can be auto-coded
� You can use that C code flexibly
� Auto-coding is powerful
� Auto-coding saves you time
12
Auto-Code Generation: Why
Software PerspectiveControls Perspective
13
Modeling: A Software Perspective
Software PerspectiveControls Perspective
14
Typical Project
Kick-Off Delivery
Effort
Time
15
Ideal Project
Kick-Off Delivery
Effort
Time
16
Dollars and Cents Advantage
SOFTWARE DEFECT COSTS
17
Why Typical Approaches Don’t Work!
Req 1.6.5.9.1.2.3 - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ut orci nulla. Aenean nulla metus, blandit eget blandit vitae, commodo sit amet metus. Mauris lacinia varius dui, quis dictum nisi aliquet vitae. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisi nunc, blandit vitae porta vitae, faucibus sit amet neque…
Use Case 1
Use Case n
Or…
18
A Model-Based Approach
� Understand the system we’ll be interacting with. Model it.
� Develop executable models of system requirements
� Integrate early and often
� Bring pre-tested hardware drivers into the modeling environment
� Auto-generate code
19
Modeling: A Controls Perspective
Software PerspectiveControls Perspective
20
Why Auto-Code Generation: R&D
21
Modeling: Auto-Coding
Software PerspectiveControls Perspective
22
Our Auto-Coding Toolbox
MATLAB
QuantiPhiRTW Embedded Coder
Simulink & Stateflow
Base computing platform
Modeling platform
Auto-code generation Provides MCU configuration
and device drivers.
23
Building Block: The Feature
Feature
Determine a set point
Condition a user input
Detect a faultDetect a fault
Compute value for an actuator
inputs outputs
triggers
24
An Example Feature Model
[In Simulink]
25
What About Integrating the Code?
FeatureData Types
Variables
File Naming
Legacy Code
Target
New Concerns!
26
What About Integrating the Code?
FeatureData Types
Variables
File Naming
Legacy Code
Target
27
C to Simulink Mappings
C Types
unsigned char
unsigned char
char
unsigned short int
short int
unsigned long int
long int
float
double
Simulink Types
boolean
uint8
int8
uint16
int16
uint32
int32
single
double
+ additional fixed-point types available
28
Data Types: Floating and Fixed Point
float my_var = 3.57; float my_var = 3.57;
FPU No FPU
29
Data Types: Floating and Fixed Point
*IEEE754
1
float*
uint16 0 0 1110000000000
Artificial binary point
ufix16_En4
1 1 0 01010111100011 1 0 0 10
00000001
0
0
Value to represent: 3.57
uint16 3 57
Artificial decimal point
(understood that number is 100x higher than real value)
ufix16_Sp01
3 . (0.5 + 0.0625)
30
Data Types (+Fixed Point) in Simulink
[In Simulink]
31
Auto-Coding for Different-Sized Targets
FeatureData Types
Variables
File Naming
Legacy Code
Target
32
More Control Over Generated Code
FeatureData Types
Variables
File Naming
Legacy Code
Target
33
More Control Over Generated Code
� Simple: Can control variable’s:
� Placement in RAM / ROM
� Class (const, volatile, etc)
� Naming
� Scope (global vs. local)
� Advanced: Can control variable’s:
� Declaration
� Definition
� Code needed to read
� Code needed to write
34
More Control Over Generated Code (Cont’d)
� Simple: Can control subsystem’s:
� Name of the file containing its code
� Name of the generated function
� Advanced: Can control subsystem’s:
� Placement in memory (near vs. far for example)
� RAM / ROM variable placement in memory
35
Legacy Code
FeatureData Types
Variables
File Naming
Legacy Code
Target
36
Legacy Code
Feature Backed
By Legacy Codeinputs outputs
triggers
[Go to Simulink]
Step 1:
Simulation Behavior
Step 2:
Code Generation Behavior
37
Typical Auto-Coding Methodologies
Feature Effort =
38
Typical Auto-Coding Methodologies
Feature 1
Feature n
“Application Layer”
Effort =
39
Typical Auto-Coding Methodologies
Feature 1
Feature n
Hardware
Interface
Effort =
40
Convinced?
41
The Next Step
Feature 1
Feature n
Hardware
Interface
42
A
B C
Interfacing With Hardware
43
Interfacing With Hardware
A
B C
PA0
RPM
pwm0
QuantiPhi
44
Hardware Abstraction Layer
� Example of a digital debounce:
45
Another Hardware Abstraction Layer Example
� Example of analog counts to engineering units:
46
A “One Touch” Example Using QuantiPhi
[In Simulink]
47
Innovation: Innovate Faster
48
Related Lab
[In Simulink]
021L: Model Based Control Design
and Auto Code Generation using the R8C
49
Questions?
50
Thank You!