An Environment for Dynamic Component Composition for
Download
Report
Transcript An Environment for Dynamic Component Composition for
Structured Component
Composition Frameworks for
Embedded System Design
Sandeep Shukla, Virginia Tech.
Frederic Doucet, Rajesh Gupta
University of California, San Diego.
The Context
Platform Based Design (PBD)
a platform is a partial design consisting of IP blocks
a platform is an IP at the next level of abstraction
A platform is a realized design pattern
Any given space has a limited number of good solutions to its basic
problems.
A platform captures the good solutions to the important design challenges
in that space.
A platform reuses architectures within architectural constraints
IP design needs a framework consisting of
component libraries, composition glue, validation, synthesis..
2
Component Composition Framework (CCF)
A CCF Provides the Basis for
Composition
C++
Class
library
components
Structured composition
3
BALBOA: A Composition Workbench
Module as a top-level class
Member functions:
model blocks
create compound blocks
connect component objects
set parameters
A glorified schematic entry
> set design [new Module]
> set C0 [$design Component]
> $design connect C0 C1
> $design attach_list
> $design copy_interface
> $design attach_behavior
> ...
4
Components and Composition
C++ is increasingly being considered for
system modeling
Accessible and good for managing system complexity
through object orientation
While use of C++ enables higher abstraction
levels, it does not per se guarantee increases in
design efficiency and productivity
Enormous modeling choices in typing
Higher productivity requires ability to reuse
system components
Need for ‘adequate’ composability
5
High Design Efficiency Requires
New “abilities”
Model Interoperability
The ability of the IP models to compose
Language and environments
The ability of the IP models to be reused
Methodological implications
We focus on composability here
There are two aspects to composability:
Compatibility across modeling dimensions
Ability to quickly and accurately build complete system
models
6
Modeling Dimensions and
Composability
System Level Semantics Concerns
Different models of computation
Different levels of abstraction
Different data types
Different class libraries
Primary obstacle to composability
Semantic gap between hardware components and their
software models
7
C++ Semantic Gap
Hardware elements:
7
7
B1
Software models:
B1
B2
sc_in<int>
sc_in<cData>
Port<char>
Protocol<event>
B2* b2_ptr;
Int write(int);
…
How to
connect?
B2
8
C++ Composability
Implementations
Inheritance Strategy
Composition Strategy
Reference
W
W
B
Inheritance
A
Sharing of
W to A
A and W: common identity
Delegation from W to B
B and W: two identities
9
C++ Composability
Implementations (cont’d)
In both approaches, wrappers are implemented
Inheritance: wrapping established during programming
time
Composition: wrapping established at run-time
Both approaches have dependencies
Inheritance has a stronger dependency than composition
We think that composition could be a better
solution for system models which contains
hardware
10
Dynamic Composition
What is dynamic composition?
Objects acquiring references at run-time
No recompiling necessary: usage of compiled IP libraries
Key ideas:
Use delegation instead of inheritance for model reuse
Wrapper has a separate identity from the component
Relies on a specialized Interface Definition Language
(IDL) to generate the wrapper
11
BALBOA CCF
Layered composition
Built upon existing class libraries,
to add a software layer for
manipulation and configuration of
C++ IP models
Ease software module
connectivity
Run-time environment structure
System designer
Component
Integration, CIL
Split-Level
Interface/BIDL
C++, SystemC
12
BALBOA Key Technical Decisions
1. A development and runtime environment
1.
Layered architecture
2. Use an interpreted language for
1.
2.
Architecture description
Component integration
3. Use delegation is used instead of inheritance for
component wrapping
1.
Split-level interfaces between interpreted and compiled domains
4. Use an interface definition language (IDL) to
1.
2.
3.
Describe and generate the split-level interface
Implements the composition and object model
Extends the type system
13
BALBOA System Implementation
CIL Script Provides:
Delayed and inferred typing
Introspection capabilities
Interpreter
The split-level interface
do not rebuild, but uses
the compiled structure as
model instance
Built using Object Tcl for
the composition
environment
SLI
SLI
SLI
C1
C2
C3
14
based on Object Tcl
Compose an architecture
Instantiate components
Connect components
Compose objects
Build test benches
Introspection
Query its own structure
Loose typing
Strings and numbers
Producer P
Consumer C
Queue Q
Compiled
Script-like language
Interpreted
Language Layers: CIL
System designer
Split-Level
Interface/BIDL
Component
Integration, CIL
C++, SystemC
P query attributes
queue_out
C query attributes
queue_in
P.queue_out query methods
bind_to read
P.queue_out bind_to Q
…
15
language to export
Attributes
Methods,
Relationships
Characteristics
Used to generate the
split-level interface
Used to extend the type
system in the
environment
Compiled
Component description
Interpreted
Language Layers: BIDL
System designer
Split-Level
Interface/BIDL
Component
Integration, CIL
template<class T>
C++, SystemC
class Producer {
kind BEHAVIORAL;
public:
Queue<T>* queue_out;
unsigned int packet_count;
void packet_generator process();
};
INSTANCE (int)
OF_CLASS (Producer)
INSTANCE (BigPacket)
OF_CLASS (Producer)
INSTANCE (SmallPacket)
OF_CLASS (Producer)
16
Language and Run-time Layers
Language
CIL
BIDL
C++
Tools
Run-time structure
Introspection
SLI/Type
BIDL
system
Compiler
extension
GCC
Reflection
GCC
Interpreter
Split Level
Interfaces
Compiled
objects
Split-level Interface
Links the interpreted and
Interpreter
the compiled domain
Each compiled object has a
split-level interface
Implements:
Composition model
Full control on the internal
object
Reflection and the
introspection
SLI
SLI
SLI
O1
O2
O3
Note: SLI is a EDA tool organization
issue, not a programming issue.
• Parts of the type system
–Maintains type compatibility
–Perform type evaluation heuristics
18
Type System
Compiled types are weakened in the CIL
Data types are abstracted from signal and ports
Algorithm for data type inference
If a component is not typed in the CIL
The SLI delayed the instantiation of the compiled internal
object
Interpreted parts of the component are accessible
Verify if types are compatible when a relationship is set
If a compatible type is found, the SLI allocates the internal
object and sets the relationship
If not, the link command is delayed until the types are solved
Approach similar to ML
However, full type resolution is not guaranteed
19
Using the Environment
20
CIL Script Example
#load the AMRM component library
load ./libamrm.so
Entity
Cache
Memory
Queue
L1
mem_sys
mem_sys.L1
mem_sys.Mem
mem_se.r_q
L1.upper_request link_to ms.r_q
Mem.request_in
link_to ms.r_q
r_q
Tb add_stimuli 100 read 0x399
Mem
Tb add_tcl_callback ms.r_q.activity {
simulator.do_monitoring this; }
simulator run 200
mem_sys
21
Design Example Statistics:
AMRM
Number of
C++ classes
Number of
Script lines
Number of
BIDL line
IP vs
Generated
C++ code size
ratio
7 C++
< 30
60
812/809
(1.01)
8 C++
with SystemC
< 40
84
1512/1002
(1.51)
7 C++
with SystemC
< 150
87
1437/880
(1.63)
Script size vs C++ ratio: 1 is to 10
Code generation
most useful at
high abstraction
Manipulate
only the
script!22
Closing Remarks
Good IP-model composability requires
focus on system-level design tasks while using
programming environments
minimization of reliance on programming details to
accomplish these tasks.
Our approach is to use a split-programming
model for dynamic composition
where the design is entered in an interpreted domain
while at the same time avoiding need to separate
languages and description by using a layered software
architecture and automatic generation of SLI wrappers.
23
Related Work
System level language
Process-port-signal architectural style (SystemC, SpecC)
Architecture description languages (ADL)
Component frameworks
Type systems (Ptolemy, Colif)
Distributed programming
Skeletons generated from interface definition language
(Corba IDL)
Split-level programming
Separate composition concerns from programming
e.g. NS, or scripting
Wrapper generation (SWIG)
24