VCC: Function-Architecture Co-Design: Modelling and Examples EE 249: November 7, 2002 Grant Martin Fellow, Cadence Berkeley Labs With thanks to Frank Schirrmeister, Jean-Yves Brunel and Paolo Giusto CADENCE CONFIDENTIAL Agenda • System-level SoC Design – The Rise in Abstraction • The VCC Design Flow as an example of Function-Architecture Co-Design • Performance Modeling • Architectural Services • Co-Design Example: Automotive Distributed SW • Co-Design Example: Design Space Exploration of Multimedia platform Embedded System on Chip (SoC) Design System Environment Zone 4: Global Satellite Zone 3: Suburban Zone 2: Urban Zone 1: In-Building Pico-Cell Macro-Cell Micro-Cell Requirements Specification Specification Untimed, Unclocked, C/C++ Level Memory Implementation Timed, Clocked, RTL Level Software Analog SOC Firmware CORE Implementation P/C µ Embedded Software Characterization Testbench Refinement Design Export Embedded Systems Design How did we use abstraction in the past? Step 1 – Layout to Transistor Digital Abstraction 1970’s • Switching delay of the transistor • The design complexity exceeds what designers can comprehend and think through at the layout level • Interconnect delay between transistors • Transistor level simulation allows to verify the logic of digital and analog designs based on transistor switching characteristics abstract Transistor Model Capacity Load 1970’s cluster How did we use abstraction in the past? Step 2 – Transistors to Gates Digital Abstraction Gate delay Interconnect delay between gates 1980’s The design complexity exceeds what designers can comprehend and simulate at the transistor level abstract Transistor Model Capacity Load 1970’s abstract Gate Level Model Capacity Load cluster 1980’s cluster Gate level simulation allows to verify the logic of digital designs based on gate switching characteristics. How did we use abstraction in the past? Step 3 – Gates to RTL-HDL Digital Abstraction Not really a abstraction of performance (e.g. SDF only used for gate to layout to gate) abstract Gate Level Model Capacity Load 1980’s abstract Textual statements result in “many gates” after synthesis RTL cluster 1990’s The design complexity exceeds what designers can comprehend and simulate at the gate level alone HDL is first used for fast verification, synthesis allows translation of text into gates Synthesis algorithms map text to actual registers and logic in between based on characterized gate and wire-load libraries Gate and wire-load delays are refined after layout. SDF emerges as format 1990’s And what is the next step? IP Block Performance Ports DMAC Modeling of Performance for IP Blocks abstract Transistor Model Capacity Load 1970’s abstract SDF Gate Level Model Capacity Load MPEG Audio Decoder uC I/F abstract abstract … by attaching performance data to timing free functional models Register File Timers RTL cluster Graphics Engine On-Chip Ram RTL Clusters cluster cluster 1980’s 1990’s Year 2000 + And what is the next step? Inter IP Communication Performance abstract Transistor Model Capacity Load 1970’s abstract SDF Gate Level Model Capacity Load abstract abstract Modeling of Performance for Communication between IP Blocks RTL cluster RTL Clusters cluster cluster 1980’s 1990’s Year 2000 + And what is the next step? IP Block Performance Inter IP Communication Performance Ports DMAC Apply this to Hardware and Software 1970’s RTOS MPEG Audio Decoder uC I/F abstract abstract abstract Transistor Model Capacity Load abstract SDF Gate Level Model Capacity Load cluster RTL cluster Driver Graphics Engine On-Chip Ram RTL Clusters 1990’s SW Models Discontinuity: Embedded Software cluster 1980’s Tasks Register File Timers Year 2000 + The Platform-Based Design Concept Taking Design Block Reuse to the Next Level Pre-Qualified/Verified Foundation-IP* Foundation Block + Reference Design MEM Hardware IP SW IP Application Space CPU FPGA Scaleable bus, test, power, IO, clock, timing architectures Processor(s), RTOS(es) and SW architecture Methodology / Flows: Programmable System-level performance evaluation environment *IP can be hardware (digital or analogue) or software. IP can be hard, soft or ‘firm’ (HW), source or object (SW) Foundry-Specific Pre-Qualification Rapid Prototype for End-Customer Evaluation SoC Derivative Design Methodologies Foundry Targetting Flow The Platform-Based Design Concept Platform Type Examples “Full Application HW/SW Platform” Examples: –TI OMAP –Philips nExperia, –Infineon MGold “Processor Centric” Examples: – ARM Micropack – ST100 Platform – Improv Jazz Improv JAZZ Platform “Communication Centric” Examples: –Palmchip –Sonics SONICs Architecture DMA SiliconBackplane™ (patented) { C CPU MEM DSP I MPEG O System House Requirements … exploring and developing on top of SoC Platforms Application Space Platform Based Design Objectives • Define the application instance to be implemented to satisfy product requirements defined by consumer Platform Specification • Specify the system platform together with suppliers accordingly • Evaluate top down different instances of SOC platforms System Platform Platform Design Space Exploration Architectural Space SOC Provider Requirements … designing SoC Platforms and Sub-systems Application Space Platform Based Design Objectives • Define the SOC platform instance so that multiple instances of applications can be mapped to the same system platform • Present this to system customers as SOC Design-Kit and optimally leverage economy of scale for SOC platform instance Platform Design Space Exploration System Platform Platform Specification • Provide bottom up instances of SOC platform for evaluation without disclosing the details of the IP Architectural Space The VCC Design Flow: An example of Function-Architecture CoDesign CADENCE CONFIDENTIAL VCC Front End Embedded System Requirements Functional IP C/C++ SDL SPW Simulink Platform Function Platform Architecture System Integration Performance Analysis and Platform Configuration Architecture IP CPU/DSP RTOS Bus, Memory HW SW Platform Configuration … at the un-clocked, timing-aware system level • Enabling communication within the SOC Design Chain • Design Space Exploration with abstracted Performance Models • Untimed Functional and Performance Verification • Integration Platform Design, Optimization and Configuration VCC Front End Functional Integration and Analysis Embedded System Requirements Functional IP C/C++ SDL SPW Simulink Platform Function Platform Architecture System Integration Performance Analysis and Platform Configuration Architecture IP CPU/DSP RTOS Bus, Memory HW SW Platform Configuration … at the un-clocked, timing-aware system level VCC Front End Define Architectural Options and Configuration Embedded System Requirements Functional IP C/C++ SDL SPW Simulink Platform Function Platform Architecture System Integration Performance Analysis and Platform Configuration Architecture IP CPU/DSP RTOS Bus, Memory HW SW Platform Configuration … at the un-clocked, timing-aware system level VCC Front End Define Function Architecture Mapping Embedded System Requirements Functional IP C/C++ SDL SPW Simulink Platform Function Platform Architecture System Integration Performance Analysis and Platform Configuration Architecture IP CPU/DSP RTOS Bus, Memory HW SW Platform Configuration … at the un-clocked, timing-aware system level VCC Front End Run Performance Analysis for Platform Configuration Embedded System Requirements Functional IP Platform Function C/C++ SDL SPW Simulink Cache Results Platform Architecture System Integration Performance Analysis and Platform Configuration Processor Load Architecture IP CPU/DSP RTOS Bus, Memory HW SW Platform Configuration … at the un-clocked, timing-aware system level Process Gant Chart Analysis VCC Backend • Linking System Level Design to Implementation – Fast track to prototyping – Fast track to software development – Design consistency through the design flow Communication Refinement, Integration & Synthesis Hardware Assembly Software Assembly Implementation Level Verification Synthesis / Place & Route etc. Design Export … after initial platform configuration through design refinement and communication synthesis VCC Backend Communication Refinement and Synthesis Communication Refinement Communication Synthesis VCC Model VCC Model to RTOS Protocol Component Abstract Token Abstract Token Communication Refinement, Integration & Synthesis Hardware Assembly Software Assembly Implementation Level Verification Synthesis / Place & Route etc. RTOS VCC Model RTOS to CPU Protocol Component Bus Slave to VCC Model Component CPU Bus Slave CPU to Bus Protocol Component Bus to Bus Slave Component Bus Bus Bus Model Design Export … after initial platform configuration through design refinement and communication synthesis VCC Backend Export to Implementation (Design and Test Bench) VCC System Exploration Communication Refinement Flow To Implementation Hardware Top-level System Test Bench Software on RTOS Communication Refinement, Integration & Synthesis Hardware Assembly Software Assembly Implementation Level Verification Synthesis / Place & Route etc. Design Export … after initial platform configuration through design refinement and communication synthesis VCC Flow Summary Embedded System Requirements Functional IP C/C++ SDL SPW Simulink Platform Function Platform Architecture System Integration Performance Analysis and Platform Configuration Communication Refinement, Integration & Synthesis Hardware Assembly Software Assembly Implementation Level Verification Synthesis / Place & Route etc. Architecture IP CPU/DSP RTOS Bus, Memory HW SW Platform Configuration … at the un-clocked, timing-aware system level Design Export … after initial platform configuration through design refinement and communication synthesis Performance Modeling … using Abstraction CADENCE CONFIDENTIAL Functional Simulation Gate Level Functional Simulation Function A 0 0 1 1 B OUT 0 1 1 0 0 0 1 0 • Gate switching defines functionality • Combination of gate functionality defines “functionality” of the design • Simulation slow in complex systems as huge amounts of events are to be processed Functional Simulation Using VCC at the System-Level Functional Simulation • Function of system blocks executed SPW StateCharts – General Descriptions – C, C++, State Charts, OMI – Application specific SDL – SPW, Telelogic SDL, Matlab Simulink, ETAS Ascet Simulink A 0 0 1 1 Functio n B OUT 0 1 1 0 0 0 1 0 C++ C • Functional execution defined as “fire and return” with a OMI 4.0 compliant discrete event simulation infrastructure • Simulation is as fast as the abstract, un-timed models simulate Performance Simulation Gate Level Functional Simulation • Gate switching functionality Function A 0 0 1 1 B OUT 0 1 1 0 0 0 1 0 Performance Dt Performance Simulation SDF and Gate Level Library • functionality annotated with intrinsic gate delay • interconnect delay modeled from capacity Performance InterConnect Capacity Refinement • SDF data is refined after layout is carried out VCC Performance Simulation System-Level Block Performance Modeling Performance Simulation Performance • functionality annotated with intrinsic delay models • Delay Script and Inline Models, refined after implementation Interleaver Dt IP Functional Model A 0 0 1 1 Functio n B OUT 0 1 1 0 0 0 1 0 Performance Scripted Delay Model Forward Error Correction FEC() { f = x.read(); // FEC function here y.write(r); } Inline Delay Model Dt IP Functional Model Forward Error Correction FEC on CPU FEC in slow HW FEC() { // FEC_ip_implem f = x.read(); FEC in fast HW delay() { // FEC_ip_implem // FEC function here input(x); delay() Delay { Script y.write(r); run();input(x); // FEC_ip_implem } delay(200*cps); run();delay() { output(y); delay(128*cps); input(x); } output(y); run(); } delay(64*cps); output(y); } Annotated IP Functional Model FEC() { f = x.read(); // FEC function part A here __DelayCycles(60*cps); // FEC function part B here __DelayCycles(78*cps); // FEC function part C here __DelayCycles(23*cps); y.write(r); } VCC Performance Simulation System Level Block Interconnect Performance Modeling Post() from Behavior 1 Sender Value()/Enable() from Behavior 2 Shared Memory Communication Pattern Receiver RTOS Standard C Library CPU A 0 0 1 1 Functio n B OUT 0 1 1 0 0 0 1 0 Pattern Services Memory Access InterConnect Capacity Memory CPU Port Architecture Services Performanc e RAM Bus Adapter RAM Port Slave Adapter ASIC Port Bus Adapter Bus Bus Arbiter VCC Performance Simulation Enabled through Architecture Services in VCC A B Post(5) Value() Semaphore Protected SemProt_Send SemProt_Recv SemProt_Send mutex_lock; memcpy; setEnabled wait; memcpy; signal signal User Visible RTOS SwMutexes write MemoryAccess BusMaster Pattern Services read Architecture Services CPU Mem SlaveAdapter busRequest BusArbiter arbiterRequest/Release busIndication busIndication VCC Performance Modeling … … the System Level extension of SDF Classical Gate Level Technology Function A 0 0 1 1 B OUT 0 1 1 0 0 0 1 0 VCC System Level Technology IP Block Performance Performance Dt SDF and Gate Level Library Function C, C++, SPW, SDL, Simulink, Statecharts Performance System Level Library Interleaver Dt SPW Interconnect Performance InterConnect Capacity StateCharts IP Block Interconnect Performance SDL Simulink C++ C How to get the performance numbers… IP Block Performance Modeling Top Down Flow • In a pure top down design flow the performance models are “Design Requirements” for functional models • They are refined using bottom up techniques in due course throughout the project Bottom Up Flow • SOC Provider characterizes IP portfolio, e.g. of a Integration platform – using HDL model simulation – using software simulation on ISS – using benchmarking on SOC IP Functional Model Scripted Delay Model Forward Error Correction FEC() { f = x.read(); // FEC function here y.write(r); } IP Functional Model Forward Error Correction FEC on CPU FEC in slow HW FEC() { // FEC_ip_implem f = x.read(); FEC in fast HW // {FEC_ip_implem // FECdelay() function here input(x); delay() {Delay Script y.write(r); run(); input(x); } // FEC_ip_implem delay(200*cps); run(); delay() { output(y); delay(128*cps); input(x); } output(y); run(); } delay(64*cps); output(y); } Inline Delay Model Annotated IP Functional Model FEC() { f = x.read(); // FEC function part A here __DelayCycles(60*cps); // FEC function part B here __DelayCycles(78*cps); // FEC function part C here __DelayCycles(23*cps); y.write(r); } How to get the performance numbers… IP Block Interconnect Performance Modeling Top Down Flow • Datasheets for architectural IP information are entered in parameters for architectural services • Can be done fast by System Integrator without SOC Provider • Refinement with SOC Provider models Bottom Up Flows • Architectural IP is profiled using HDL simulation, ISS or silicon and data is entered in VCC architectural services Value()/Enable() from Behavior 2 Post() from Behavior 1 Shared Memory Communication Pattern Sender Receiver RTOS Standard C Library CPU Memory Access RAM Memory CPU Port Bus Adapter RAM Port Slave Adapter ASIC Port Bus Adapter Bus Bus Arbiter Pattern Services Architecture Services How to get the performance numbers… Software Estimation for ANSI C code (“Whitebox C”) • Estimation of software performance prior to implementation • CPU characterized as Virtual Processor Model – Using a Virtual Machine Instruction Set – Used for dynamic control SW estimation during performance simulation taking into account bus loading, memory fetching, and register allocation • Value – True co-design: SW estimation using annotation into C Code (as opposed to to simulation in instruction simulators used in co-verification) – Good for early system scheduling, processor load estimation – Two orders of magnitude faster than ISS – Greater than 80 percent accuracy – Enables pre-implementation decision but is not a verification model How to get the performance numbers… Virtual Processor Model Characterization Methods Data Book Approach – CPU data book information to count cycles and estimate VIM Calibration Suite using “Best Fit” – Run Calibration Suite on VIM and ISS – Solve a set of linear equations to minimize difference Application Specific Calibration Suite – using the “Best Fit” method but use application specific routines for automotive, wireless telecom, multimedia etc. Exact Count on ISS – cycle counts exactly derived from ISS run – Filter specific commands out (e.g. OPi etc.) How to get the performance numbers… Software Estimation for ANSI C code (“Whitebox C”) Virtual Machine Instruction Set Model LD,3.0 LI,1.0 ST,3.0 OP.c,3.0 OP.s,3.0 OP.i,4.0 OP.l,4.0 OP.f,4.0 OP.d,6.0 MUL.c,9.0 MUL.s,10.0 MUL.i,18.0 MUL.l,22.0 MUL.f,45.0 MUL.d,55.0 DIV.c,19.0 DIV.s,110.0 DIV.i,118.0 DIV.l,122.0 DIV.f,145.0 DIV.d,155.0 IF,5.0 GOTO,2.0 SUB,19.0 RET,21.0 Load from Data Memory Load from Instr. Mem. Store to Data Memory Simple ALU Operation Complex ALU Operation Test and Branch Unconditional Branch Branch to Subroutine Return from Subroutine How to get the performance numbers… Software Estimation for ANSI C code (“Whitebox C”) ANSI C Input char *event; int proc; if (*(event+proc) & 0x1: 0x0) ... Assembler ld ld add ld ldi and cmp br ba Whitebox C declare ports tmp=b+c c=f(d) MT update D1 Compile generated C and run natively Performance Estimation #event,R1 #proc,R2 R1,R2,R3 (R3),R4 #0x1, R5 R4, R5, R6 R0, R6, R7 R7, LTRUE LFALSE tmp r=(s<<*a) a=r+m*x y=a*c+b MT update D2+D3 write B y Analyse ld ld op ld li op ts -br basic blocks compute delays D1 Generate new C !tmp with delay counts Architecture Characterization D2 D3 Virtual Processor Model f6(y) MT update D4 return D4 Architectural Services Example CADENCE CONFIDENTIAL Architecture Service • The service is the element that defines the functionality of an architecture • A service is coded in C++ and performs a specific role to model architecture, for example: – bus arbitration – memory access – interrupt propagation – etc. Example of Services ASIC Behavior Post Pattern Sender Bus BusMaster BusArbiter Mem BusSlave Memory Example of Services • Behavior calls Post, i.e., send a communication • Pattern hears Post and directs ASIC block’s BusMaster to send a communication • BusMaster asks the Bus Block’s BusArbiter for use of the bus • BusArbiter grants the bus, so communication can go to Memory Block • Memory Block’s BusSlave receives communication and forwards to memory • Memory stores communication. Categories of Services • Pattern Service – services that coordinate the communication of architecture services • Architecture Service – services that define the functionality of architecture • Internal Service – generic, default service used during functional simulation Pattern Service • A pattern coordinates architectural services that collectively model a communication path from sender to receiver • Patterns are composed of a sender service and a receiver service – Sender service defines Post – Receiver service defines Enabled/Value Post Pattern Sender Enabled/ Pattern Value Receiver • Both the sender and receiver service direct the actions of architecture services to send/receive communication Basic Example • Let’s assume two behaviors. • b1 and b2 talk to each other: – b1 says Post; b2 says Value – and visa versa Basic Example (cont) • What does it mean for b1 to talk to b2? • What does it mean for b1 to say Post? • What does it mean for b2 to say Value? • We should consider an architecture to give meaning to b1 and b2. • We should consider how the behavior blocks map to the architecture. Basic Example (cont) • Let’s assume the following architecture: Basic Example (cont) • Here we map the behavior to the architecture: Basic Example (cont) • What do we see in the mapping diagram? – b1 is mapped to software. – b2 is mapped to hardware. – b1 to b2 communication is set to Shared Memory. – b2 to b1 communication is set to to Interrupt Register Mapped. • For simplicity’s sake, we’re focusing on b1-to-b2 communication. – b2 to b1 will be ignored for now. • If b1 talks to b2, how does that look when mapped to an architecture? – What happens when b1 says Post? – What happens when b2 says Value? – Note b1 to b2 is shared memory communication. Basic Example (cont) • Using Shared Memory, we have the following sequence of communication: 1. b1 writes to memory: b1 RTOS CPU Bus Mem 2. b2 reads from memory: b2 ASIC Bus Mem Basic Example (cont) • So b1 talks to b2 through the various architecture components: – b1 says Post and that becomes a write to memory. – b2 says Value and that becomes a read from memory. • What is the underlying mechanism that propagates Post/Value through the architecture? – It’s something called the “service”. Commercial Example ST Microelectronics IP models support codesign efforts By Benoit Clement System-Level Design Engineer Doha Benjelloun System-Level Design Engineer Co-Design Methodology for Systems &Architecture (CMSA) STMicroelectronics, Grenoble, France http://www.eetimes.com/story/OEG20010913S0069 Example of Co-Design – Distributed Automotive SW CADENCE CONFIDENTIAL Distributed Automotive Applications over networks – “Software-Software Codesign” • Electronic Control Units (ECU’s) • Standard buses (TTP, CAN, FlexRay) • Standard Platforms Current Design Practices Requirements Matlab Engine Control f1 ASCET f3 Gear-Box Control f2 specification “zero time assumption” f4 ECU-1 ECU-2 CAN/TTP-bus ECU-3 .c .c analysis “functional network” .c ... Architecture system design “real world assumption” implementation “automatic target code gen.” integration & calibration “step into a real car” production & after sales “handling at the garage” • Integration is done too late In the car • Tools are PER-ECU – conservative, costly, no tradeoffs Virtual Integration Platform for Distributed Automotive Applications Development Process IP’s Software Components C-Code Matlab C++ Architectural Models Buses Buses CPUs Buses Operating Systems Analysis System Behavior Specification ASCET Implementation ASCET Calibration f1 System Architecture f2 f3 Mapping Performance Simulation Refinement After Sales Service Evaluation of Architectural and Partitioning Alternatives Scenarios for SW-driven co-development f f f f f ?? f f f f ?? f f f f f f f f f ?? f f f f f f f f f ASCET-SD imported project in VCC Message1 Message2 Message3 Message4 Interrupt IntrptReceiveTask1 These are behavioral memories HW_Intrpt1 TestBench These are behavioral HWIntrpt memories HW_Intrpt2 GlobalVariable HWIntrp HWIntrpt1 Timer10msec ProjectA SWIntrpt HWIntrpt2 ReceiveSendTask1 Interrupt IntrptSendTask1 ReceiveSendTask5 ReceiveSendTask3 The test-bench can include Matlab imported models This is the ASCET imported Project as well as VCC authored models SW_Interrupt1 HWIntrpt1 Timer20ms SW_Interrupt1 HW_Interrupt1 Module0 Module2 ReceiveSendTask6 Process8 SW_Interrupt2 SW_Interrupt2 SW_Interrupt Timer30ms HWIntrpt2 HW_Interrupt SW_Interrupt Module1 These are the modules of the ASCET project These are the processes for the protected variables HW_Interrupt Process9 GlobalVariable2 These are behavioral timers HWIntrpt SWIntrpt ReceiveSendTask7 ReceiveSendTas ReceiveSendTask4 Process10 Universal Communications Model of Bus Behavioral Diagram Behavioral Memory 1 Module A Module B ECU 1 RTOS ECU 1 RTOS PPC internal bus Mem Bus Controller Architectural Bus Memory Peak Load Broadcast Bus PPC internal bus Mem Bus Controller Example Design Flow (1): Power Window • Definition of a behavioral diagram: Import of functional components (software projects and modules) BrakeSwitchFil Timer BTSetUp Manipulator AquireSignal BrakeOutFL BrakeOutFR PedalSensor1Fil Base Brake & ABS AquireSignal Manipulator PedalSensor2Fil BrakeOutRL AquireSignal PedalSensor3Fil Manipulator AquireSignal BrakeOutRR HandBrakeSwitchFil Manipulator AquireSignal ClampForceFLFil AquireSignal ClampForceFRFil AquireSignal ClampForceRLFil AquireSignal Base Steering ClampForceRRFil SteeringOut1 Manipulator AquireSignal SteeringOut2 Manipulator SteeringWheelAngle1Fil AquireSignal BrakeSwitch SteeringWheelAngle2Fil AquireSignal PedalSensor1 SteeringWheelAngle3Fil PedalSensor2 AquireSignal Uniform Pulses Uniform Pulses Uniform Pulses PedalSensor3 SteeringWheelAngle4Fil AquireSignal HandBrakeSwitch ClampForceFL RackPosition1Fil AquireSignal ClampForceFR Handwheel Feedback RackPosition2Fil ClampForceRL AquireSignal Trigger ClampForceRR SteeringWheelTorqueOut1 Manipulator BrakeActuator RackPosition3Fil BrakeActuatorOut AquireSignal SteeringWheelAngle1 SteeringWheelTorqueOut2 Trigger Manipulator RackPosition4Fil SteeringWheelAngle2 Trigger AquireSignal BrakeActuator SteeringWheelAngle3 BrakeActuatorOut DbW_TopBlock SteeringWheelAngle4 Trigger DriverSteer DriverSteer Driver DriverBrake DriverBrake DriverGas DriverGas DriverClutch Trigger 2 Track Vehicle Model RackPosition1 AquireSignal BrakeActuatorOut RackPosition2 SteeringWheelTorque2Fil AquireSignal RackPosition3 Master1BrakeFL Trigger DriverClutch SteeringWheelTorque1Fil BrakeActuator RackPosition4 SteeringWheelTorque3Fil BrakeActuator AquireSignal Master1BrakeFR BrakeActuatorOut DriverGear DriverGear SteeringWheelTorque1 Master1BrakeRL SteeringWheelTorque2 Trigger Master1BrakeRR TieRodForce1Fil SteerActuator SteeringWheelTorque3 SteerActuatorOut AquireSignal Master1SteeringAngleOut TieRodForce2Fil TieRodForce1 AquireSignal Trigger BrakeActuatorFR SteerActuator TieRodForce2 Master Controller Master1SteeringTorqueOut SteerActuatorOut TieRodForce3Fil BrakeActuatorFL vel_veh_master_1 AquireSignal TieRodForce3 BrakeActuatorRL Master1Warning SpeedFL BrakeActuatorRR HandWheelTorqueActuator BrakeDiagnosis SpeedFLFil SteeringActuator2 SpeedFR AquireSignal HandWheelTorqueActuator SteeringActuator1 SpeedRL Master2BrakeFL SpeedFRFil AquireSignal SpeedRR Master2BrakeFR SteeringDiagnosis SpeedRLFil WarningLightYellow YawRate AquireSignal LateralAcceleration SpeedRRFil WarningLightYellow AquireSignal Master Controller Master2BrakeRL Master2BrakeRR Master2SteeringAngleOut HWFeedbackDiagnosis CurrentBatterie1 Uniform Pulses WarningLightRed YawRateFil VoltageBatterie1 Trigger Master2SteeringTorqueOut AquireSignal vel_veh_master_2 WarningLightRed BordnetStimulator CurrentBatterie2 LateralAccelerationFil AquireSignal Master2Warning VoltageBatterie2 CurrentAlternator VoltageAlternator CurrentBatterie1Fil AquireSignal Diagnosis Battery1Diagnosis VoltageBatterie1Fil ComputePowerManagement AquireSignal CurrentBatterie2Fil AquireSignal Battery2Diagnosis ComputePowerManagement AquireSignal VoltageBatterie2Fil Diagnosis CurrentAlternatorFil AquireSignal AlternatorDiagnosis ComputePowerManagement VoltageAlternatorFil AquireSignal Design Flow (2) • Generation of an ideal communication between the functional components – No delay or error handling considered. – Functional co-verification Design Flow (3) • Creation of an architectural diagram in VCC PPC RTOS TTPController PPC_TTP PPC RTOS TTPController Channel1 PPC_TTP Channel2 PPC RTOS TTPController Channel1 PPC_TTP Channel2 PPC RTOS TTPController Channel1 PPC_TTP Channel2 PPC RTOS TTPController Channel1 PPC_TTP Channel2 PPC RTOS TTPController Channel1 PPC_TTP Channel2 TTPController PPC_TTP Channel1 Channel1 PPC_TTP Channel2 RTOS PPC TTPController Channel1 PPC_TTP Channel2 RTOS PPC TTPController Channel1 PPC_TTP Channel2 RTOS PPC TTPController Channel1 PPC_TTP Channel2 RTOS PPC TTPController Channel1 PPC_TTP Channel2 RTOS PPC TTPController Channel1 Channel2 RTOS Channel1 Channel2 Channel2 TTP Channel 2 PPC_TTP PPC RTOS PPC TTPController Design Flow (4) • Mapping the software modules onto the ECU – Either retaining the original per-ecu mapping from ASCET-SD or creating a new one BrakeSwitch PedalSensor1 PedalSensor2 Uniform Pulses Uniform Pulses Uniform Pulses PedalSensor3 Timer Timer Timer BTSetUp BTSetUp BTSetUp HandBrakeSwitch ClampForceFL ClampForceFR force_clp_f_base_des force_clp_f_base_des force_clp_f_base_des ClampForceRL ComputeBrakeCommand ComputeBrakeCommand ComputeBrakeCommand Trigger ClampForceRR BrakeActuator BrakeActuatorOut force_clp_r_base_des force_clp_r_base_des force_clp_r_base_des SteeringWheelAngle1 DiagnosisBrakePedal Trigger DiagnosisBrakePedal DiagnosisBrakePedal long_acc_veh_des long_acc_veh_des long_acc_veh_des SteeringWheelAngle2 Trigger BrakeActuator SteeringWheelAngle3 BrakeActuatorOut DbW_TopBlock force_clp_fl_ABS_des force_clp_fl_ABS_des force_clp_fl_ABS_des SteeringWheelAngle4 Arbiter_Br Arbiter_Br Arbiter_Br Trigger DriverSteer DriverSteer Driver DriverBrake DriverBrake DriverGas DriverGas DriverClutch Trigger 2 Track Vehicle Model RackPosition1 BrakeActuator force_clp_fr_ABS_des BrakeActuatorOut force_clp_fr_ABS_des force_clp_fr_ABS_des RackPosition2 Comp_Cmd_ABS_Br Comp_Cmd_ABS_Br Comp_Cmd_ABS_Br RackPosition3 force_clp_rl_ABS_des force_clp_rl_ABS_des force_clp_rl_ABS_des Trigger DriverClutch BrakeActuator RackPosition4 BrakeActuatorOut DriverGear DriverGear SteeringWheelTorque1 force_clp_rr_ABS_des force_clp_rr_ABS_des force_clp_rr_ABS_des SteeringWheelTorque2 Trigger SteerActuator SteeringWheelTorque3 SteerActuatorOut TieRodForce1 Timer BTSetUp Trigger BrakeActuatorFR SteerActuator TieRodForce2 Timer BTSetUp SteerActuatorOut BrakeOutFL_channel1 BrakeActuatorFL TieRodForce3 Base Brake & ABS one channel BrakeActuatorRL SpeedFL BrakeActuatorRR HandWheelTorqueActuator SteeringActuator2 BrakeOutFR_channel1 BrakeOutRL_channel1 Vote Brake Comand SpeedFR force_clp_f_base_des HandWheelTorqueActuator SteeringActuator1 BrakeOutRR_channel1 SpeedRL ComputeBrakeCommand SpeedRR force_clp_r_base_des WarningLightYellow BrakeOutFL_channel2 YawRate DiagnosisBrakePedal Base Brake & ABS one channel LateralAcceleration WarningLightYellow long_acc_veh_des BrakeOutFR_channel2 Vote Brake Comand BrakeOutRL_channel2 force_clp_fl_ABS_des CurrentBatterie1 Arbiter_Br Uniform Pulses WarningLightRed BrakeOutRR_channel2 VoltageBatterie1 Trigger force_clp_fr_ABS_des WarningLightRed BordnetStimulator CurrentBatterie2 Comp_Cmd_ABS_Br BrakeOutFL_channel3 VoltageBatterie2 force_clp_rl_ABS_des Base Brake & ABS one channel CurrentAlternator VoltageAlternator BrakeOutFR_channel3 Vote Brake Comand force_clp_rr_ABS_des BrakeOutRL_channel3 BrakeOutRR_channel3 Timer BTSetUp BrakeOutFL_channel4 BrakeSwitchFil Timer BTSetUp Base Brake & ABS one channel Manipulator AquireSignal BrakeOutFL BrakeOutFR_channel4 Vote Brake Comand BrakeOutRL_channel4 VotedSteeringWheelAngle Diagnosis_Lateral_Sensors BrakeOutRR_channel4 ComputeSteeringCommand VotedRackPosition BrakeOutFR PedalSensor1Fil Base Brake & ABS AquireSignal Manipulator PedalSensor2Fil BrakeOutRL AquireSignal Timer BTSetUp Timer PedalSensor3Fil Manipulator AquireSignal BTSetUp Base Steering one channel BrakeOutRR HandBrakeSwitchFil SteeringActuatorOut_channel1 Manipulator AquireSignal VotedSteeringWheelAngle Diagnosis_Lateral_Sensors ComputeSteeringCommand ClampForceFLFil VotedRackPosition AquireSignal ClampForceFRFil Base Steering one channel AquireSignal ClampForceRLFil SteeringActuatorOut_channel2 Timer Vote_Cmp_Rack_Act BTSetUp AquireSignal Base Steering ClampForceRRFil SteeringOut1 Manipulator AquireSignal VotedSteeringWheelAngle SteeringOut2 Manipulator SteeringWheelAngle1Fil Diagnosis_Lateral_Sensors Base Steering one channel AquireSignal SteeringWheelAngle2Fil ComputeSteeringCommand SteeringActuatorOut_channel3 VotedRackPosition AquireSignal SteeringWheelAngle3Fil AquireSignal Vote_Cmp_Rack_Act Timer BTSetUp SteeringWheelAngle4Fil AquireSignal Base Steering one channel RackPosition1Fil AquireSignal Handwheel Feedback RackPosition2Fil AquireSignal SteeringActuatorOut_channel4 VotedSteeringWheelAngle SteeringWheelTorqueOut1 Diagnosis_Lateral_Sensors Manipulator ComputeSteeringCommand VotedRackPosition RackPosition3Fil AquireSignal SteeringWheelTorqueOut2 Timer Manipulator BTSetUp RackPosition4Fil Timer BTSetUp AquireSignal AquireSignal SteeringWheelTorque1Fil Handwheel Feedback one channel SteeringWheelTorque2Fil AquireSignal Master1BrakeFL SteeringWheelTorque3Fil AquireSignal SteeringWheelTorqueOut_channel1 VotedSteeringWheelTorque Diagnosis Feedback Sensors ComputeSteeringTorqueCommand Master1BrakeFR VotedTieRodForce Vote HW Feedback Master1BrakeRL Handwheel Feedback one channel Master1BrakeRR TieRodForce1Fil AquireSignal Master1SteeringAngleOut TieRodForce2Fil AquireSignal Master Controller TieRodForce3Fil SteeringWheelTorqueOut_channel2 Timer BTSetUp Master1SteeringTorqueOut Vote HW Feedback vel_veh_master_1 AquireSignal Handwheel Feedback one channel Master1Warning BrakeDiagnosis SpeedFLFil AquireSignal SteeringWheelTorqueOut_channel3 VotedSteeringWheelTorque Master2BrakeFL SpeedFRFil Diagnosis Feedback Sensors AquireSignal ComputeSteeringTorqueCommand Master2BrakeFR VotedTieRodForce SteeringDiagnosis SpeedRLFil AquireSignal SpeedRRFil AquireSignal Master Controller Master2BrakeRL Master2BrakeRR Master2SteeringAngleOut HWFeedbackDiagnosis Timer BTSetUp YawRateFil Master2SteeringTorqueOut AquireSignal vel_veh_master_2 LateralAccelerationFil AquireSignal Master2Warning Cyclo Static Scheduler CurrentBatterie1Fil AquireSignal Cyclo Static Scheduler Cyclo Static Scheduler Static Priority Scheduler Static Priority Scheduler Cyclo Static Scheduler ComputePowerManagement Cyclo Static Scheduler Cyclo Static Scheduler Static Priority Scheduler Diagnosis Battery1Diagnosis VoltageBatterie1Fil Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler VotedSteeringWheelTorque Static Priority Scheduler Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler ComputeSteeringTorqueCommand CurrentBatterie2Fil InterruptBus AquireSignal InterruptBus Simple ASIC Battery2Diagnosis InterruptBus DataBus InternalDataBus InterruptBus Simple ASIC CPU InterruptBus InterruptBus InterruptBus InternalDataBus DataBus Simple ASIC CPU DataBus InternalDataBus CPU Simple ASIC InterruptBus InterruptBus InternalDataBus DataBus CPU Simple ASIC InterruptBus InternalDataBus DataBus CPU InterruptBus Simple ASIC InterruptBus InternalDataBus ComputePowerManagement ExternalBus ExternalBus AquireSignal ExternalBus ExternalBus ExternalBus ExternalBus VoltageBatterie2Fil Diagnosis CurrentAlternatorFil AquireSignal ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort AlternatorDiagnosis ComputePowerManagement VoltageAlternatorFil AquireSignal ECU_2Tasks_1BusCha ECU_2Tasks_1BusCha ExternalBusPort ECU_2Tasks_1BusCha Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler InterruptBus InterruptBus Cyclo Static Scheduler InterruptBus InternalDataBus ExternalBus DataBus CPU Simple ASIC ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusChan ExternalBusPort ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler InternalDataBus DataBus Static Priority Scheduler Cyclo Static Scheduler InterruptBus Cyclo Static Scheduler InterruptBus InterruptBus InterruptBus InterruptBus CPU Simple ASIC InternalDataBus DataBus CPU Simple ASIC InternalDataBus DataBus CPU Simple ASIC InternalDataBus ExternalBus ExternalBus ExternalBusPort ExternalBusPort InterruptBus InterruptBus Simple ASIC ECU_2Tasks_1BusChan ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusChan ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusCha ExternalBusPort Cyclo Static Scheduler ECU_2Tasks_1BusChan ExternalBusPort ExternalBus ExternalBus ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort DataBus CPU Diagnosis Feedback Sensors VotedTieRodForce AquireSignal DataBus CPU Design Flow(5) • Generation of the CPU scheduling – Either manually or automatically in case the original scheduling is preserved Hierarchical Scheduler Single Task Scheduler Single Task Scheduler Single Task Scheduler Parent Scheduler Design Flow (6) • Computation Performance Simulation – No communication performance estimation – Co-verification of Computational Resource ‘fit’ Design Flow(7) • Design iterations – Re-distribution of the functionality and tuning of the scheduling BrakeSwitch PedalSensor1 PedalSensor2 Uniform Pulses Uniform Pulses Uniform Pulses PedalSensor3 Timer Timer Timer BTSetUp BTSetUp BTSetUp HandBrakeSwitch ClampForceFL ClampForceFR C h an ne l1 h an n el 2 ClampForceRL l ClampForceRR ha nn el 2 Trigger BrakeActuator h an ne l1 BrakeActuatorOut SteeringWheelAngle1 ha nn el 1 force_clp_f_base_des ComputeBrakeCommand force_clp_r_base_des force_clp_f_base_des force_clp_f_base_des ComputeBrakeCommand ComputeBrakeCommand force_clp_r_base_des force_clp_r_base_des DiagnosisBrakePedal Trigger DiagnosisBrakePedal DiagnosisBrakePedal long_acc_veh_des long_acc_veh_des long_acc_veh_des SteeringWheelAngle2 Trigger BrakeActuator SteeringWheelAngle3 BrakeActuatorOut DbW_TopBlock force_clp_fl_ABS_des force_clp_fl_ABS_des force_clp_fl_ABS_des SteeringWheelAngle4 Arbiter_Br Arbiter_Br Arbiter_Br Trigger DriverSteer Trigger DriverSteer Driver 2 Track Vehicle Model DriverBrake DriverBrake DriverGas DriverGas DriverClutch RackPosition1 BrakeActuator force_clp_fr_ABS_des BrakeActuatorOut force_clp_fr_ABS_des force_clp_fr_ABS_des RackPosition2 Comp_Cmd_ABS_Br Comp_Cmd_ABS_Br Comp_Cmd_ABS_Br RackPosition3 force_clp_rl_ABS_des force_clp_rl_ABS_des force_clp_rl_ABS_des Trigger DriverClutch BrakeActuator RackPosition4 BrakeActuatorOut DriverGear DriverGear SteeringWheelTorque1 force_clp_rr_ABS_des force_clp_rr_ABS_des force_clp_rr_ABS_des SteeringWheelTorque2 Trigger SteerActuator SteeringWheelTorque3 SteerActuatorOut TieRodForce1 Timer BTSetUp Trigger BrakeActuatorFR SteerActuator TieRodForce2 Timer BTSetUp SteerActuatorOut BrakeOutFL_channel1 BrakeActuatorFL TieRodForce3 Base Brake & ABS one channel BrakeActuatorRL SpeedFL BrakeActuatorRR HandWheelTorqueActuator SteeringActuator2 BrakeOutFR_channel1 BrakeOutRL_channel1 Vote Brake Comand SpeedFR force_clp_f_base_des HandWheelTorqueActuator SteeringActuator1 BrakeOutRR_channel1 SpeedRL ComputeBrakeCommand SpeedRR force_clp_r_base_des WarningLightYellow BrakeOutFL_channel2 YawRate DiagnosisBrakePedal Base Brake & ABS one channel LateralAcceleration WarningLightYellow long_acc_veh_des BrakeOutFR_channel2 Vote Brake Comand BrakeOutRL_channel2 force_clp_fl_ABS_des CurrentBatterie1 Arbiter_Br Uniform Pulses WarningLightRed BrakeOutRR_channel2 VoltageBatterie1 Trigger force_clp_fr_ABS_des WarningLightRed BordnetStimulator CurrentBatterie2 Comp_Cmd_ABS_Br BrakeOutFL_channel3 VoltageBatterie2 force_clp_rl_ABS_des Base Brake & ABS one channel CurrentAlternator VoltageAlternator BrakeOutFR_channel3 Vote Brake Comand force_clp_rr_ABS_des BrakeOutRL_channel3 BrakeOutRR_channel3 Timer BTSetUp BrakeOutFL_channel4 BrakeSwitchFil Timer Base Brake & ABS one channel Manipulator AquireSignal BTSetUp C h an ne l1 C ha nn el 2 C BrakeOutFL BrakeOutFR_channel4 Vote Brake Comand BrakeOutRL_channel4 VotedSteeringWheelAngle Diagnosis_Lateral_Sensors BrakeOutRR_channel4 ComputeSteeringCommand VotedRackPosition BrakeOutFR PedalSensor1Fil Base Brake & ABS AquireSignal Manipulator PedalSensor2Fil BrakeOutRL AquireSignal Timer BTSetUp Timer PedalSensor3Fil Manipulator AquireSignal BTSetUp Base Steering one channel BrakeOutRR HandBrakeSwitchFil SteeringActuatorOut_channel1 Manipulator AquireSignal VotedSteeringWheelAngle Diagnosis_Lateral_Sensors ComputeSteeringCommand ClampForceFLFil VotedRackPosition AquireSignal ClampForceFRFil Base Steering one channel AquireSignal ClampForceRLFil SteeringActuatorOut_channel2 Timer Vote_Cmp_Rack_Act BTSetUp AquireSignal Base Steering ClampForceRRFil SteeringOut1 Manipulator AquireSignal VotedSteeringWheelAngle SteeringOut2 Manipulator SteeringWheelAngle1Fil Diagnosis_Lateral_Sensors Base Steering one channel AquireSignal SteeringWheelAngle2Fil ComputeSteeringCommand SteeringActuatorOut_channel3 VotedRackPosition AquireSignal SteeringWheelAngle3Fil AquireSignal Vote_Cmp_Rack_Act Timer BTSetUp SteeringWheelAngle4Fil AquireSignal Base Steering one channel RackPosition1Fil AquireSignal Handwheel Feedback RackPosition2Fil AquireSignal SteeringActuatorOut_channel4 VotedSteeringWheelAngle SteeringWheelTorqueOut1 Diagnosis_Lateral_Sensors Manipulator ComputeSteeringCommand VotedRackPosition RackPosition3Fil AquireSignal SteeringWheelTorqueOut2 Timer Manipulator BTSetUp RackPosition4Fil Timer BTSetUp AquireSignal AquireSignal SteeringWheelTorque1Fil Handwheel Feedback one channel SteeringWheelTorque2Fil AquireSignal Master1BrakeFL SteeringWheelTorque3Fil AquireSignal SteeringWheelTorqueOut_channel1 VotedSteeringWheelTorque Diagnosis Feedback Sensors ComputeSteeringTorqueCommand Master1BrakeFR VotedTieRodForce Vote HW Feedback Master1BrakeRL Handwheel Feedback one channel Master1BrakeRR TieRodForce1Fil AquireSignal Master1SteeringAngleOut Master Controller TieRodForce2Fil AquireSignal TieRodForce3Fil SteeringWheelTorqueOut_channel2 Timer BTSetUp Master1SteeringTorqueOut Vote HW Feedback vel_veh_master_1 AquireSignal SpeedFLFil Handwheel Feedback one channel l Master1Warning l l BrakeDiagnosis AquireSignal SteeringWheelTorqueOut_channel3 VotedSteeringWheelTorque Master2BrakeFL SpeedFRFil Diagnosis Feedback Sensors AquireSignal ComputeSteeringTorqueCommand Master2BrakeFR VotedTieRodForce SteeringDiagnosis SpeedRLFil Master Controller AquireSignal SpeedRRFil AquireSignal Master2BrakeRL Master2BrakeRR Master2SteeringAngleOut HWFeedbackDiagnosis Timer BTSetUp YawRateFil Master2SteeringTorqueOut AquireSignal vel_veh_master_2 LateralAccelerationFil AquireSignal Master2Warning Cyclo Static Scheduler CurrentBatterie1Fil AquireSignal Cyclo Static Scheduler Cyclo Static Scheduler Static Priority Scheduler Diagnosis Battery1Diagnosis Cyclo Static Scheduler Cyclo Static Scheduler Static Priority Scheduler Static Priority Scheduler Cyclo Static Scheduler ComputePowerManagement VoltageBatterie1Fil Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler VotedSteeringWheelTorque Static Priority Scheduler Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler ComputeSteeringTorqueCommand CurrentBatterie2Fil InterruptBus AquireSignal InterruptBus Simple ASIC Battery2Diagnosis InterruptBus DataBus InternalDataBus InterruptBus Simple ASIC CPU InterruptBus InterruptBus InterruptBus InternalDataBus DataBus Simple ASIC CPU DataBus InternalDataBus CPU Simple ASIC InterruptBus InterruptBus InternalDataBus DataBus CPU Simple ASIC InterruptBus InternalDataBus DataBus CPU InterruptBus Simple ASIC InterruptBus InternalDataBus ComputePowerManagement ExternalBus ExternalBus ExternalBus ExternalBus ExternalBus ExternalBus VoltageBatterie2Fil AquireSignal Diagnosis CurrentAlternatorFil AquireSignal ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort AlternatorDiagnosis ComputePowerManagement VoltageAlternatorFil AquireSignal ECU_2Tasks_1BusCha ECU_2Tasks_1BusCha ExternalBusPort ECU_2Tasks_1BusCha Cyclo Static Scheduler Static Priority Scheduler InterruptBus PPC TTPController C ha nn el 2 RTOS PPC RTOS TTPController PPC RTOS PPC TTPController C h an n el 1 RTOS PPC RTOS TTPController C PPC RTOS TTPController C ha nn el 1 C C ha nn el 2 C PPC_TTP Channel1 PPC_TTP Channel1 PPC_TTP Channel1 PPC_TTP Channel1 PPC_TTP Channel1 PPC_TTP Channel1 Channel2 Channel2 Channel2 Channel2 Channel2 Channel2 PPC_TTP Channel1 PPC_TTP Channel1 PPC_TTP Channel1 PPC_TTP Channel1 Channel2 Channel2 Channel2 Channel2 TTP Channel 2 PPC TTPController C h an n e1 C h an n el 2 RTOS PPC TTPController C h an n e 1 C h an n el 2 PPC RTOS TTPController C ha n el1 C ha nn e2 RTOS PPC TTPController C ha nn el 1 PPC TTPController C ha nn el 2 PPC_TTP Channel1 Channel2 ExternalBusPort ECU_2Tasks_1BusChan ExternalBusPort ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler InterruptBus InternalDataBus DataBus InterruptBus InterruptBus InterruptBus InterruptBus InterruptBus CPU Simple ASIC InternalDataBus DataBus Simple ASIC CPU InternalDataBus ExternalBus ExternalBusPort ExternalBusPort C h an n e 1 RTOS Simple ASIC ECU_2Tasks_1BusChan ExternalBusPort DataBus CPU Simple ASIC InternalDataBus ExternalBus ExternalBusPort TTPController C ha nn el 2 CPU ExternalBus C h an n el 2 RTOS DataBus ECU_2Tasks_1BusChan ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler InterruptBus InterruptBus InternalDataBus ExternalBus ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusChan ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler InterruptBus Simple ASIC ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusCha ExternalBusPort Cyclo Static Scheduler Cyclo Static Scheduler ECU_2Tasks_1BusChan ExternalBusPort C ha nn el 2 ExternalBus ExternalBusPort ExternalBusPort DataBus CPU Diagnosis Feedback Sensors VotedTieRodForce AquireSignal DataBus CPU Design Flow(8) • Initialization of the UCM performance model. – Automated generation of an initial communication matrix that carries the dependency of the functional system mapping. • Definition of a specific bus protocol implementation – UCM parameterization. Definition of the communication cycle layout. Data frame definition. BrakeSwitch PedalSensor1 PedalSensor2 Uniform Pulses Uniform Pulses Uniform Pulses PedalSensor3 Timer Timer Timer BTSetUp BTSetUp BTSetUp HandBrakeSwitch ClampForceFL ClampForceFR force_clp_f_base_des force_clp_f_base_des force_clp_f_base_des ClampForceRL ComputeBrakeCommand ComputeBrakeCommand ComputeBrakeCommand Trigger ClampForceRR BrakeActuator BrakeActuatorOut force_clp_r_base_des force_clp_r_base_des force_clp_r_base_des SteeringWheelAngle1 DiagnosisBrakePedal Trigger DiagnosisBrakePedal DiagnosisBrakePedal long_acc_veh_des long_acc_veh_des long_acc_veh_des SteeringWheelAngle2 Trigger BrakeActuator SteeringWheelAngle3 BrakeActuatorOut DbW_TopBlock force_clp_fl_ABS_des force_clp_fl_ABS_des force_clp_fl_ABS_des SteeringWheelAngle4 Arbiter_Br Arbiter_Br Arbiter_Br Trigger DriverSteer DriverSteer Driver DriverBrake DriverBrake DriverGas DriverGas DriverClutch Trigger 2 Track Vehicle Model RackPosition1 BrakeActuator force_clp_fr_ABS_des BrakeActuatorOut force_clp_fr_ABS_des force_clp_fr_ABS_des RackPosition2 Comp_Cmd_ABS_Br Comp_Cmd_ABS_Br Comp_Cmd_ABS_Br RackPosition3 force_clp_rl_ABS_des force_clp_rl_ABS_des force_clp_rl_ABS_des Trigger DriverClutch BrakeActuator RackPosition4 BrakeActuatorOut DriverGear DriverGear SteeringWheelTorque1 force_clp_rr_ABS_des force_clp_rr_ABS_des force_clp_rr_ABS_des SteeringWheelTorque2 Trigger SteerActuator SteeringWheelTorque3 SteerActuatorOut TieRodForce1 Timer BTSetUp Trigger BrakeActuatorFR SteerActuator TieRodForce2 Timer BTSetUp SteerActuatorOut BrakeOutFL_channel1 BrakeActuatorFL TieRodForce3 Base Brake & ABS one channel BrakeActuatorRL SpeedFL BrakeActuatorRR HandWheelTorqueActuator SteeringActuator2 BrakeOutFR_channel1 BrakeOutRL_channel1 Vote Brake Comand SpeedFR force_clp_f_base_des HandWheelTorqueActuator SteeringActuator1 BrakeOutRR_channel1 SpeedRL ComputeBrakeCommand SpeedRR force_clp_r_base_des WarningLightYellow BrakeOutFL_channel2 YawRate DiagnosisBrakePedal Base Brake & ABS one channel LateralAcceleration WarningLightYellow long_acc_veh_des BrakeOutFR_channel2 Vote Brake Comand BrakeOutRL_channel2 force_clp_fl_ABS_des CurrentBatterie1 Arbiter_Br Uniform Pulses WarningLightRed BrakeOutRR_channel2 VoltageBatterie1 Trigger force_clp_fr_ABS_des WarningLightRed BordnetStimulator CurrentBatterie2 Comp_Cmd_ABS_Br BrakeOutFL_channel3 VoltageBatterie2 force_clp_rl_ABS_des Base Brake & ABS one channel CurrentAlternator VoltageAlternator BrakeOutFR_channel3 Vote Brake Comand force_clp_rr_ABS_des BrakeOutRL_channel3 BrakeOutRR_channel3 Timer BTSetUp BrakeOutFL_channel4 BrakeSwitchFil Timer BTSetUp Base Brake & ABS one channel Manipulator AquireSignal BrakeOutFL BrakeOutFR_channel4 Vote Brake Comand BrakeOutRL_channel4 VotedSteeringWheelAngle Diagnosis_Lateral_Sensors BrakeOutRR_channel4 ComputeSteeringCommand VotedRackPosition BrakeOutFR PedalSensor1Fil Base Brake & ABS AquireSignal Manipulator PedalSensor2Fil BrakeOutRL AquireSignal Timer BTSetUp Timer PedalSensor3Fil Manipulator AquireSignal BTSetUp Base Steering one channel BrakeOutRR HandBrakeSwitchFil SteeringActuatorOut_channel1 Manipulator AquireSignal VotedSteeringWheelAngle Diagnosis_Lateral_Sensors ComputeSteeringCommand ClampForceFLFil VotedRackPosition AquireSignal ClampForceFRFil Base Steering one channel AquireSignal ClampForceRLFil SteeringActuatorOut_channel2 Timer Vote_Cmp_Rack_Act BTSetUp AquireSignal Base Steering ClampForceRRFil SteeringOut1 Manipulator AquireSignal VotedSteeringWheelAngle SteeringOut2 Manipulator SteeringWheelAngle1Fil Diagnosis_Lateral_Sensors Base Steering one channel AquireSignal SteeringWheelAngle2Fil ComputeSteeringCommand SteeringActuatorOut_channel3 VotedRackPosition AquireSignal SteeringWheelAngle3Fil AquireSignal Vote_Cmp_Rack_Act Timer BTSetUp SteeringWheelAngle4Fil AquireSignal Base Steering one channel RackPosition1Fil AquireSignal Handwheel Feedback RackPosition2Fil AquireSignal SteeringActuatorOut_channel4 VotedSteeringWheelAngle SteeringWheelTorqueOut1 Diagnosis_Lateral_Sensors Manipulator ComputeSteeringCommand VotedRackPosition RackPosition3Fil AquireSignal SteeringWheelTorqueOut2 Timer Manipulator BTSetUp RackPosition4Fil Timer BTSetUp AquireSignal AquireSignal SteeringWheelTorque1Fil Handwheel Feedback one channel SteeringWheelTorque2Fil AquireSignal Master1BrakeFL SteeringWheelTorque3Fil AquireSignal SteeringWheelTorqueOut_channel1 VotedSteeringWheelTorque Diagnosis Feedback Sensors ComputeSteeringTorqueCommand Master1BrakeFR VotedTieRodForce Vote HW Feedback Master1BrakeRL Handwheel Feedback one channel Master1BrakeRR TieRodForce1Fil AquireSignal Master1SteeringAngleOut TieRodForce2Fil AquireSignal Master Controller TieRodForce3Fil SteeringWheelTorqueOut_channel2 Timer BTSetUp Master1SteeringTorqueOut Vote HW Feedback vel_veh_master_1 AquireSignal Handwheel Feedback one channel Master1Warning BrakeDiagnosis SpeedFLFil AquireSignal SteeringWheelTorqueOut_channel3 VotedSteeringWheelTorque Master2BrakeFL SpeedFRFil Diagnosis Feedback Sensors AquireSignal ComputeSteeringTorqueCommand Master2BrakeFR VotedTieRodForce SteeringDiagnosis SpeedRLFil AquireSignal SpeedRRFil AquireSignal Master Controller Master2BrakeRL Master2BrakeRR Master2SteeringAngleOut HWFeedbackDiagnosis Timer BTSetUp YawRateFil Master2SteeringTorqueOut AquireSignal vel_veh_master_2 LateralAccelerationFil AquireSignal Master2Warning Cyclo Static Scheduler CurrentBatterie1Fil AquireSignal Cyclo Static Scheduler Cyclo Static Scheduler Static Priority Scheduler Static Priority Scheduler Cyclo Static Scheduler ComputePowerManagement Cyclo Static Scheduler Cyclo Static Scheduler Static Priority Scheduler Diagnosis Battery1Diagnosis VoltageBatterie1Fil Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler VotedSteeringWheelTorque Static Priority Scheduler Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler ComputeSteeringTorqueCommand CurrentBatterie2Fil InterruptBus AquireSignal InterruptBus Simple ASIC Battery2Diagnosis InterruptBus DataBus InternalDataBus InterruptBus Simple ASIC CPU InterruptBus InterruptBus InterruptBus InternalDataBus DataBus Simple ASIC CPU DataBus InternalDataBus CPU Simple ASIC InterruptBus InterruptBus InternalDataBus DataBus CPU Simple ASIC InterruptBus InternalDataBus DataBus CPU InterruptBus Simple ASIC InterruptBus InternalDataBus ComputePowerManagement ExternalBus ExternalBus AquireSignal ExternalBus ExternalBus ExternalBus ExternalBus VoltageBatterie2Fil Diagnosis CurrentAlternatorFil AquireSignal ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort AlternatorDiagnosis ComputePowerManagement VoltageAlternatorFil AquireSignal ECU_2Tasks_1BusCha ECU_2Tasks_1BusCha ExternalBusPort Cyclo Static Scheduler Cyclo Static Scheduler Static Priority Scheduler Cyclo Static Scheduler InterruptBus InterruptBus InternalDataBus ExternalBus DataBus CPU Cyclo Static Scheduler InterruptBus Simple ASIC ECU_2Tasks_1BusChan ExternalBusPort ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler Static Priority Scheduler Cyclo Static Scheduler Cyclo Static Scheduler InterruptBus InternalDataBus DataBus InterruptBus InterruptBus InterruptBus InterruptBus InterruptBus CPU Simple ASIC InternalDataBus DataBus CPU Simple ASIC InternalDataBus DataBus CPU Simple ASIC InternalDataBus ExternalBus ExternalBus ExternalBusPort ExternalBusPort ECU_2Tasks_1BusChan ExternalBusPort Cyclo Static Scheduler InterruptBus Simple ASIC ECU_2Tasks_1BusChan ExternalBusPort Static Priority Scheduler Cyclo Static Scheduler ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusChan ExternalBusPort Cyclo Static Scheduler Static Priority Scheduler ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusCha ExternalBusPort Bus Type Pattern ECU_2Tasks_1BusChan ExternalBusPort ECU_2Tasks_1BusCha ExternalBus ExternalBus ExternalBusPort ExternalBusPort ExternalBusPort ExternalBusPort DataBus CPU Diagnosis Feedback Sensors VotedTieRodForce AquireSignal DataBus CPU Design Flow (9) • Performance simulation including the bus latencies • Full System co-verification: both communications and computation Bus Type Pattern Design Iterations Example of Co-Design: Design Space Exploration of Multimedia Platform CADENCE CONFIDENTIAL Multimedia Applications – Design Space Exploration map_FAKIR_Diagrams.MPEG_VIPER_SH2 Frame Processing - Actual Delay (sec) 2B 1I 2B 3B 4P 5B 6B 7P 8B 9B 10I 11B 12B 13P 14B 15B 23B 24B 25P 26B 27B 28P 29B 16P 17B 18B 19P 20B 21B 22I 16:t_hdr 3B 4P 5B 6B 7P 8B 9B 10I 11B 12B 13P 14B 23B 24B 25P 26B 27B 28P 15B 16P 17B 18B 19P 20B 21B 22I 14:t_memMan (Peeker) 15:t_memMan 14:t_output 13:t_isiq 12:t_vld 11:t_predict 10:t_idct proc procID 28 “Peeker” Frames in … 2 sec! 8:t_output 9:t_add 8:t_writeMB 7:t_memory 1B 2P 3P 4B 5P 6P 7B 8I 9I 10B 11P 12P 22B 23P 24P 25B 26P 13B 14P 15P 16B 17P 18P 19B 20I 21I 6:t_decMV 5:in_es 4:drop_finfo 3:ofileproc 0,00 0,20 0,40 0,60 0,80 Application Analyst 1,00 tStart 0,00E+00 1,00E-01 2,00E-01 3,00E-01 4,00E-01 5,00E-01 6,00E-01 AvgOfintraDelay 7,00E-01 8,00E-01 3,50E+06 3,00E+06 2,50E+06 2,00E+06 1,50E+06 1,00E+06 5,00E+05 0,00E+00 1 3 5 7 9 11 13 15 17 frameID Process Analyst 19 21 23 25 2 4 7 9 10 11 12 14 16 17 18 19 22 23 25 26 27 30 33 35 36 37 40 42 Communication Analyst Data Analysis Workbooks for specific roles (Excel+StatBox) Design Data Exported from VCC diagrams using “VCCAPI” map_FAKIR_Diagrams.MPEG_VIPER_SH2 YAPI Transactions - Write - Number of bytes per channel per frame 4,00E+06 nbByte 1I R2c R25c R27c R30c R34b R16m R27m R30m R32m E1s E16s E27s E2c E16c E27c E30c E34b E32m W1s W2c W27c 9,00E-01 W30c W34b W6m map_FAKIR_Diagrams.MPEG_VIPER_S1 Breakdown of Workload on Architectural Resources of Type: RTOS, CORE, MEM & BUS - Per Process - Average Intrinsic Delay per Frame (sec) 15:t_hdr Classification Design Space Navigator (SQL queries) vccDse Database vccMap Database vccSim Database Thdr YSH1 YSH1 YSH1 YHS1 YSH1 Thdr_status_In Toutput YSH1 YSH1 YSH1 YSH1 Tpredict TdecMV Tmemory Yo_Info Y_Info Tmemory_line_address_Out Tpredict_prop_pic_In VHH1 YHS1 YSH1 YSH1 Y_Data Tvld Tpredict_token_Out TdecMV_prop_mv_In YSH1 Yo_Data Uo_Info Tmemory_line_data_In Tpredict_token_In Tpredict_prop_pred_In U_Info Toutput_line_address_In Tpredict_prop_pred_Out Uo_Data Toutput_cmd_In es Tvld_bits_In TdecMV_prop_mv_Out U_Data Vo_Info V_Info Vo_Data V_Data Sinfo finfo Tpredict_mv_In TdecMV_prop_pred_In Toutput_prop_seq_In Tpredict_mv_Out TdecMV_prop_pred_Out YSS1 YHS1 YSH1 YHH1 Tmemory_mb_p_In Tadd_mb_p_Out Tpredict_prop_seq_In TmemMan_pic_In Tpredict_prop_seq_Out YHH1 Sinfo Toutput_line_data_Out cosy_init cosy_init finfo cosy_init YSH1 YSS1 YSH1 YHH1 YHHP TmemMan_cmd_In TwriteMB_prop_pic_In TmemMan_cmd_Out mb_QFS_In YHH1 YSH1 YHHP YHHP mb_F_In mb_f_In TmemMan_prop_seq_In Toutput_cmd_Out mb_d_In mb_f_Out mb_F_Out Tisiq_prop_seq_In Tidct_prop_seq_Out Tidct_prop_seq_In Tidct_prop_mb_In Tidct_prop_mb_Out TmemMan_prop_seq_Out mb_d_Out Tadd_prop_seq_In Tadd_prop_seq_Out Tisiq_prop_mb_In TwriteMB_prop_seq_Out TwriteMB_prop_seq_In TmemMan_prop_pic_Out TwriteMB_prop_mb_In TwriteMB_mem_id_In Tadd_prop_mb_In Tisiq TwriteMB_pic_In TwriteMB_mem_id_Out Toutput_prop_seq_Out Toutput_pic_Out TwriteMB_prop_mb_Out Tadd_prop_mb_Out cosy_init YHH1 YHH1 YHHP YHHP cosy_init cosy_init Tidct Tadd TwriteMB TmemMan cosy_init YHHP YSH1 YHHP YHH1 YHSP YHS1 YHSP YHHP YHHP YHH1 YHHP YSH1 YHH1 YHSP Created by COSY (c) May 2001 FPBC_MPIC EJTAG PR3940 FPIMI MMI Memory pSOS RTOS TM_3218 f_pi_bus FR_MEM M_bridge MBS MPBC_GLOBAL TPIC PCI ICP1_2 BOOT_DBG GPIO DE VMPG SMCARD USB IIC1_2 IEEE1394 SPDIO VMPG_ AUX AIO1_3 VIP1_2 m_pi_bus t_pi_bus UART1_3 SSI MSP1_2 CLOCKS C_Bridge TPBC Performance Data Collected by VCC probes under control of system events Export Mapping Data to DataBase Thdr YSH1 YSH1 YSH1 YHS1 YSH1 Thdr_status_In YSH1 YSH1 YSH1 Toutput YSH1 VHH1 YHS1 YSH1 YSH1 Tpredict TdecMV Tmemory Yo_Info YSH1 Y_Info Tmemory_line_address_Out Tpredict_prop_pic_In Y_Data Tvld Uo_Info Tmemory_line_data_In Tpredict_token_In Tpredict_prop_pred_In Tpredict_token_Out TdecMV_prop_mv_In Yo_Data U_Info Toutput_line_address_In Tpredict_prop_pred_Out Uo_Data Toutput_cmd_In U_Data Tvld_bits_In es TdecMV_prop_mv_Out YHS1 YSH1 YSS1 YHH1 Toutput_prop_seq_In Tpredict_mv_Out Tadd_mb_p_Out TmemMan_pic_In cosy_init V_Data Sinfo finfo YHH1 finfo cosy_init YHH1 Vo_Data Sinfo Toutput_line_data_Out cosy_init YSH1 V_Info Tmemory_mb_p_In Tpredict_prop_seq_In Tpredict_prop_seq_Out YSS1 Vo_Info Tpredict_mv_In TdecMV_prop_pred_In TdecMV_prop_pred_Out YHHP YSH1 TmemMan_cmd_In TwriteMB_prop_pic_In TmemMan_cmd_Out YHH1 YSH1 YHHP YHHP mb_QFS_In mb_F_In mb_f_In TmemMan_prop_seq_In Tidct_prop_seq_Out Tidct_prop_seq_In Tisiq_prop_mb_In TmemMan_prop_seq_Out mb_d_Out Tadd_prop_seq_In Tadd_prop_seq_Out Tidct_prop_mb_In TwriteMB_prop_seq_In TwriteMB_prop_seq_Out Tadd_prop_mb_In TwriteMB_prop_mb_In Tidct_prop_mb_Out YHH1 YHH1 YHHP Toutput_cmd_Out mb_d_In mb_f_Out mb_F_Out Tisiq_prop_seq_In YHHP TwriteMB_mem_id_In TwriteMB_mem_id_Out Toutput_prop_seq_Out Toutput_pic_Out YHSP TwriteMB_prop_mb_Out Tadd_prop_mb_Out cosy_init Tisiq TwriteMB_pic_In TmemMan_prop_pic_Out cosy_init cosy_init Tidct Tadd TwriteMB TmemMan YHS1 cosy_init YHHP YSH1 YHHP YHH1 YHHP YHHP YHH1 YHHP YSH1 YHH1 YHSP YHSP in Created by COSY (c) May 2001 TDROP_field_inf o FPBC_MPIC EJTAG PR3940 YSH1 cosy_init FPIMI beh_MPEG_Processes MMI Memory SMPEGDecode Yo_Info TBINFILE_unsig ned_char pSOS RTOS TM_3218 TBE finfo Sinfo f_pi_bus YSH1 sinfob CA_Info FR_MEM M_bridge es Yo_Data CA_Data out cosy_init cosy_init Uo_Info CB_Info Uo_Data CB_Data Vo_Info CC_Info Vo_Data CC_Data cosy_init YSH1 YSH1 MBS MPBC_GLOBAL TPIC PCI cosy_init Created by COSY (c) June 2001 YSH1 YSH1 YSH1 YSH1 ICP1_2 BOOT_DBG DE SMCARD USB IIC1_2 IEEE1394 GPIO VMPG SPDIO VMPG_ AUX FPBC_MPIC EJTAG PR3940 AIO1_3 VIP1_2 FPIMI MMI Memory pSOS RTOS m_pi_bus TM_3218 t_pi_bus UART1_3 SSI MSP1_2 f_pi_bus FR_MEM M_bridge CLOCKS MBS MPBC_GLOBAL TPIC PCI ICP1_2 BOOT_DBG DE SMCARD USB GPIO VMPG SPDIO VMPG_ AUX IIC1_2 AIO1_3 IEEE1394 VIP1_2 m_pi_bus t_pi_bus UART1_3 SSI MSP1_2 CLOCKS C_Bridge TPBC C_Bridge TPBC System-Observation-Windows FPBC_MPIC EJTAG PR3940 FPIMI MMI Memory pSOS RTOS TM_3218 f_pi_bus FR_MEM M_bridge MBS MPBC_GLOBAL Thdr Thdr_status_In Toutput Tpredict TdecMV Tmemory Yo_Info Y_Info Tmemory_line_address_Out Tpredict_prop_pic_In Y_Data Tvld Yo_Data Uo_Info Tmemory_line_data_In Tpredict_token_In Tpredict_prop_pred_In Tpredict_token_Out TdecMV_prop_mv_In U_Info Toutput_line_address_In Tpredict_prop_pred_Out Uo_Data Toutput_cmd_In es Tvld_bits_In U_Data TdecMV_prop_mv_Out Vo_Info Tpredict_mv_In TdecMV_prop_pred_In Toutput_prop_seq_In Tpredict_mv_Out TdecMV_prop_pred_Out V_Info Vo_Data V_Data Sinfo finfo Tmemory_mb_p_In Tadd_mb_p_Out Tpredict_prop_seq_In TmemMan_pic_In Tpredict_prop_seq_Out Sinfo Toutput_line_data_Out cosy_init cosy_init finfo For, e.g. Each MPEG Frame Measure… cosy_init TPIC PCI ICP1_2 BOOT_DBG DE SMCARD USB IIC1_2 IEEE1394 GPIO VMPG SPDIO VMPG_ AUX AIO1_3 VIP1_2 TmemMan_cmd_In TwriteMB_prop_pic_In m_pi_bus TmemMan_cmd_Out mb_QFS_In mb_F_In mb_f_In TmemMan_prop_seq_In Toutput_cmd_Out mb_d_In mb_f_Out mb_F_Out Tisiq_prop_seq_In Tidct_prop_seq_In Tidct_prop_seq_Out Tadd_prop_seq_Out Tisiq_prop_mb_In TmemMan_prop_seq_Out mb_d_Out Tadd_prop_seq_In Tidct_prop_mb_In TwriteMB_prop_seq_Out TwriteMB_prop_seq_In Tadd_prop_mb_In TwriteMB_prop_mb_In Tidct_prop_mb_Out Tadd_prop_mb_Out TmemMan_prop_pic_Out TwriteMB_mem_id_In TwriteMB_pic_In TwriteMB_mem_id_Out Toutput_prop_seq_Out t_pi_bus UART1_3 SSI MSP1_2 Toutput_pic_Out TwriteMB_prop_mb_Out cosy_init cosy_init cosy_init Tisiq Tidct Tadd TwriteMB TmemMan cosy_init CLOCKS C_Bridge TPBC Created by COSY (c) May 2001 e.g. process activity Frame ID 1 1 1 1 1 1 1 1 … 2 2 2 2 2 2 2 2 2 … Port Name Tvld_bits_In Tvld_cmd_In Tvld_prop_pic_In Tvld_prop_slice_In mb_QFS_Out Thdr_status_Out Tisiq_prop_mb_Out TdecMV_prop_mv_Out … Tvld_bits_In Tvld_cmd_In Tvld_prop_pic_In Tvld_prop_slice_In mb_QFS_Out Thdr_status_Out Tisiq_prop_mb_Out TdecMV_prop_mv_Out TdecMV_prop_pred_Out … Transaction Nb 324 208 1 36 1,622 208 1,622 1,622 … 525 206 1 36 1,619 206 1,619 1,619 1,619 … Item Nb 20,736 208 1 36 622,704 208 1,622 1,622 …. 33,600 206 1 36 621,696 206 1,619 1,619 1,619 … Actual Delay 0.14 0.13 0.00 0.00 6.66 0.01 0.03 0.04 … 0.23 0.12 0.00 0.00 6.53 0.01 0.03 0.04 0.09 … e.g. MEMORY usage Intra Delay 0.02 0.00 0.00 0.00 0.65 0.01 0.03 0.04 …. 0.03 0.00 0.00 0.00 0.65 0.01 0.03 0.04 0.09 … Pict 1 Pict 2 Frame ID 1 1 1 1 1 1 1 … 2 2 2 2 2 2 2 2 … Requestor Behavior/in_es_out_sender Behavior/decode/t_vld_Tvld_bits_In_receiver Behavior/decode/t_hdr_Tvld_cmd_Out_sender Behavior/decode/t_vld_Tvld_cmd_In_receiver Behavior/decode/t_hdr_Tvld_prop_pic_Out_sender Behavior/decode/t_vld_Tvld_prop_pic_In_receiver Behavior/decode/t_hdr_Tvld_prop_slice_Out_sender …. Behavior/in_es_out_sender Behavior/decode/t_vld_Tvld_bits_In_receiver Behavior/decode/t_hdr_Tvld_cmd_Out_sender Behavior/decode/t_vld_Tvld_cmd_In_receiver Behavior/decode/t_hdr_Tvld_prop_pic_Out_sender Behavior/decode/t_vld_Tvld_prop_pic_In_receiver Behavior/decode/t_hdr_Tvld_prop_slice_Out_sender Behavior/decode/t_vld_Tvld_prop_slice_In_receiver … Delay Mean 5.64E-06 2.91E-06 2.40E-07 2.40E-07 2.16E-06 2.16E-06 7.20E-07 … 5.64E-06 2.91E-06 2.40E-07 2.40E-07 2.16E-06 2.16E-06 7.20E-07 7.20E-07 … Delay StDev 3.00E-06 1.20E-06 1.17E-14 1.17E-14 0.00E+00 0.00E+00 1.22E-14 … 3.00E-06 1.20E-06 1.17E-14 1.17E-14 0.00E+00 0.00E+00 1.22E-14 1.22E-14 … “Probe-Synch” & Observer Probes Probe-Synch is triggered on conditions in a behavioral block (i.e. MPEG frame decoded) Control up to 200 distributed observer probes of different types: i.e Memory probes, Bus probes, CPU “Delay” probes etc… MEMORY OBSERVER PROBE CPU OBSERVER PROBE Observer Probes record summary data at the granularity defined by the peeker BUS OBSERVER PROBE Queries 1: link Map & Simulation data Calculate Average Actual & Intrinsic Communication Rates of all “YAPI” application level Channels SELECT simComAppYapi.sessionCounter AS frameID…, simComAppYapi.actualDelay,… FROM mapComAppYapi INNER JOIN fctProc ON mapComAppYapi.srcProcID = fctProc.ID… WHERE simComAppYapi.VccInstanceName)=[fctProc].[diagName] & "/" & [fctProc].[procName]; chanID 2 2 16 frameID 3 10 18 nbTransaction nbItem nbByte actualDelay 5,76E+02 5,76E+02 6,91E+03 5,10E+01 5,10E+01 6,12E+02 1,62E+03 1,62E+03 4,54E+04 Simulation “Frame” Context Key to retrieve Design “Mapping” Decision intrinsicDelay 6,06E-04 4,56E-05 7,26E-02 6,06E-04 4,56E-05 3,54E-05 Simulation results Queries 2: calculate basic Statistics Calculate Average Actual & Intrinsic Communication Rates of all “YAPI” application level Channels SELECT DISTINCTROW Avg([nbByte]/[actualDelay]) AS AvgOfActualRate, StDev([nbByte]/[actualDelay]) AS StDevOfActualRate,… Avg([nbByte]/[intraDelay]) AS AvgOfIntraRate, … INTO staComAppYapiRate_perChan FROM mkStaComAppYapiRate_perChan_step1 GROUP BY chanID…; comA trans chanI portID AvgOfActualRate StDevOf ppClas action D ActualR s ate YAPI Rd 2 14 5,61E+06 5,98E+0 4 YAPI Wr 2 48 7,34E+06 1,58E+0 6 YAPI Rd 3 15 6,27E+07 YAPI Rd 4 11 5,62E+08 YAPI Wr 4 46 5,80E+08 YAPI Wr 7 44 7,29E+06 1,61E+0 7 4,86E+0 7 7,15E+0 MinOfA ctualR ate 5,55E+ 06 6,47E+ 06 6,27E+ 07 5,39E+ 08 5,49E+ 08 5,10E+ MaxOfA AvgOfIntraRate StDevOf ctualRat IntraRat e e 5,77E+0 6,09E+06 5,86E+0 6 4 1,21E+0 1,13E+07 4,90E+0 7 5 6,27E+0 6,67E+07 7 6,00E+0 6,47E+08 1,59E+0 8 7 7,20E+0 5,89E+08 4,82E+0 8 7 3,15E+0 7,57E+06 7,86E+0 Application Analyst map_FAKIR_Diagrams.MPEG_VIPER_SH2 Frame Processing - Actual Delay (sec) 15:t_hdr 1I 2B 1I 2B 3B 4P 3B 5B 4P 6B 5B 7P 6B 8B 7P 9B 8B 10I 9B 11B 12B 10I 11B 13P 14B 15B 23B 24B 25P 26B 27B 28P 29B 16P 17B 18B 19P 20B 21B 22I 12B 13P 14B 23B 24B 25P 26B 27B 28P 15B 16P 17B 18B 19P 20B 21B 22I 10B 11P 12P 22B 23P 24P 25B 26P 13B 14P 15P 16B 17P 18P 19B 20I 21I 14:t_memMan (Probe-Synch) procID 28 Frames in … 2 sec 8:t_output 1B 0,00 2P 0,20 3P 4B 5P 6P 0,40 7B 0,60 tStart 8I 9I 0,80 1,00 Process Analyst map_FAKIR_Diagrams.MPEG_VIPER_S1 Breakdown of Process Execution on basic Architectural Resources of Type: CORE, MEM & BUS - Average Actual Delay per Frame (sec) R27m R34b E32m W32m R2c E34b W34b E2c W2c 16:t_hdr R32m R27m R30m R32m E32m R34b W34b E34b W2c R2c E2c 15:t_memMan W32m Process R2c R27c R32m R34b E27c W2c W25m W32m W27c W34b W6m 14:t_output “t-predict” 13:t_isiq R2c R30c R34b E2c E30c R32m E34b R16m R34b R2c E2c E27c E34b 12:t_vld R32m proc 11:t_predict R2c E2c E27c E34b E32m E30c E34b E30c E34b W2c E32m E32m W27c W34b W30m W6m W32m W2c W32m W30c W34b W2c W32m W30c W34b R2c R32m R30c R34b E2c W2cW30c E30c E34b E32m W34b W32m W6m 7:t_memory 6:t_decMV R30c R34b R32m E2c Body-Function Exec Delay On Memory “32” W2c W30m W27c W34b W32m E2c R2c R30c R34b R32m 9:t_add 8:t_writeMB E32m R2c R27c R32m R34b 10:t_idct IO-(Read Trans.) Exec Delay On CPU “2” E32m W2c W32m W30c W34b R2c R32m R34b W2c W27m W34b W30m W32m R2c R27m R32m R34b E2c E34b E32mW2c W32m W34b E16c 5:in_es W34b Body-Function Execution Delay On CPU “2” IO- (Write Trans.) Execution Delay On CPU “2” R25c R34b R2c 4:drop_finfo R32m R34b R2c 3:ofileproc R32m 0,00E+00 5,00E-02 1,00E-01 1,50E-01 2,00E-01 2,50E-01 AvgOfactualDelay 3,00E-01 3,50E-01 4,00E-01 R2c R25c R27c R30c R34b R16m R27m R30m R32m E2c E16c E27c E30c E34b E32m W2c W27c W30c W34b W6m W25m W27m W30m W32m Communication Analyst map_FAKIR_Diagrams.MPEG_VIPER_S1 YAPI Transactions - Write - Number of bytes per channel per frame 4,00E+06 3,50E+06 3,00E+06 nbByte 2,50E+06 2,00E+06 1,50E+06 1,00E+06 5,00E+05 0,00E+00 1 3 5 7 9 11 13 frameID 15 17 19 21 23 25 2 4 6 8 9 10 11 14 15 17 18 20 21 22 23 26 30 32 34 35 36 37 40 41 Communication Analyst map_FAKIR_Diagrams.MPEG_VIPER_SH2 YAPI IO Rates - avg Actual versus avg Intrinsic (Byte/sec, log scale) 1,00E+11 1,00E+10 1,00E+09 AvgOfActualRate 1,00E+08 1,00E+07 1,00E+06 26Wr 17Wr 42Rd 27Wr 71Wr 71Rd 16Rd 47Wr 43Wr 11Wr 59Rd 11Rd 4Wr 10Rd 4Rd 59Wr 30Wr 22Wr 10Wr 45Rd 18Rd 56Rd 56Wr 14Rd 70Rd 50Rd 54Wr 26Rd 65Wr 42Wr 25Rd 17Rd 35Wr 33Rd 64Rd 37Rd 53Rd 3Rd 16Wr 40Rd 75Wr 12Wr 44Wr 30Rd 27Rd 18Wr 9Wr 54Rd 36Rd 46Wr 9Rd 45Wr 7Wr 2Wr 70Wr 47Rd 19Rd 2Rd 66Rd 66Wr 33Wr 14Wr 50Wr 64Wr 36Wr 25Wr 19Wr 53Wr 37Wr 44Rd 75Rd 62Wr 23Wr 65Rd 43Rd 40Wr 48Wr 1,00E+05 1,00E+04 48Rd 12Rd 23Rd Very bad “performance” compared to “intrinsic rate”; Arbitration issue or… always busy waiting for input? 1,00E+03 1,00E+02 YAPI.Rd YAPI.Wr 62Rd 1,00E+01 1,00E+00 1,00E+05 1,00E+06 1,00E+07 1,00E+08 AvgOfIntraRate 1,00E+09 1,00E+10 Principal Component Analysis Characteristics map_FAKIR_Diagrams.MPEG_VIPER_SH2 - Principal Component Analysis YAPI Application Level Communication 1 AvgOfnbItem 0,8 fifoDepth Linked characteristics 0,6 -- axe F2 (23 %) --> 0,4 AvgOfactualDelay 0,2 AvgOfnbTransaction 0 AvgOfPerf -0,2 itemSize -0,4 -0,6 Opposed characteristics -0,8 -1 -1 -0,8 -0,6 -0,4 -0,2 0 0,2 -- axe F1 (34 %) --> 0,4 0,6 0,8 1 Principal Component Analysis Results on 108 Communication Channelsmap_FAKIR_Diagrams.MPEG_VIPER_SH2 - Principal Component Analysis - YAPI Application Level Communication 11Rd.VHH1 11Wr.VHH1 0,9 AvgOfnbItem fifoDepth 0,7 42Wr.YHHP 54Rd.YHH1 26Rd.YHHP 59Rd.YHH1 54Wr.YHH1 59Wr.YHH1 42Rd.YHHP 26Wr.YHHP 4Rd.VHH1 10Rd.VHH1 4Wr.VHH1 10Wr.VHH1 -- axe F2 (23 %) --> 0,5 0,3 AvgOfactualDelay 0,1 -0,1 AvgOfnbTransaction 40Wr.VHH1 65Rd.YHH1 43Rd.YHHP 16Wr.YHHP 12Rd.VHH1 36Wr.YHS1 23Rd.YHS1 62Rd.YHSP75Rd.YHH1 19Wr.YSH1 35Wr.YHH1 44Wr.YHS1 75Wr.YHH1 48Rd.YSH1 40Rd.VHH1 65Wr.YHH1 71Rd.YHHP 71Wr.YHHP 16Rd.YHHP 19Rd.YSH1 47Rd.YHS1 9Wr.VHH1 45Rd.YSH1 45Wr.YSH1 2Wr.VHH1 46Wr.YHH1 43Wr.YHHP 64Rd.YSH1 47Wr.YHS1 9Rd.VHH1 36Rd.YHS1 53Rd.YSH1 37Rd.YSH1 12Wr.VHH1 2Rd.VHH1 25Rd.YSH1 7Wr.YHH1 70Rd.YSH1 14Rd.YSH1 66Rd.YSS1 50Rd.YSH1 53Wr.YSH1 23Wr.YHS1 66Wr.YSS1 70Wr.YSH1 33Rd.YSH1 44Rd.YHS1 48Wr.YSH1 37Wr.YSH1 62Wr.YHSP 27Rd.YHSP 64Wr.YSH1 25Wr.YSH1 50Wr.YSH1 14Wr.YSH1 33Wr.YSH1 27Wr.YHSP 30Rd.YHH1 17Rd.YHHP 3Rd.VHH1 18Rd.YSH1 56Rd.YHH1 18Wr.YSH1 AvgOfPerf 56Wr.YHH1 17Wr.YHHP 22Wr.YHHP 30Wr.YHH1 -0,3 itemSize -0,5 -0,9 -0,7 -0,5 -0,3 -0,1 0,1 -- axe F1 (34 %) --> 0,3 0,5 0,7 0,9 Clustering into Communication Port Classes map_FAKIR_Diagrams.MPEG_VIPER_SH2 - Principal Component Analysis YAPI Application Level Communication Class 1 4 11Rd.VHH1 11Wr.VHH1 Class 3 3 Class 2 42Wr.YHHP 54Rd.YHH1 -- axe F2 (23 %) --> 26Rd.YHHP 59Rd.YHH1 54Wr.YHH1 59Wr.YHH1 42Rd.YHHP 26Wr.YHHP 2 4Rd.VHH1 10Rd.VHH1 4Wr.VHH1 10Wr.VHH1 1 Class 4 40Wr.VHH1 65Rd.YHH1 43Rd.YHHP 16Wr.YHHP 12Rd.VHH1 36Wr.YHS1 23Rd.YHS1 62Rd.YHSP 0 30Rd.YHH1 17Rd.YHHP 56Rd.YHH1 -1 Class 5 -2 -4 -3 -2 75Rd.YHH1 19Wr.YSH1 35Wr.YHH1 44Wr.YHS175Wr.YHH1 48Rd.YSH1 40Rd.VHH1 65Wr.YHH1 16Rd.YHHP 19Rd.YSH1 47Rd.YHS1 71Rd.YHHP 45Rd.YSH1 45Wr.YSH1 2Wr.VHH1 46Wr.YHH1 71Wr.YHHP 43Wr.YHHP 64Rd.YSH1 47Wr.YHS1 36Rd.YHS1 9Wr.VHH1 53Rd.YSH1 37Rd.YSH1 12Wr.VHH1 9Rd.VHH1 2Rd.VHH1 25Rd.YSH1 14Rd.YSH1 50Rd.YSH1 53Wr.YSH1 23Wr.YHS1 44Rd.YHS1 33Rd.YSH1 7Wr.YHH1 70Rd.YSH1 48Wr.YSH1 37Wr.YSH1 66Rd.YSS1 62Wr.YHSP 27Rd.YHSP 64Wr.YSH1 25Wr.YSH1 50Wr.YSH1 14Wr.YSH1 33Wr.YSH1 27Wr.YHSP 66Wr.YSS1 70Wr.YSH1 3Rd.VHH1 18Rd.YSH1 18Wr.YSH1 56Wr.YHH1 17Wr.YHHP 22Wr.YHHP 30Wr.YHH1 -1 -- axe F1 (34 %) --> 0 1 2 Summary • Talked about System-level SoC Design and changes in abstractions • Discussed the VCC Design Flow as an example of FunctionArchitecture Co-Design, including the key concepts of: – Performance Modeling – Architectural Services • Described two usage examples of function-architecture co-design, illustrating the pragmatic use of these concepts by real design teams: – Automotive Distributed SW – Design Space Exploration of Multimedia platform • As a result, I hope you are convinced of both the need for system level design for SoC, and the real possibility of creating practical tools to support it • Next important step for such tools: a common standardised model integration infrastructure based on SystemC