When I was working at Synopsys, a marketing director took the trouble to come to my office late on a Friday afternoon to express his concern that our company's focus on system-on-chip (SoC) was missing the market reality. "Only 3 percent of chips currently would be described as SoCs!" he lamented. He was concerned that I and my co-conspirators were going to drag the company down the tubes with an SoC focus.
We stayed way too late that night drawing chip diagrams on the white board and trying to define the key elements of an SoC. In retrospect, we all spent way too much time debating what an SoC was and not enough time trying to figure out how to build one. I get a sinking feeling the industry is making the same mistake all over again with platforms. So let's get the "what'' out of the way now so we can get onto the "how'' before it's too late.
You've heard the challenges (and their acronyms) before: DSM, mixed signal, HW/SW, million-dollar mask sets and TTM. It all adds up to the simple fact that design of an SoC is risky and expensive. Some of my colleagues look at the mounting costs and announce the end of silicon as we've known it. I counter that you can't focus on costs alone. Increasingly, large markets await ICs devices successfully meeting the needs of the market, and the resulting revenues will more than compensate for the higher costs of development and manufacture.
Create a platform
The straightforward way to deal with the economics of the situation is to amortize the cost of an IC design over many design wins. How do you do that? Create a platform. My colleague, Alberto Sangiovanni-Vincentelli, describes a platform as "a layer of abstraction with two views: The upper view is the abstraction of the design below so that an application could be developed on the abstraction without referring to the lower levels of abstraction. The lower view is the set of rules that integrates components as part of the platform." At the Gigascale Silicon Research Center (GSRC) we've identified three important types of platforms for integrated circuits: architectural platforms, silicon implementation platforms and technology platforms. I'm going to focus on my own hobbyhorse: the architectural platform.
First let's ask: Is the notion of an architectural platform just a new name for the old familiar SoC? I don't think so. An SoC is most often just a haphazard collection of parts. How do you design and program an SoC? Exactly the way you designed and programmed the parts. There is no abstraction layer whatsoever. The ad hoc approach to SoC design simply cannot scale with Moore's Law because it does not sufficiently reduce the complexity of SoC design.
By contrast, in an architectural platform the integrated circuit has an abstraction layer that unifies the underlying components. In my own view, this abstraction layer will take a very particular form: a programming model. In other words, successful architectural platforms of the future will most often be highly or fully programmable devices, and the platform will be deployed with a single integral programming model. A successful programming model must be usable by the system developer and must be supported by a development environment that will allow for achieving system performance constraints. A successful programming model abstracts the 20 percent of the underlying device that is required to get 80 percent of the performance.
A successful programming model may or may not be a conventional programming language, and the target device may or may not be an assemblage of conventional processors. The use of Matlab and Simulink in the Xilinx System Generator for DSP presents an interesting alternative for programming FPGAs. The key point is that the entire underlying device may be programmed in a single integral fashion. Software development environments using attractive programming models are certain to become differentiating features among programmable platforms. The "software-development environment as afterthought'' era of integrated circuit design is rapidly drawing to a close.
In summary, system functionality will increasingly be implemented on programmable platforms. Successful programmable platforms will be those offering a programming environment that abstracts the key characteristics of the device in a way that is natural for the system developer and offers the developer sufficient visibility into the device so that performance can be tuned as required. The migration of system functionality out of ASICs and on to programmable platforms will have a significant impact on both the IC and EDA industries.
Kurt Keutzer is a professor of EE and computer science at U.C. Berkeley.