Structured Component Composition Frameworks for Embedded System Design Sandeep Shukla, Virginia Tech. Frederic Doucet, Rajesh Gupta University of California,

Slides:



Advertisements
Similar presentations
Construction process lasts until coding and testing is completed consists of design and implementation reasons for this phase –analysis model is not sufficiently.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Architecture Representation
APPLICATION OF DESIGN PATTERNS FOR HARDWARE DESIGN Speaker: Prof. Vytautas ŠTUIKYS, Speaker: Prof. Vytautas ŠTUIKYS, Software Engineering Department, Kaunas.
Presented by: Thabet Kacem Spring Outline Contributions Introduction Proposed Approach Related Work Reconception of ADLs XTEAM Tool Chain Discussion.
Software Testing and Quality Assurance
Domain-Specific Software Engineering (DSSE). Software Engineering Concerns  There are many of them  “Classical” software architecture research has focused.
The Architecture Design Process
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Object-Oriented Databases
SNAL Sensor Networks Application Language Alvise Bonivento Mentor: Prof. Sangiovanni-Vincentelli 290N project, Fall 04.
Design Patterns Module Name - Object Oriented Modeling By Archana Munnangi S R Kumar Utkarsh Batwal ( ) ( ) ( )
5 th Biennial Ptolemy Miniconference Berkeley, CA, May 9, 2003 MESCAL Application Modeling and Mapping: Warpath Andrew Mihal and the MESCAL team UC Berkeley.
Reuse Activities Selecting Design Patterns and Components
UML for Embedded Systems Development--Revisited. table_05_00 * * * * *
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture in Practice (3rd Ed) Introduction
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
An Introduction to Software Architecture
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
Introduction to MDA (Model Driven Architecture) CYT.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
SystemC: A Complete Digital System Modeling Language: A Case Study Reni Rambus Inc.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
1 H ardware D escription L anguages Modeling Digital Systems.
High Performance Embedded Computing © 2007 Elsevier Chapter 1, part 2: Embedded Computing High Performance Embedded Computing Wayne Wolf.
Generative Programming. Automated Assembly Lines.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Refining middleware functions for verification purpose Jérôme Hugues Laurent Pautet Fabrice Kordon
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Introducing Allors Applications, Tools & Platform.
Object-Oriented Modeling: Static Models. Object-Oriented Modeling Model the system as interacting objects Model the system as interacting objects Match.
A Component Platform for Experimenting with Autonomic Composition A component framework for supporting composition of autonomic services and bio-inspired.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Chapter 5:Design Patterns. 2 What are design pattern?  Schematic description of design solution to recurring problems in software design and,  Reusable.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
1 Unified Modeling Language, Version 2.0 Chapter 2.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
LECTURE 5 Nangwonvuma M/ Byansi D. Components, interfaces and integration Infrastructure, Middleware and Platforms Techniques – Data warehouses, extending.
CPSC 872 John D. McGregor Session 31 This is it..
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
The Role of Reflection in Next Generation Middleware
Review of last class Software Engineering Modeling Problem Solving
Design Patterns: MORE Examples
Chapter 5:Design Patterns
Introduction to Design Patterns
APPLICATION OF DESIGN PATTERNS FOR HARDWARE DESIGN
OO Methodology OO Architecture.
Distribution and components
Designing Software for Ease of Extension and Contraction
IP – Based Design Methodology
An Introduction to Software Architecture
Structured Component Composition Frameworks for Embedded System Design
Presented By: Darlene Banta
Chapter 5 Architectural Design.
Design Yaodong Bi.
From Use Cases to Implementation
Presentation transcript:

Structured Component Composition Frameworks for Embedded System Design Sandeep Shukla, Virginia Tech. Frederic Doucet, Rajesh Gupta University of California, San Diego.

2 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..  Component Composition Framework (CCF)

3 A CCF Provides the Basis for Composition components Structured composition C++ Class library

4 BALBOA: A Composition Workbench  Module as a top-level class  Member functions: model blocks create compound blocks connect component objects set parameters  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 >...  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 >...

5 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

6 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

7 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

8 C++ Semantic Gap B1B2 7 7 Hardware elements: How to connect? B1 sc_in Port Protocol B2* b2_ptr; Int write(int); … B2 Software models:

9 C++ Composability Implementations BW Composition Strategy Delegation from W to B B and W: two identities Reference W A A and W: common identity Inheritance Strategy Inheritance Sharing of W to A

10 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

11 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

12 Component Integration, CIL Split-Level Interface/BIDL C++, SystemC System designer Compiled Interpreted 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

13 BALBOA Key Technical Decisions 1. A development and runtime environment 1. Layered architecture 2. Use an interpreted language for 1. Architecture description 2. 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. Describe and generate the split-level interface 2. Implements the composition and object model 3. Extends the type system

14 BALBOA System Implementation  CIL Script Provides: Delayed and inferred typing Introspection capabilities  The split-level interface do not rebuild, but uses the compiled structure as model instance  Built using Object Tcl for the composition environment C1 SLI C3C2 Interpreter

15 Producer P Consumer C Queue Q P query attributes  queue_out C query attributes  queue_in P.queue_out query methods  bind_to read P.queue_out bind_to Q … Language Layers: CIL  Script-like language 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

16 template class Producer { kind BEHAVIORAL; public: Queue * 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) Language Layers: BIDL  Component description language to export Attributes Methods, Relationships Characteristics  Used to generate the split-level interface  Used to extend the type system in the environment

Language and Run-time Layers Interpreter BIDL Compiler Split Level Interfaces GCC Compiled objects LanguageToolsRun-time structure GCC Introspection BIDL C++ CIL SLI/Type system extension Reflection

18 Split-level Interface  Links the interpreted and 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 O1O3O2 Interpreter Parts of the type system –Maintains type compatibility –Perform type evaluation heuristics Note: SLI is a EDA tool organization issue, not a programming issue.

19 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

20 Using the Environment

21 mem_sys CIL Script Example #load the AMRM component library load./libamrm.so Entity mem_sys Cache mem_sys.L1 Memory mem_sys.Mem Queue mem_se.r_q L1.upper_request link_to ms.r_q Mem.request_in link_to ms.r_q Tb add_stimuli 100 read 0x399 Tb add_tcl_callback ms.r_q.activity { simulator.do_monitoring this; } simulator run 200 L1 Mem r_q

22 Design Example Statistics: AMRM 1437/880 (1.63) 87< 1507 C++ with SystemC 1512/1002 (1.51) 84< 408 C++ with SystemC 812/809 (1.01) 60< 307 C++ IP vs Generated C++ code size ratio Number of BIDL line Number of Script lines Number of C++ classes Script size vs C++ ratio: 1 is to 10 Manipulate only the script! Code generation most useful at high abstraction

23 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.

24 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)