The ever-increasing chip transistor counts allow us to integrate complex systems on a single chip. When such chips are offered for sale, they're typically accompanied by a data sheet hefty enough to choke a horse.
Although every nuance covered in a data sheet may not be necessary for a chip to do its job, the amount of data that a designer must absorb to make the chip (and system) work is almost like cramming for the final exam to a class rarely attended. In a complex multichip system, the learning process must happen repeatedly as each chip or ASIC has to be integrated into the system architecture. The large amount of time devoted to just learning how the chips operate could impact development cycles unless the chip suppliers can provide early customer access to the functional details.
But simply getting a chip to operate in its basic modes typically isn't enough. The challenge is making it do more so that you can differentiate your solution. Often, by working hand in hand with manufacturer application support, you can get the chip up and running in some of its more advanced modes much quicker than by only studying the data sheet. Vendors can also help by providing libraries of sample software, development boards, and links to partner support from suppliers of tools such as compilers, debuggers, application software, and much more.
Once the basic operation is stable, then come the two dreaded words—enhancements and optimizations. To accomplish these tasks requires a deeper understanding of the chips, their architecture, and the command structure or instruction set. Many times, the chip vendors will offer training classes to indoctrinate designers and explain all the fine points of the device's operating modes and register settings. But then the challenge comes—applying all of that information to a particular system implementation to maximize performance or add specialized features that give your application or customers extra value.
Here patience and perseverance must combine forces for the design to succeed. Many of the new controller chips contain hundreds to over a thousand registers that configure the chip to handle the various tasks. Although data sheets may say one thing, very often there could be idiosyncrasies not caught by manufacturers before producing the chip. Data dependencies or particular operation sequences in which a register wasn't properly set or cleared are examples. So even though you followed the data sheet model to a T, if the model has flaws, your system won't work. Troubleshooting these nonobvious problems probably presents some of the most time-consuming challenges when bringing up a new system.
The modeling challenge won't get any easier in the future. Still more-complex chip designs are on the drawing boards, many of which will contain multiple processors and other complex function blocks that all have to work in unison. Software will also play a more important role by allowing designers to add new features and differentiate their systems.
Manufacturers of the complex chips must be able to craft good software models of the register control structure, then make them available to designers long before silicon is delivered. Early delivery of design models and software tools enable system software development to start well before the hardware implementation. This will be key in most systems as software has become a larger percentage than hardware of most designs.
Will future systems tilt even further toward software-based solutions? This could lead to a targeted, yet "universal," programmable system-on-a-chip platform that would allow designers to very quickly bring applications to market. Already some FPGAs are starting to take on some of these platform characteristics as they embed multiple high-performance CPUs and other functions. Ultimately, there could be a new design discipline that's much more software centric than hardware centric. All signs certainly seem to be pointing that way.