Winston Churchill once said that the United Kingdom and the United States are two nations divided by a single language. Sometimes it seems like that in an embedded development environment. In the green corner – the hardies. These are people who think in volts and transistors and will spend enormous effort to reduce watts burned by a system. In the red corner – the softies. Their thinking is dominated by efficient code execution time. The difference between the two is nicely encapsulated in the story of a UNIX based system that was burning excessive power: the processor never seemed to go into any form of standby mode. The hardies naturally blamed the softies, who in return disclaimed all responsibility and also pointed out it would be very hard to find a culprit in the vast number of lines of code in the system. It took a very clever person to get to the bottom of it. The very clever person noticed that the screen prompt for input flashed regularly. Two lines of code ran this prompt, and they were responsible for keeping the processor awake. Merely disabling the two lines of code allowed the processor to move gracefully into a standby mode, saving considerable watts.
During system development, the hardies build virtual models and use simulators and emulators to evaluate architectural options, to optimise the implementation, and to chase bugs. The virtual models and the emulators have interfaces that match the hardies’ way of thinking. Softies work in a different world of development tools. If they want to use either the virtual models or the emulators, they have to leave their world and move into the alien world of the hardies. This requires learning not just a new interface, or even a new vocabulary, but coping with a different way of thinking.
Unusually for an EDA company, Mentor supports both hardies and softies in the embedded sector. The Nucleus RTOS has been around for years, and Mentor says it has been shipped in over 2.4 billion units. (The population of the world is only around 7 billion.) The company has also built its expertise in open source, and it has developed platforms of OS and tools for Linux and, more recently, for Android, as well as providing consultancy services in these areas. Late last year Mentor took over “certain assets” of CodeSourcery, which had been building open source tool chains.
Now it has extended the CodeSourcery products with the launch of Sourcery CodeBench with Sourcery SystemAnalyser. (Not the snappiest of titles, no matter how interesting the products.)
Sourcery CodeBench is not dissimilar to integrated development environments for creating embedded systems available from a range of sources, such as the IAR Workbench. Unlike IAR, it is open source and is based on a GNU tool chain and Eclipse. It provides C/C++ compilers, linkers, run-time libraries, debuggers, instruction set simulators for different target hardware, and so on. There are links for hooking the workbench into a hardware prototype or the end product, through JTAG, TRACE or a serial interface, allowing the developer to download code and exercise it. All in all it is pretty much the environment that a softie with some experience in developing embedded systems is used to.
What is new is that Mentor has added interfacing that allows the softie, while staying in the familiar CodeBench development environment, to hook into two of the Mentor tools for hardies, the Vista virtual prototyping environment and the Veloce SOC emulation tool.
Vista is a way for hardies to build their system as a model. It uses the technique of Transaction Level Modelling (TLM – as defined in the OSCI TLM 2.0 standard) to create a model of the system under development, covering functionality, timing and power, and communication interfaces. The system model uses models of processors, which can execute code at speeds equal to or even faster than the real silicon. It is designed for hardies to explore architectural options and then validate their decisions, including looking at power budgets. The idea behind TLM was that it would also, through the virtual prototype, provide a platform for software development. With the interface to CodeBench, this becomes more practicable.
Veloce is a family of hardware simulators/emulators, which allows the hardies to test and debug hardware before real silicon is available. They can be seriously big boxes (the largest one, the Veloce Maximus, is nearly ten feet long and seven feet high, burning 32 KWatt), and, again, the assumption has always been that they would be used for software as well as hardware development. Again, the interface to CodeBench makes this much more feasible.
The Sourcery CodeBench System Analyser, the other extension to the CodeBench, is designed to cope with the potentially enormous amounts of data that can be generated from Vista and Veloce as well as from JTAG, TRACE, and serial connections to hardware prototypes and the completed system. This data gets even bigger when the systems are deploying multicores and using multiple Operating Systems. There are several ways of viewing the data: for example, a process and thread view shows when a thread starts and finishes within the context of the other threads, clearly interesting in debugging. Other options provide for power and performance optimisation and also help in analysing the information from the use of breakpoints, program single stepping, and other normal debug techniques. It supports Nucleus and Mentor’s Linux plus any other flavour of Linux. It also supports bare metal systems.
If you have been following the Cadence EDA360 saga, the latest announcement also talks about virtual prototyping with virtual models and emulation/simulations, only using Cadence’s Palladium emulation box. Where Mentor is scoring is that it is making its resources easily available to the softies, within a familiar environment.
Of course, for this to be successful, companies developing embedded systems have to come to terms with spending money on software tools, something they seem reluctant to do. They also have to come to terms with letting the softies near the hardies’ toys. At the level of hardware prototypes, where availability of a board to each software developer can reduce project lifecycles and produce better quality software, there is strong anecdotal evidence that companies are reluctant to spend the extra few thousand dollars and instead insist on sharing.
But, on a positive note, the new interfaces and the analysis tool from Mentor have the potential to give the softies better tools and earlier access to the hardware – which have to be good things.