The last few months have seen the advent of more tools to transform high-level signal-processing application descriptions into real-time implementations.
The last few months have seen the advent of more tools to transform high-level signal-processing application descriptions into real-time implementations. The appeal is obvious. Many signal-processing applications are designed using high-level tools and then migrated into low-level descriptions.
Often this migration process involves multiple labor-intensive, error-prone steps. For example, an application might be developed using Matlab, then rebuilt using floating-point C code, then again using fixed-point C code, and finally be optimized using assembly language. Cutting out the middle steps can speed development and help ensure that the final product matches the initial high-level design.
Then too, product development typically requires multiple teams of specialists. Using a tool that transforms high-level descriptions into implementations, the high-level developers can do the implementation themselves.
Alas, the idea of automatically turning high-level descriptions into production-ready implementations has been like the ancient alchemists' dream of turning lead into gold: It's a compelling idea, but nobody can seem to make it work. One problem is that the path from a high-level description to an optimized, production-ready implementation is often not a straight line.
For example, it is sometimes possible to optimize an application by replacing a resource-hungry algorithm block with a very different block that produces similar results. But it is very difficult to create an automated tool that can exploit this type of optimization opportunity.
Even when the mappings between high-level descriptions and optimized implementations are more direct, automated tools often perform poorly unless the user gives the tool plenty of "hints." For example, tools that transform C code may require the user to structure the C code in certain ways or to use a limited, specialized set of C statements. And providing effective hints may require an intimate understanding of the underlying hardware-partly negating the value of a high-level tool.
Tools that create real-time implementations directly from high-level application descriptions today are not efficient or practical enough for cost- or energy-sensitive applications. There is much work to do before we get to that point.
Jeff Bier is the general manager of Berkeley Design Technology Inc. (www.BDTI.com), the DSP technology analysis and software development company. Kenton Williston of BDTI contributed to this column.