The Perfect Project
EXECUTIVE SUMMARY
How software is developed and delivered affects the bottom line at most industry companies. Software now represents the bigger value contribution, and offers the possibility to differentiate your product from the competition. So how software gets developed, and how it gets delivered, are no longer isolated questions for the engineering department—they are executive staff questions that affect the company’s bottom line.
Software development practices are undergoing dramatic changes. Continuous and Agile practices are used everywhere, all for the better. But inefficiencies are still huge in the embedded technology industry, and changes are slow.
It doesn’t have to be this way. Using Wind River® Simics® for system simulation allows access to target systems, tools for collaboration across teams, and new possibilities for automating what is not feasible in the “physical” world—all of which means that Simics enables the fundamentals of Agile practices. In this paper we will detail how providing access, collaboration, and automation have achieved the following:

THE PERFECT PROJECT
Your company builds complex electronic systems (networking equipment, systems for the Internet of Things, automotive systems, industrial robots, flight engines, etc.). In these systems, hardware meets software; your technical world involves multi-core hardware with multi-staged pipelines, heterogeneous systems, hardware accelerators, special purpose devices, ASICs, and more.
Your software ranges from advanced firmware and boot software to complex OS set-ups, virtualization technology, complex I/O, networking management, data throughput analysis, fault software diagnostics … the list goes on. Your world is complex.
You’re also part of an ecosystem, internally, externally, or both. You rely on other departments, units, subsidiaries, or third parties to deliver to you on time, and they rely on you. You also need to enable your users—partners or customers—with your technology and software development kits (SDKs) for developing certain functions of the complete system. With this web of dependencies comes risk.
To manage these two factors, technical complexity and risk, you must address developer efficiency and risk management. If you succeed, your reward will be shorter time-to-market, shorter timetomoney, and lower total cost of ownership: the perfect project.
What Is Perfection?
Perfection is an aspirational notion, so really this paper attempts to describe a more perfect project. By piecing together real-life scenarios from actual customers into one composite project, this paper is intended to help you visualize what a better, more efficient future might look like.
We discuss five main activities: design, development, testing, integration, and enabling customers and your ecosystem. Within this framework, we give examples of how Simics has been used by our existing customers, in order to illustrate what a “perfect project” might look like. We also describe the significant impact simulation can have on developer efficiency and risk management. We’ll leave it to you to consider how pieces of this perfect project could expand across your organization to become a portfolio of “perfect projects.”
Simics enables Agile and Continuous Integration practices by providing access, automation, and collaboration.
This paper is not about one project that accomplished everything discussed, but rather a composite of project components. Each individual component story is taken directly from one of our customers and is based on actual use. Every component, and every benefit discussed, has been experienced by at least one of our customers.
PROJECT PHASES
Design
Define Your System Before Hardware Is Locked Down
Every project starts with a design, or a definition. In the perfect project, using a virtual platform instead of physical hardware in this early phase enables you to define the system virtually and decide on a system design before hardware design is locked down and taped out.
If you have a blank slate, with no legacy to consider, a virtual platform allows you to be creative without limits. Of course, in the real world this rarely happens. Instead you likely have a previous generation of your product that you will reuse pieces of—either software or hardware, or both. Whether you are starting from scratch or building on a legacy, when defining your next-generation product you will have access to a virtual platform of the hardware, and you can now play with what-if scenarios:
What happens if you move a software function from device A to device B? What happens if you scale up memory to be very large? What happens if you run the software on 12 cores instead of two? What happens if you move connector type T from board A to board B, or if you switch to using connector type S? In the perfect project you will develop hardware and software in tandem. You will let software design influence the overall system design—not hardware design. The benefit of defining your system virtually in this way is that you try out scenarios before you lock down the hardware design and before you tape out. The value of this risk mitigation is nearly impossible to quantify because you really don’t know what you don’t know. But most would agree that hardware errors, late tape outs, and early design misses can be extremely costly.