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
Frequently asked questions
Yes, you can cancel anytime from the Subscription tab in your account settings on the Perlego website. Your subscription will stay active until the end of your current billing period. Learn how to cancel your subscription.
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
Perlego offers two plans: Essential and Complete
Essential is ideal for learners and professionals who enjoy exploring a wide range of subjects. Access the Essential Library with 800,000+ trusted titles and best-sellers across business, personal growth, and the humanities. Includes unlimited reading time and Standard Read Aloud voice.
Complete: Perfect for advanced learners and researchers needing full, unrestricted access. Unlock 1.4M+ books across hundreds of subjects, including academic and specialized titles. The Complete Plan also includes advanced features like Premium Read Aloud and Research Assistant.
Both plans are available with monthly, semester, or annual billing cycles.
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, we’ve got you covered! Learn more here.
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Yes! You can use the Perlego app on both iOS or Android devices to read anytime, anywhere — even offline. Perfect for commutes or when you’re on the go. Please note we cannot support devices running on iOS 13 and Android 7 or earlier. Learn more about using the app.
Yes, you can access Software and System Development using Virtual Platforms by Daniel Aarno,Jakob Engblom in PDF and/or ePUB format, as well as other popular books in Informatik & Systemarchitektur. We have over one million books available in our catalogue for you to explore.
Chapter 1 explains why virtual platforms and full-system simulation like Simics is a critical tool for developing today’s complex computer-based systems. It describes how Simics helps deliver new solutions faster, and develop, debug, and maintain evermore complex systems throughout the lifecycle of a product. The chapter provides a high-level overview of why and where Simics is being applied to solve problems for software and system developers.
Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
—Alan Perlis, Epigrams on Programming, 1982
In just a few years, electronic systems have become significantly more complex. Now, even comparatively simple designs include multiple processors, a mixture of CPU types, digital signal processing (DSP), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), and other devices. Complementing the diverse combinations of hardware, today’s systems employ a variety of operating systems and application stacks that until recently would not have been combined within a single product or solution.
Unfortunately, however, as these systems have grown in complexity, the development tools and processes that were refined when single processors and basic client–server architectures were the rule have not kept pace. As a result, today’s system developers are challenged to find new ways to define system architectures, develop and integrate millions of lines of code, and deploy such complex systems. They must do this in ways that reduce risk and shorten the schedule while simultaneously resulting in a higher-quality product that is easier to support and maintain.
In addition to the growing complexity, the market also expects new systems to be delivered at a much higher pace. The product development lifecycle of most electronic systems has been significantly shortened over the last decade. Thus, today’s system developers are faced with two significant challenges: deliver new solutions faster, and develop, debug, and maintain ever more complex systems. Virtual platforms can help in addressing these two challenges.
The goal of this book is to inspire and educate the reader to find new ways to leverage the power of virtual platforms and full system simulation to improve their systems’ design and development activities. With this book we seek to share our experience, gathered over more than a decade, from working with our customers to help them realize the advantages of working in a simulation environment. This book is focused on virtual platforms created in Wind River Simics†, and although Simics offers many unique features, many of the techniques and challenges discussed apply to other virtual platform solutions as well.
At one level the book will address how to use Simics simulations to achieve your development goals as a leader of an organization. At another level, the book will discuss how to use Simics simulations to get actual tasks done. The book offers best practices along with real-life examples to help you understand how to get the most out of your Simics implementation. Design patterns and architectures that have been proven to work when building complex simulation systems involving many separate components are described. While the book is not intended to be a user manual, it is a comprehensive book on simulation using Simics, and we have tried to provide enough details for the book to be useful for someone trying to implement the concepts described.
This chapter introduces the reader to why virtual platforms and full-system simulation like Simics is a critical tool for developing today’s complex computer-based systems. The chapter defines the basic terminology and provides a high-level overview of why and where Simics is being applied to solve problems for software and system developers. The chapter concludes with an outline of the remaining chapters of the book.
Virtual Platforms
A virtual platform is a model of a hardware system that can run the same software as the hardware it models. The virtual platform is simulated on a host computer that may be different from the hardware modeled by the virtual platform. For example, a big-endian Power Architecture system with a controller area network (CAN) bus and other peripherals running VxWorks†can be simulated on a typical little-endian Intel® Architecture PC running a Linux†or Windows†operating system. A virtual platform is not limited to modeling a single processor or board, but can represent anything from a basic board with only a processor and memory to a complete system made up of network-connected boards, chassis, racks, and models of physical systems.
The key property of a virtual platform is its ability to run unmodified binaries of the software that will finally run on the real system, and run it fast enough to be useful for software developers. Such software includes low-level firmware and boot loaders, hypervisors, operating systems, drivers, middleware, and applications. Therefore, the virtual platform accurately models the aspects of the real system that are relevant for software, such as CPU instruction sets, device registers, memory maps, interrupts, and the functionality of the different devices. On the other hand, the virtual platform is typically not concerned with modeling the detailed implementation of the hardware, such as internal buses, clocks, pipelines, and caches.
By focusing the model on the hardware–software interface and functionality it is possible to achieve good performance and produce a virtual platform very early in the product lifecycle—two critical features required to address the aforementioned challenges.
Terminology
There are many terms in use for the kind of technology that Simics represents. This section defines some of the terminology the reader may come in contact with.
Simulation is a very broad term, used in many different fields. At its core, it means that you use computer software to build a model of some phenomenon you want to study and then run this simulator to understand the behavior of the modeled system. A simulation provides more flexibility than the real system, allows parameters to be set freely, provides better insight into the internal workings, and allows for the replay and repetition of scenarios. It also fundamentally avoids the need to build physical prototypes or experiments, which speeds up development. Simulation is used in every field of science and engineering. Simulations are used to predict weather, crash-test cars, design aircraft, understand economic mechanisms, and find new medicines. This book is primarily concerned with the simulation of a digital computer system (the target) using another digital computer system (the host).
Full-system simulation (FSS) is a term commonly used to describe Simics, and it captures the fact that the simulation targets an entire target system. Originally, the point of a full system was that the digital computer hardware model was sufficiently complete to run a real operating system (Magnusson et al., 1998). Over time, it has grown in scope, and today a full system often includes factors external to the digital computer hardware, such as models of the surrounding world and inputs and outputs from the outside. It also includes the use of the simulator to model collections of digital computer systems, such as multiple machines in a network or multiple boards in a rack. A simulation that cannot simulate more than a single system-on-chip (SoC) or board is not really a FSS today.
Virtual platform is the established term in the world of electronic design automation (EDA) for a piece of software that works like a piece of hardware and is capable of running software in lieu of the real hardware. Virtual platforms are used at many levels of abstraction, from cycle-accurate models that correctly emulate all pins and signals on buses and inside devices, to programmer’s view (PV) and transaction-level models (TLMs) that essentially work like Simics does. Virtual platforms are considered to be development tools.
Emulation is a term commonly used to indicate a software layer that lets a piece of software run on a platform it was not initially targeted to run on. Well-known examples are the Mac†68k emulator that Apple†used in the migration from the 68k-family of processors to the PowerPC†family, and the Rosetta emulator that allowed PowerPC binaries to run on Intel® Architecture in Apple’s next architectural transition. Simulators for old videogame platforms, such as the Nintendo†Entertainment System (NES), are also known as emulators to the public. We thus consider emulation in the software realm to mean something that runs software by translating binaries and operating system calls, where the primary use is to run software, not to develop it.
Virtualization in the IT world means the use of virtual machines to run multiple software loads on a single host. Virtualization as a principle traces its beginnings back to the IBM System/360 line in the 1970s, and today there is a wealth of virtualization solutions available on standard Intel hardware such as KVM, VMware†, Xen, Hyper-V, Virtualbox, and many others. A virtual machine runs a real operating system, but often employs special drivers and input/output (I/O) mechanisms to optimize performance for disks and networking. The goal is to provide an isolated and manageable container for a particular workload. A key property of virtualization is that it provides virtual clones of the underlying host machine—a virtualization system cannot provide a target system that is fundamentally different from the host.
In EDA some of these terms have specific meanings. An emulator is a custom hardware system that runs the register-transfer level (RTL) of a new design without having to actually manufacture a chip. Emulators are optimized for execution speed, even if they also typically support some development. A simulator is a software program that simulates the RTL. This is very slow, but it also does not require any special hardware, and it provides very detailed insight into the execution of the system. For understanding and debugging a hardware design, a simulator is the gold standard. A field-programmable gate array prototype synthesizes the hardware design to run on an FPGA, rather than for ASIC production. The functionality is the same, but the detailed timing behavior is not. Still, it is much cheaper than using an emulator and runs much faster than a simulator. If seen in software terms, this is the equivalent of using the same source code, but compiling it for a different architecture and operating system.
Simulation and the System Development Lifecycle
Full-system simulation can be applied during the complete system development lifecycle as shown in Figure 1.1. It helps in designing and defining systems by providing an executable model of the hardware interface and hardware setup. FSS supports hardware and software architecture work, and it validates that the hardware can be efficiently used from the software stack. Full-system simulation is used to develop low-level firmware, system software, and application-level software. Testing and integration can be performed on the simulator as well as on hardware, providing increased hardware flexibility and developer agility. The software development schedule can be decoupled from the availability of hardware. Using a simulator improves software development productivity by providing a better environment than hardware, especially for reproducing issues, debugging, and automated testing and execution.
Figure 1.1 System development lifecycle.
The following sections describe various ways in which virtual platforms are being used to make developers more efficient throughout the product lifecycle.
Hardware Development and Design
A virtual platform is a common tool in the design of new computer systems and new SoC designs. Early hardware design models tend to focus on performance modeling without much care for the actual functionality and what is being computed, which is not really a good match for the Simics-style fast functional simulation. Still, Simics-style virtual platforms are very useful during the hardware design, because Simics provides a means to define and test the functional design of the hardware system. It feeds into pre-silicon software development, as discussed in the next section.
It is also quite common to use fast virtual platforms with a few components swapped out for detailed cycle-accurate and bit-accurate models to perform component-level tests with real workloads and component-level verification and validation work. Chapter 9 discusses how such mixed-level simulations can be built by combining elements from multiple different simulation systems.
Pre-Silicon
When developing a new chip, FSSs like Simics are used to develop software long before the...