How to Use Simics Platform for Software Engineer Training

Every year, the hiring of software or test engineers is becoming increasingly challenging. According to a survey by Indeed, one of the largest online recruiting platforms, more than 86% of respondents, IT recruiting experts, mentioned the tech talent hiring process as a major challenge, and 83% noted that talent shortages affect business processes significantly through lost revenue, slower product development, burnout of employees having to take on additional workload, and problems in bringing products to market in time. At the same time, according to the survey results, there are enough candidates with basic computer science of coding bootcamp education on the market, but 77% of respondents described graduates’ skill level and experience with specific technologies as not corresponding with actual employers’ requirements.

Auriga’s clients know firsthand how challenging it can be to find engineers with specific skills, technology stacks, and backgrounds. In contrast to staffing agencies, Auriga is creative in solving recruiting problems. Back in 2006, we launched a Corporate Training Center with an actively developing knowledge base, our own tools, and trainers. Today, our training center provides educational courses and helps with engineering certification to staff Auriga’s projects efficiently. In this article, we would like to share one of our success stories, not only because it is an incredibly interesting and complex case in terms of technologies but also because we are proud of it as an example of a non-standard approach to training specialists and preserving and transferring knowledge.

One of our customers, a manufacturer of new-generation processors and the entire software ecosystem for them, needed to considerably expand a team of simulation model development experts in a fairly short time. A competent trainer, Alexey Ishchuk, helped us solve the problem by developing and introducing a unique training course for engineers. Please read further to learn how Alexey himself describes his approach and the course details.

Using Simulators for Engineer Training

Simulators are usually meant to be used for modeling purposes, not teaching. A natural question arises: Why should a software developer company spend time and money to train specialists instead of finding them in the market? The answer is both simple and complex.

On the one hand, customer demand is growing rapidly. Simulation model development and debugging skills are required for new operating systems and new equipment, including IoT devices, as well as for industrial automation. Simulators allow simultaneous parallel hardware and software development. The number of steps decreases and debugging starts much earlier than in the standard development model. Thus, the most advanced tech companies seek to take advantage of the unique opportunities. In addition, training employees during the transition from one project to another within the same company can speed up adaptation in a new project and reduce the burden on other team members, which is also welcomed by our customers.

On the other hand, there are few ready-to-recruit specialists on the global IT market skilled in operating system debugging, working with low-level devices, and analyzing situations arising from an emergency shutdown of an operating system. Developing a computer device model, even at the “black box” level, is a long and painstaking process. It is rather difficult to develop a model of a modern computer device because of the wide functionality of a real product, large number of modes of operation, and nuances of interaction with other devices (for example, over a computer network). This is not yet microelectronics, but it is no longer system programming. The model works at the junction of hardware and system software, so debugging device models and the operating system components working with them requires very specific skills. Predictably, engineers having such skill stacks are very rare in the labor market. Therefore, a reasonable way to deal with the personnel shortage and increasing demand is to screen suitable candidates and deliver specific simulator training sessions, tailored to the project and customer’s requirements, thus avoiding a long and costly search for the necessary experts.

What Is a Full-platform Simulator?

To deploy a simulator for software development, you should first develop a device simulation model and then use it to debug system components and application programs. You can develop a simulation model according to the functional specifications of a real device, gradually modifying it as the specification is refined, and in parallel with this develop programs (for example, device drivers). The model development strategy is to move from simple to complex and from borders to the center. First, you provide the basic functionality of the model and then the features and nuances of the simulated device functionality.

Full-platform simulators can simulate the entire hardware platform of a computer with enough precision to load a real operating system onto it. An acceptable level of performance for the system model is achieved by simplifying the device models that make up the platform. These models operate as a “black box,” in that they only respond in a given way to specified external signals (for example, data changes in the device registers). At the same time, the internal logic of the device and its functioning physics are not modeled, and maximum performance is achieved, which allows debugging the operating system components in real time.

Simics Simulator Benefits

Wind River Simics® is one of the most powerful simulators in terms of functionality available to a device developer and supported hardware platform models. In addition to motherboard components and their interactions, this simulator also provides support for simulating all known hardware interfaces (PCI, PCI Express, USB, SATA, etc.). The simulator itself works like a normal user process in the operating system environment. Although the execution of privileged processor commands is implemented through a special kernel module of the host operating system, interaction with low-level functions is minimized.

Wind River Simics® offers a hardware platform model and debugging tools that provide full training opportunities for specialists developing system software components. Using simulation models to train engineers has a number of advantages over real-world hardware. The model is a software model; therefore, firstly, nothing prevents a user from programming a detailed trace of events occurring in it, showing the states of the in and out registers and the history of interrupts. Secondly, replicating the model does not entail further costs to purchase devices. Since the execution environment for the simulator is a multi-user operating system, it is possible to save costs on organizing workplaces for students. There is no need to buy computers specifically for testing the components of operating systems developed during training.

Under the academic license to use Simics®, the software is supplied with the source code of models of real devices that can be used as prototypes for creating educational models of drivers and other components of the operating system. Despite the fact that they are educational, these models are quite complex, as they mimic the behavior of real devices. Therefore, we build the training in stages. First, we create our own set of models of training devices. The implementation of low-level model interaction (for example, of a PCI device with the simulation process) is done in Simics® as a library of functions for the DML language. It greatly simplifies the development of models of motherboard and peripheral components and allows the developer to concentrate on the logic of the model’s behavior.

In Conclusion

This training course allowed Auriga to fill positions on the project in a timely manner. Moreover, it gave many engineers the opportunity to discover a new knowledge area. Our customer reduced the development time and time-to-market for their product.

Sergey Ryby, Head of Auriga’s Training Center, commented:

We are always happy to launch new courses and learning tools at our training center. Therefore, when we got a request to train such niche specialists, we developed a completely unique training program and obtained an academic license from Wind River Simics®. Moreover, we invited a highly experienced simulation expert as a trainer. For two years now, we have been working with engineers from different cities, whom we scrupulously select from many candidates. We pay great attention to their CV and motivation to work in this particular area. We can teach students both face-to-face and online, which helps us provide training continuously, even during the COVID-19 pandemic. Graduates highly appreciated the training, and more than ten specialists joined Auriga’s engineering team after completing it.

About Auriga’s Training Center

Auriga has been running training courses since 2006, when our internal Linux Kernel course attracted the attention of large companies in India. Auriga’s experts were invited several times to present for representatives of IBM, Symantec, Mindtree Consulting, and others. Since then, Auriga has delivered hundreds of offline courses and online webinars. We implement 60–70 educational programs per year, and over 1,000 participants attend our courses annually. The total training duration exceeds 3,500 hours. In 2017, Auriga’s Corporate Training Center launched a new A-training educational initiative to provide free access to our internal courses for all software development and test engineers, analysts, architects, project managers, and team leaders willing to learn new skills and improve their existing ones.