Simics 4.8 is Here

By Jakob Engblom

Engblom_lgSimics 4.8 is now generally available for old and new users to enjoy. I will be doing a series of blog posts going into the details on what is new and improved in this release. Simics 4.8 represents a significant improvement in the Simics user interface and collaboration features, as well as tweaks to the simulator performance, debugger, and modeling workflow, so there  is quite a bit to talk about. We start off with an overview of the news.

The most visible new functions in Simics 4.8 are found in the Eclipse user interface. We have added several new views and features to help users gain insight into their simulations, debug more efficiently, ease device modeling, and communicate within and between teams. We have also added some significant new performance technologies and more collaboration features to Simics checkpoints.

Insight

The System Editor provides a GUI display of the hierarchy of components and devices that make up a Simics target system, making it much easier to understand how a system is constructed. It lets you inspect the properties of all parts of the system, and also to make changes to the setup including tasks like adding in new PCI cards or connecting and disconnecting network cables. TheDevice Register view provides information on the bit fields in a device register, making it easier to find the value of flags and other bit fields. I will discuss the details of the System Editor in an upcoming blog post.

Eclipse system editor overview 4.8.5

Modeling

Modeling support in Eclipse has been extended in Simics 4.8, in particular with the ability to run device unit tests and to browse example source code. In the screenshot below, we see the Test Runner in the upper-right hand corner, and the Sample Device browser below it. The Eclipse “New Sample Device” wizard creates new devices (and other modules) based on the examples provided with Simics (or just an empty skeleton if that is all you need). The Sample Device view lets you look at the example code without necessarily creating a new device model in your own workspace, which is quite convenient.

Modeling perspective

Syntax highlighting for Simics DML is provided by the Simics Eclipse plugins. If you want syntax highlighting for Python code, it is simple to add a Python development environment to Eclipse. The popular PyDev environment works just fine with Simics, as would be expected from well-behaved Eclipse plugins.

Debugger

Building on TCF-based debugger, we have added several new views to the Simics Eclipse UI to help debug and analyze a system more efficiently. 

The most innovative view is the Stop Log, where the debugger notes where the execution has stopped and the time since the last stop. We have noted that it is quite easy to get lost in time and space when using reverse execution. As you move back and forth in time, just where are you and how did you get where you are? While the timeline view tells you where you are, the stop log tells you how you got there. Here is a simple example from a reverse debug session:

Stop log view

Note how we first run the execution forwards for 177 thousand steps (instructions), and then turn around and reverse back some 79 thousand steps to hit a breakpoint. After that, we finished up by doing some system-level single steps forwards and backwards. In this way, it is very easy to tell if you hit a breakpoint close in time, or if you misunderstood the situation and suddenly jumped way back in the execution history of the system. It makes it much easier to understand just where in time you are, and the debug actions that got you here.

The Symbol Browser is a TCF feature that was added to Simics 4.8 (and which is also rolling out in the Simics 4.6 Eclipse debugger). It makes it possible to search the debug information loaded for a target system to find particular symbols, variables, and functions. It provides an efficient workflow for setting breakpoints on functions and variable accesses, as well as a way to understand the symbols loaded and where they are located. This helps in working out low-level debug scenarios where you might have to manually relocate symbols or understand where something is loaded or mapped.

Symbol browser

Collaboration

The Simics checkpoint system now includes the ability to include a recording of an execution as part of a checkpoint. This means that rather than just communicating the instantaneous state of the system at a single point in time, checkpoints can now communicate the system execution from a period of time. Checkpoints in Simics 4.8 can thus be considered like a movie recording of the execution of a system, making it very simple to show team members and others just what has been observed in a Simics run.

Users can also add comments to the simulation as it executes, attaching little notes of information to certain points in time. These comments are stored in checkpoints and provide a persistent log of major operations on the system, as defined by the user.

Collaboration views simple overview

The collaboration features of Simics 4.8 will be explored in more depth in a future blog post.

Performance

There are some new performance technologies debuting in Simics 4.8.

First of all, we have automatic hypersimulation. Hypersimulation is the ability of Simics to run very quickly forward when nothing is happening in the virtual system. Essentially, since Simics has total control over the target, when the target software is idling, it can skip ahead to the next interrupt, device action, or timer event in the simulated system. Simics has always exploited simple waiting patterns like a branch-to-self instruction, the x86 HLT instruction, and a Power Architecture processor going into nap mode. With Simics 4.8, it can also analyze the instruction stream and automatically detect loops that do nothing, automatically turning them into hypersimulation. This ability catches most typical OS idle loops, and brings marked speed increases to many target systems that used to idle poorly.

A second technology is the use of the host MMU to simulate the target MMU, which reduces the overhead of MMU simulation for certain types of target code. This has significant effect on the performance of code that makes a lot of memory accesses. A third technology is the offloading of the Simics ISS JIT engine to a second host core, reducing the performance jitter resulting from the JIT compiler alternating with the main execution thread of an ISS.

Taken together, Simics 4.8 keeps advancing the performance of Simics, keeping Simics at the forefront of fast virtual platform instruction set simulation.

For additional information from Wind River, visit us on Facebook

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>