Working for Mentor Graphics is interesting, but can have some challenges. One of the facets of the company that makes us unique is embedded software. There are a couple of other companies that Mentor would regard as key competitors, but they are both totally focussed on electronic hardware design – “electronic design automation” [EDA]. A very large part of Mentor has that orientation, but we are unique in having the Embedded Systems Division. Of course, there are plenty of other embedded software companies, but they do not operate in the hardware design space.
The logic behind an EDA firm being involved in software is clear: an electronic system of any significant level of complexity delivers functionality via a combination of hardware and software. As a company, understanding both domains gives us the chance to serve our customers better – to offer more complete solutions.
Of course, we do all of this, but we run into communication problems …
Although it is now more than 13 years since Mentor acquired the company that I worked for and, hence, started its investment in embedded software, I still find myself surrounded by people who speak a different language. They talk about “synthesis” and “netlists” and think that “IP” stands for “intellectual property” [whereas I think “Internet protocol”]. An operating system is something that runs on a desktop computer – an RTOS is not familiar. And when I talk about embedding Linux in a device, confused looks are the result.
I recently ran into a new terminological challenge. This came about because there is increasing interest in multi-core systems: devices that incorporate multiple CPUs – either multiple chips or multiple processor cores on a single chip. Typically, the functionality of a device is spread across the CPUs so that one [or one group] performs the high speed, hard real time activities and another looks after functionality which in not time critical. An example might be a digital TV system, where one processor looks after the processing of the media stream and another looks after file management and the user interface.
This kind of system architecture is interesting because the operating system requirements of the two parts of the system are different. The hard real time part needs a true RTOS [like our own Nucleus OS]; the other part may be best served by Linux.
The question is: what do we call these two distinctly different parts of a multi-core system? My EDA colleagues make references to the “data plane” and the “control plane”, but these terms are not intuitive to me. Am I out of touch or is it a hardware/software thing? I would appreciate any feedback either via a comment or by email. Thanks in advance.