250 likes | 398 Views
Innovative Virtual Prototype Technologies for System and Application Bringup. Guy Moshe General Manager Design Creation BU/ESD. Market Trends. Embedded systems are scaling rapidly : Complex multi-core architectures (e.g. ARM big.LITTLE) Large software stacks
E N D
Innovative Virtual Prototype Technologies for System and Application Bringup Guy Moshe General Manager Design Creation BU/ESD
Market Trends Embedded systems are scaling rapidly: • Complex multi-core architectures (e.g. ARM big.LITTLE) • Large software stacks Embedded Software in critical path • Applications everywhere • User experience • Differentiates products: Mobile, Automotive, Networking…. • Higher cost and investment Opportunity: Companies are setting software infrastructure to drive future design and verification activities
What’s Changed in System Design? Software is fastest growing component of SoC development cost All this software requires a lot of analysis!
HW/SW Development Evolution HW & SW Junction • System/ SOC • CPU(s) • Coprocessors • Graphics • Audio • Network(s) • GPIOs • Custom IP • Linux / RTOS • Boot code • Security layers • System Config • Drivers • ISRs • Application Code Pain Here! HW SW Device Hardware Software interaction presents a significant system analysis challenge
Embedded System Traditional Flow “Host” Machine SW Developer Tools IDE & Builder Embedded SW Device Compiler UI™ Debugger Profiler Application Stacks Probe Middleware, Agents Android™ Linux® Others® • Sequential delivery lifecycle (Late HW) • Limited visibility & trace capacities • Measurement affects behavior - Heisenberg Effect…. • Rigid Setup
Executing on a Virtual Target Virtual “Target” Device “Host” Machine GPU LCD Video MPEG CPU CodeBench Virtual Edition IDE & Builder Embedded SW Device Compiler Bridge DMA USB ETHERNET PCI EXPRESS SDRAM UI™ Debugger Peripherals Profiler Application Stacks UART GPIO Timer GDB Middleware, Agents PHY PHY PHY DDR3 Android™ Linux® Others® A Virtual Prototype is a high-level simulation model of the target hardware Can execute unmodified software images (drivers, firmware, OS, applications) Run at close to real time speed Run with standard Toolchain’s and software IDE’s
Introducing Virtual Prototyping Virtual Prototype GPU LCD Video MPEG CPU DMA Bridge USB ETHERNET PCI e SDRAM Peripherals UART GPIO Timer PHY PHY PHY DDR3 High-level simulation model of the SoC/System HW • Instruction set simulator executes code at close to real-time speed • Peripherals simulated with behavioral models • Host resources provide real world I/O Key values • Early availability of a hardware accurate model • Fast, deterministic execution of native embedded software • Full visibility & control • Software debug connection • May have various timing fidelities
Virtual Prototyping vs. HW Prototypes SW IDE Developer Tools IDE & Builder Compiler Debugger Profiler VP Plug-in Operating System GPU LCD Video MPEG CPU SW Simulation Control Load & Restart Start/stop Reference Design Board Virtual Prototype VP Plug-in Bridge DMA USB ETHERNET PCI EXPRESS SDRAM Registers, Memory, IO’s CPU internals Cache logging Control Trace Peripherals Functional vs. Performance mode Application-level Power/Performance Analysis Analysis UART GPIO Timer PHY PHY PHY DDR3 Provides capabilities similar to HW prototype • Simulation speed close to Real Time (~100s of MIPS) • Configuration, Management & Manipulations • Debugging, Analysis & Profiling But provides superior capabilities on Virtual Prototype • Better simulation control • Better visibility & tracing • Better Analysis
Virtual Prototype Creation JPEG MPEG LCD CPU Subsystem Linux/Windows Cross Compile Slave Master Master Master AMBA AXI End User Application Software Bridge Master Slave Virtual Prototype wizard dialog for Virtual Prototype creation Memory DMA Ethernet Developer Tools AMBA APB Virtual Prototype Executable PHY Slave Slave UART GPIO Terminal Delivers a target HW model executable to the software team • Integrate final application software with actual hardware architecture • Validate and debug software against early HW model before RTL • Tune software to meet performance and power requirements
Deterministic System Execution Interrupt Controller Timers Interrupt Controller Timers CPU 0 CPU 1 CPU 0 CPU 1 Embedded SW Device I-Cache D-Cache I-Cache D-Cache I-Cache D-Cache I-Cache D-Cache L2 cache + SCU L2 cache + SCU UI™ Application Stacks Middleware, Agents Android™ Linux® Others® GPU SDRAM Bridge USB ETHERNET * Board tracing and debug is usually intrusive, affecting speed, performance measurements and behavior Peripherals UART GPIO Timer PHY PHY DDR3 Consistent hardware and software behavior Well defined system Timing • Instantly stop all system clocks Non-intrusive Visibility & Profiling* • No affect on behavior • Minor affect on performance
Debugger Connection to virtual target GDB Connection to CPU (Baremetal debug) “Host” Machine GPU LCD Video MPEG CPU CodeBench Virtual Edition IDE & Builder Compiler Bridge DMA USB ETHERNET PCI EXPRESS SDRAM Debugger Peripherals Profiler UART GPIO Timer PHY PHY PHY DDR3 Ethernet Connection to OS (Linux Mode) The debugger can connect to the virtual target in Linux or Baremetal mode without any Probe. Debugging link is set instantly.
Network & I/O Connectivity Virtual Platform “Host” Machine GPU LCD Video MPEG SW Developer Tools CPU GDB IDE & Builder DMA Bridge USB ETHERNET PCI EXPRESS SDRAM Embedded SW Device Compiler Peripherals UART GPIO Timer UI™ Debugger PHY PHY Phy DDR3 Terminal Application Stacks Profiler AUX • The Virtual Platform can connect through the host physical I/O’s • Eth, USB, LCD, keyboard • IP Address • Ping from terminal… Middleware, Agents Driver CDSP USB Connect Analog Standby/ Mute I2C Ampli Android™ Linux® Others® Driver Ethernet Connect I2C AM/FM Front End I2C DSP I2C Reset FM Front End Flash DRAM MNAND 16GB Audio data I2S Radio Processor DRA404HS I2C TMC Front End DAB DECODER DATA SPI BT I2S DAB Front End File I/O (gps, gyro) Virtual Drivers I2S To USB HUB IPOD chip Control UART I2C TU2 I2C TU2 Vehicle processor VµC V850 ENx Pins I2C Ampli I2C Ampli I2C DSP I2C DSP Standby Standby Reset CDSP Reset CDSP SPI Control Tx/Rx CAN TJA1054 I2C Eeprom EEPROM
Instantly Configure Hardware Configure Cache, MMU, # of cores Run regressions on multiple alternatives Configure Memory & Controller Configure Memory & Controller GPU GPU GPU GPU LCD Video LCD Video LCD Video MPEG MPEG MPEG LCD Video MPEG CPU CPU CPU CPU “Disable” selected IP’s “Disable” selected IP’s DMA DMA DMA DMA Bridge USB ETHERNET PCI EXPRESS SDRAM Bridge Bridge Bridge USB USB USB ETHERNET ETHERNET ETHERNET PCI EXPRESS PCI EXPRESS PCI EXPRESS SDRAM SDRAM SDRAM Peripherals Peripherals Peripherals Peripherals Manipulate Connectivity UART UART UART GPIO GPIO GPIO Timer Timer Timer UART GPIO Timer Manipulate Connectivity PHY PHY PHY PHY PHY PHY PHY PHY PHY DDR3 DDR3 DDR3 PHY PHY PHY DDR3 You can easily manipulate and configure the hardware Test platform derivatives and run trade off analysis Manipulate clocks Manipulate clocks
Tightly Coupled Debug Virtual Prototype Manager View registers and variables in the hardware model Break software execution on events in the hardware model
Deep non-intrusive visibility to hardware Trace Cache & MMU sequences GPU LCD Video MPEG CPU Trace All internal and I/O registers DMA Bridge USB ETHERNET PCI EXPRESS SDRAM Peripherals Trace All data transfers UART GPIO Timer PHY PHY PHY DDR3 When execution on a Virtual Target the user get deep and constant access at all times to all hardware internals. All tracing are collected on the host. This visibility is critical to unveil deep embedded bugs during OS bringup, running graphic application, etc. Trace All Memories
Non-intrusive SW trace & profiling • With a Virtual target, Software is executed on host using JIT (Just In Time) translation. This mechanism provide backdoor access to software without affecting target execution • Can inject test code, e.g. prints, callbacks • Controlled via scripts in real time • No recompilation is required • Software image untouched • All tracing collected on Host • Unlimited capacities • No affect on target performance • Can be used to various validation flows • Code Coverage • Software Profiling • Fault Injection Host Machine A Software Source B C D Trace Point Hardware state dependencies Software Image TCL Scripts A B C D X Executed on Host Virtual Platform Host Code Execution (JIT) A Code Injection Target ISS B X C D Print Log Assert Target Functionality & Timing not affected
Fault Injection during software debug Virtual Platforms can be manipulated to inject artificial faults, internal or from external devices at runtime GPU LCD Video MPEG CPU Injecting Software Faults Register security & safety failures Register values Protocol errors Tracking failure statistics over multiple lifecycles Bridge USB ETHERNET PCI EXPRESS SDRAM DMA Peripherals UART GPIO Timer PHY PHY Phy DDR3 AUX CDSP Analog Injecting Hardware Faults Interrupts Memory Failures Power Failures File system and disk failures External device failures Standby/ Mute I2C Ampli I2C AM/FM Front End I2C DSP I2C Reset FM Front End Flash DRAM MNAND 16GB Audio data I2S Radio Processor DRA404HS I2C TMC Front End DAB DECODER DATA SPI BT I2S DAB Front End I2S To USB HUB IPOD chip Control UART I2C TU2 I2C TU2 Vehicle processor VµC V850 ENx Pins I2C Ampli I2C Ampli I2C DSP I2C DSP Standby Standby Reset CDSP Reset CDSP SPI Control Tx/Rx CAN TJA1054 I2C Eeprom EEPROM
Profile Hardware / Software in synch Trace hardware and software simultaneously Hardware cache, power Software functions Processor access latency Explore DVFS and user experience senarious SW Functions (Start - End) Gant-Chart CPU States (active / sleep / Idle..) Power Consumption
SW – Cache – Power Interaction Power Consumption Cache Hit Rate Track SW calls Correlate SW to • Stack trace • Cache activity • Power consumption Identify functions for optimization • Cache hit percentage decreases • Power consumption increases
Software Profiling & Analysis GDB GPU LCD Video MPEG CPU DMA Bridge USB ETHERNET PCI EXPRESS SDRAM Embedded SW Device Peripherals UART GPIO Timer UI™ CPU Scheduling Function Call Hierarchy PHY PHY Phy DDR3 Application Stacks • E.g. Graphic Analysis • OpenGL and Qt Tracing • Smart Agents pinpoint miss behavior • Visibility into graphic execution layers AUX Middleware, Agents CDSP Analog Standby/ Mute I2C Ampli Android™ Linux® Others® I2C AM/FM Front End I2C DSP I2C Reset FM Front End OGLES Rendering Flash DRAM MNAND 16GB CPU Utilization Audio data I2S Radio Processor DRA404HS I2C TMC Front End DAB DECODER DATA SPI BT I2S DAB Front End I2S To USB HUB IPOD chip Control UART I2C TU2 I2C TU2 Vehicle processor VµC V850 ENx Pins I2C Ampli I2C Ampli I2C DSP I2C DSP Standby Standby Reset CDSP Reset CDSP SPI Control Tx/Rx CAN TJA1054 I2C Eeprom EEPROM
Example - Integrate with Automotive Network Simulation Matlab Simulink SWC SWC SWC AUTOSAR AUTOSAR AUTOSAR AUTOSAR RTE RTE HIL BSW BSW OS OS Virtual ISS/ECU Virtual ISS/ECU Bus • Easy configuration & manipulation (derivative) • Network & Absent Node Simulation • Timing, Performance & Utilization in Network context • SW Profiling in Network Context • Safety in Network context
Summary: Virtual Prototype Key Values While executing software on a Virtual Target is similar to executing on a physical board, it offers several key capabilities that are unique • Availability before silicon or hardware are committed • Instantly configure and manipulate hardware alternatives, derivatives and subsets • Deep non-intrusive visibility to HW and SW • “Unlimited” tracing capacities with no affect on behavior • Tightly control hardware software execution • Fast, deterministic execution of native embedded software • May have various abstraction levels and timing fidelities • Host resources provide real world I/O • Its Virtual! You can share it through emails
Non-intrusive visibility & debug Virtual Platform “Host” Machine GPU LCD Video MPEG SW Developer Tools CPU GDB IDE & Builder DMA Bridge USB ETHERNET PCI EXPRESS SDRAM Embedded SW Device Compiler Peripherals UART GPIO Timer UI™ Debugger PHY PHY Phy DDR3 • Backdoor access to software execution • Trace points at any Software location • Inject piece of code at Trace point during execution • Control and manipulate software execution • Hardware Tracing • Registers, CPU State & IRQ visibility, MMU & Caching sequences • Pipeline & Buffering • Throughput & Latencies Application Stacks Profiler HardwareTrace MemoryAllocation AUX Middleware, Agents CDSP Analog Standby/ Mute I2C Ampli Android™ Linux® Others® I2C AM/FM Front End I2C DSP I2C Reset FM Front End Flash DRAM MNAND 16GB Audio data I2S Radio Processor DRA404HS I2C TMC Front End DAB DECODER DATA SW Code Coverage SPI BT I2S DAB Front End I2S To USB HUB IPOD chip Control UART I2C TU2 I2C TU2 Vehicle processor VµC V850 ENx Pins I2C Ampli I2C Ampli I2C DSP I2C DSP Standby Standby Reset CDSP Reset CDSP SPI Control Tx/Rx CAN TJA1054 I2C Eeprom EEPROM