Wind River® Simics is a smarter way to develop software, based on simulation of your full system. Working independently of hardware, you can decouple activities, break dependencies, and work concurrently, producing results at velocities simply impossible with physical systems.
Simics makes it easy to experiment with different hardware setups, software applications, and platform configurations to validate assumptions before committing to system design. Test the way your software behaves and scales by varying memory size, core count, processor speed, and number of boards in a network, in any variation of circumstances. And run software setups from various generations on different hardware to ensure that the old works with the new as it should.
Run your software on the virtual system just as it would run on the physical system, without the limitations of physical systems. With Simics, the software binaries you run on the virtual system are the same you’ll run on the real target—and all developers can run them from the very start. You can also integrate the real software running on a virtual target with hardware-in-the-loop and simulation-in-the-loop setups. Simics can interface to the real world as well as to virtual worlds, allowing software to be tested and run in virtually real setups.
Simics allows software development, QA, and integration to start earlier and progress concurrently. Develop and test individual pieces of the system on the fly, avoiding a risky “big-bang” integration phase at the end. Automate your complete test environment, with unlimited numbers of target systems to run tests in parallel. And run automated nightly builds that test the latest check-ins, with complete reports in the morning.
Simics also allows you to easily test error handling and fault recovery code, using fault injection to affect arbitrary parts of the hardware (and sometimes software) state with perfect precision and with no risk of breaking expensive hardware. With Simics, you can easily test system parts that are otherwise almost impossible to test at all.
Simics makes problem isolation and analysis much more efficient. Debug all your software (including BIOS, drivers, low-level software, and OS-level code) without access to hardware and with perfect control over the virtual target. Start, stop, single-step, and reverse the system to find out exactly where and why it breaks—and email the resulting setup and analysis to colleagues around the globe. With Simics’ determinism you have perfect repeatability—you know that issues found on the virtual target can be repeated any time, anywhere.
Use the scripting and programmability of Simics to automate bug detection. The Simics debugger debugs an entire target system as a unit, including all levels of the software stack and even multiple OS instances and boards. And with Simics’ OS awareness you can debug individual user space applications alongside the OS, hypervisor, and BIOS.
Many application developers use substitutes for their software development, debugging, and testing tasks because of bad experiences using target hardware. Since they then use a different toolchain and run their code on a different architecture, many problems do not appear until the code is compiled for the real target and integrated onto the target system. Because this activity occurs late in the development process, problems found at this stage can have huge repercussions on the overall schedule and product reliability. With Simics, application developers can use the real target from the start, with the same toolchain, libraries, operating system API, and operating system behavior. With virtual targets there is no lack of hardware access, no managing of complex configuration and different setups, no flaky hardware not working, and no expensive shipping of hardware.
Use a Simics Quick Start Platform to equip application developers with a target of the right architecture and operating system long before the actual target hardware has been designed, developed, and manufactured.
Enable your product users with virtual systems in all phases of the product lifecycle. For example, a semiconductor vendor can seed its customers with early access to a new chip, far in advance of prototype silicon. An internal development group can provide platform integrators and application development teams with virtual boards while the real board is being designed. Partner companies working on different parts of a program can share a common system for development. Operations teams in sales, customer satisfaction, partner enablement, and training can get huge boosts by deploying simulated hardware to their teams. Sales can demonstrate new products before they are available to shrink the gap between product release and revenue. And with simulated hardware, training is no longer limited by the expense constraints of physical hardware, making it possible to train more people, faster.
With Simics, a target system setup is just software, so you can control almost any parameter of the target system using scripts and Simics modules—from simple things, such as the MAC address of a board, to the more complex, such as particular software loaded on a certain board when it is inserted into a certain position of a backplane. Simics uses a programmatic model for configuring systems, making it easy to vary configurations under script control. And configurations work the same today as they will tomorrow—anywhere in the world.
Easily store multiple configurations of the system with instant recall of any setup. Set up with an infinite supply of boards, and with no need to physically visit the lab to change configurations. And use the System Editor to inspect and interactively change setups during a run.
Keep a virtual version of in-field systems up to date for testing hardware and software updates, making modifications, and upgrading products. Customer service can have every customer configuration at its fingertips to effortlessly reproduce errors and solve customer issues.
Simics makes it possible to consider the system’s hardware, software, current state, and execution history as a single unit that can be copied, communicated, and replicated with ease by anyone on the team, anywhere in the world. With Simics, communication between development, test, integration, support, and sustain teams is effortless.
Simics assets such as device models, target configurations, system setups, automation scripts, checkpoints, traffic recordings, and debug configurations are all designed to be shared between users and teams. Metadata can be added in the form of user-editable comments, documentation strings, or time-stamped notes during the system execution to help the recipient of a setup understand how the current state was created.
Platform development teams can build, configure, and boot complete platform setups and distribute them to all developers so they always have the latest setup. And when a QA team observes test failures, it can use Simics checkpoints and determinism to reliably repeat the failing test cases on the developer’s machine—with cycle-perfect precision and guaranteed success.