46th DAC / STMicroelectronics designs a Frequency Domain Processor out of pure C++

 

A couple of hours after Hitachi Telecom’s inspiring presentation on a 2 million gate enhanced Forward-Error Correcting (FEC) system designed with Catapult C, Nitin Chawla of STMicroelectronics gave extensive details on his experience with C synthesis for complex signal processing applications.

  • Differentiating the high-level synthesis input languages

Chawla opened his talk by comparing the merits of the various languages available for high-level synthesis. C, C++ and SystemC are often bundled together as if they all were the same. The truth is that these languages, despite their common DNA, are very different. The language choice will actually have big consequences. According to Nitin Chawla, “structural languages restrict implementations to few solutions in close proximity” as they embedded architectural details embedded in the source. Restricted ANSI C on the other hand doesn’t hardcode the structural details, but without support for classes and object oriented programming, reuse is limited, coding style is complicated and the bit-accurate modeling and numerical refinement is made more difficult. Nitin Chawla views pure ANSI C++ as “extremely compact, allowing object oriented hardware reuse and enabling optimization through interactive constraints”; in short, the right language for high-level synthesis.  

  • 1GSamples/sec Frequency Domain Processor from pure C++

The design presented was a frequency domain processor with real time 1GSamples/sec interfaces. While the algorithmic nature of the application is obvious, the design also involved sophisticated control to manage “interleaved processing”. Chawla explained how the entire system was modeled in pure C++, providing details on how the above mentioned control was also described and synthesized.

STMicroelectronics: a 1GSamples/sec Frequency Domain Processor

STMicroelectronics: a 1GSamples/sec Frequency Domain Processor

The complexity of the system, including its 2048-point FFTs is simply mind-boggling. The ability of explore both the architectural and the algorithmic design space with a C-based methodology proved to be an absolute must for the project’s success. 

  • Linking C Synthesis and Physical Design

This was confirmed in the later phases of the project when physical design started. Chawla pointed that “in ASIC technologies of 65nm and below path delays are wire dominated”. His design, like most signal processing applications, use a lot of compiler generated memory cuts. At the system-level, memory architecture choices tend to be made on the simple basis of bandwidth and ports. But, continued Chawla, “memory cuts create routing blockages and wire detours”. Using the C synthesis flow, different memory architectures could be easily produced, and a multi-bank memory solution could quickly be found to reduce routing congestions.

  • A “production-worthy” solution

In his conclusion, Nitin Chawla was very affirmative of the benefits and the maturity of C synthesis solution such as Catapult C. C synthesis provides increased productivity, more flexibility as well as better quality of results. And to quote Chawla one last time: “C synthesis can successfully build production worthy multi million gate complex application engines from untimed C/C++ algorithmic models”.

 

More Blog Posts

Comments (↓ Add Your Own)

3 comments on this post

[...] in the day, STmicroelectronics would confirm Hitachi’s findings in a captivating testimonial on designing complex systems using C [...]

[...] surge in testimonials on public forums – such as John Cooley’s Deepchip – or at the recent Design Automation Conference should be interpreted as a clear indication of the proliferation of C [...]

[...] trying to provide, amongst others, regular updates on customer case studies – for instance here, here or [...]

Add Your Comment

High-Level Synthesis is entering the mainstream of hardware design, bringing tremendous opportunities and creating stimulating new challenges to hardware designers. This blog is about trends, opinions and experiences with going from C++ to RTL, automatically.