I was recently asked to participate in a “panel” article in a UK electronics publication. The topic was the apparent decline importance of hardware design, over software design, in embedded systems. An interesting subject - I needed to be careful what I said, as I work for a company where 90% of my colleagues are hardware design specialists! The final piece can be seen here.
I was sent a set of questions, my answers to which were integrated with others of produce the final publication. I though that readers might be interested in the Q&As …
In your experience, what is the balance between hardware and software resources in a typical embedded design project?
In the past, there were typically more hardware developers than software guys. This is now reversed, with 2X to 10X or more software to hardware engineers.
How has this changed in the last couple of years? How do you see this changing in the future?
The proportion of software expertise has steadily risen. Its composition has changed too. An increasing number of software developers working on embedded applications do not have any background or specific expertise in embedded, having come from a desktop programming background.
Even though software is becoming dominant, hardware design must still be an important part of the process. So where is the focus now?
Of course, hardware design is still important - something has to be designed to run the software on! The design effort is largely focussed on providing a platform suitable for the execution of software that facilitates the functionality of the embedded application. The key requirements are providing the required performance and controlling power consumption.
Also, whilst new hardware platforms enable much more capability and are a great opportunity for software teams, the platforms often require additional peripheral hardware to make use of them. For example: the Kinect add-on for the Xbox requires quite a lot more hardware. So hardware design is not diminishing in importance
Will hardware design become more a case of joining ‘black boxes’ together?
It might be argued [by a software engineer at least] that, since the invention of the integrated circuit, that is exactly what hardware design has been all about. Of course, in reality, considerable expertise is required to address timing in high performance designs, deal with power issues and then there is the interface to the real world, where the black art of analogue design comes into its own.
If software design is getting more complex, how are suppliers helping to address the challenges?
Firstly, the creation of new software is supported by the provision for sophisticated tool sets. Traditional tools, like build tools and debuggers are getting better all the time, but these are complemented by newer technology. Simulation enables extensive work to be undertaken ahead of the availability of hardware or even the final commitment of its design. Profilers enable the real time behaviour of software to be observed and optimized. New tools enable further optimization oriented at minimizing power consumption. For Linux developers, apart from just getting tools to help with the technicalities of creating code, the legal aspects of reusing open source IP are also addressed.
Secondly, the range of available software IP is increasing. Conventional real time operating systems are complemented by extensive middleware addressing needs for connectivity, data management and user interface facilities. Linux development is eased by the use of Android, which itself has spawned a market for add-on software components such as UI enhancement/characterization. Overall, the options for using off-the-shelf software components are broadening significantly.
And what about developing software for multicore mcus?
Multicore designs are becoming more and more common and present some unique challenges. A multicore design may be homogeneous, where all the CPUs are identical, or heterogeneous, where multiple CPU architectures are utilized.
The alternative, which may be used with homogeneous or heterogeneous multicore, is AMP [Asymmetrical Multi-Processing], where each CPU runs its own instance of an OS. Each CPU’s OS may be different, if that accommodates design goals in an optimal fashion; for example, CPUs performing real time activity might use a classical RTOS, whereas others might run Linux/Android.
For AMP designs, inter-CPU communication is a challenge and standards such as MCAPI offer the opportunity to maintain source code compatibility across multiple operating systems.
If design is becoming more software based, does the UK have enough expertise to meet demand?
Probably not. Although the industry has a wealth of talent today, I wonder where the next generation is going to come from. Software, like electronics, courses at universities are not attracting very large intakes. The graduates that do come into the industry often seem to be well versed in certain areas, like programming in Java, which are of limited value, and need further training in C and/or C++ to become useful and productive.
In conclusion, is the hardware designer an ‘endangered species’?
Hardware designers will certainly continue to be needed! However, their role is evolving. As I mentioned before, a focus is needed on power consumption and performance optimization. Most importantly, hardware designers need to understand the requirements of their software counterparts and work closely with them to complete complex designs.
Are there any other comments you would like to make?
There are many challenges ahead. The 10x the number of software engineers clearly indicates that there must be an opportunity for automation. EDA companies have provided the automation for hardware designers over the past decades. A challenge now, is how to provide similar productivity tools for the software community.
Mentor Graphics is unusual among EDA companies in positioning itself for this. We have combined many years of in-house embedded design tool development, with acquisitions such as Embedded Alley for Android platforms, and deep involvement in designing mobile systems, all of which reflect and contribute to a firm belief in the centrality of the software that drives the electronics. The hardware car always has software at the wheel.