Software and System Development using Virtual Platforms

Book description

Virtual platforms are finding widespread use in both pre- and post-silicon computer software and system development. They reduce time to market, improve system quality, make development more efficient, and enable truly concurrent hardware/software design and bring-up. Virtual platforms increase productivity with unparalleled inspection, configuration, and injection capabilities. In combination with other types of simulators, they provide full-system simulations where computer systems can be tested together with the environment in which they operate.

This book is not only about what simulation is and why it is important, it will also cover the methods of building and using simulators for computer-based systems. Inside you’ll find a comprehensive book about simulation best practice and design patterns, using Simics as its base along with real-life examples to get the most out of your Simics implementation. You’ll learn about: Simics architecture, model-driven development, virtual platform modelling, networking, contiguous integration, debugging, reverse execution, simulator integration, workflow optimization, tool automation, and much more.

  • Distills decades of experience in using and building virtual platforms to help readers realize the full potential of virtual platform simulation
  • Covers modeling related use-cases including devices, systems, extensions, and fault injection
  • Explains how simulations can influence software development, debugging, system configuration, networking, and more
  • Discusses how to build complete full-system simulation systems from a mix of simulators

Table of contents

  1. Cover image
  2. Title page
  3. Copyright
  4. Foreword
  5. Acknowledgments
  6. Chapter 1. Introduction
    1. Virtual Platforms
    2. Simulation and the System Development Lifecycle
    3. Model-Driven Development
    4. Book Outline
    5. Trademark Information
  7. Chapter 2. Simics fundamentals
    1. Simics† Architecture and Terminology
    2. Running Real Software Stacks
    3. Interacting with Simics
    4. Configurations and the Simics Object Model
    5. Components
    6. Time in Simics
    7. Abstraction Levels
    8. Event-Based Simulation
    9. Memory Maps
    10. Memory Images
    11. Checkpointing
    12. Determinism and Repeatability
    13. Simics Performance Technology
    14. Models and Extensions
  8. Chapter 3. Develop and debug software on Simics
    1. Development Means Testing
    2. Agent-Based Debugger
    3. Debugging Using Simics
    4. Performance Analysis
    5. Inspecting the Hardware State
    6. Fault-Injection and Boundary Conditions
    7. Using Checkpoints
    8. Loading Software
    9. Continuous Integration
    10. Shortcuts in the Software Stack
  9. Chapter 4. System configuration in Simics
    1. Simics Component System
    2. Setup Scripts
    3. Automating Target Configuration and Boot
  10. Chapter 5. Networking
    1. Network Simulation in Simics
    2. Simulated Network Nodes
    3. Traffic Inspection and Modification
    4. Scaling Up the Network Size
    5. Connecting the Real World
    6. Ethernet Real-Network Variants
    7. Programming New Networks
  11. Chapter 6. Building virtual platforms
    1. The Purpose of the Model
    2. Virtual Platforms in Simics
    3. Device Modeling Language
    4. Reusing Existing Information
    5. DML Features
    6. Creating Device Models
    7. Completing the Device Model
    8. Reserved Registers and Missed Accesses
    9. Creating Models in Other Languages
  12. Chapter 7. DMA: A concrete modeling example
    1. DMA Device Description
    2. Implementing the Basic DMA Device Model
    3. Creating a PCI Express (PCIe) Model
    4. Creating a Component for the DMA Model
    5. Creating a Device Driver
  13. Chapter 8. Simulator extensions
    1. Introduction
    2. Implementing Extensions
    3. Cache and Memory Simulation
    4. Fault Injection
  14. Chapter 9. Simulator integration
    1. Introduction
    2. Problems and Solutions
    3. Run Control
    4. Launching and Embedding
    5. Time Management
    6. Communications
    7. Frontends
    8. Running Simics from Other Programs
    9. Record–Replay Debugging of Target Software
    10. Running on a Simics Target
    11. Multiple Simulator APIs
    12. Simics Processor API
  15. Chapter 10. Intel® architecture bring-up
    1. Pre-Silicon Process
    2. Early OS Enabling
    3. Post-Silicon Process
    4. Post-Silicon Case Study: PXE
  16. Appendix A. Source code
    1. Chapter 6: Counter Device
    2. Chapter 7: DMA Device
  17. References
  18. Index

Product information

  • Title: Software and System Development using Virtual Platforms
  • Author(s): Daniel Aarno, Jakob Engblom
  • Release date: September 2014
  • Publisher(s): Morgan Kaufmann
  • ISBN: 9780128008133