User Interview: Designing a Set-Top-Box IP with Catapult C
In a recent presentation at the Mentor User2User conference in Dallas, TI’s Karl Renner gave a very detailed presentation on how he used Catapult C to design a set-top-box IP. With only two engineers working on a tight 6 months schedule, Catapult C proved a necessity to complete the project in time.
Karl Renner works as a systems engineer at Texas Instruments in Dallas and over the past 12 years he has been primarily working on analog and digital video chips. After his presentation, Karl was kind enough to answer a couple of questions for this blog.
Q: What kind of design did you create with Catapult C?
The design is an audio/video RF modulator for a set-top-box application. The audio comes at a low-frequency rate, the video at a high frequency rate. The system does filtering, BTSC compression on the audio, AM and FM modulation and combines the modulated audio and video to generate the final RF outputs which correspond to channel 3 and channel 4 frequencies – these are your old analog TV frequencies. The purpose of all this is to provide a connection on the set-top-box to people who have analog TV sets.

Texas Instrument's Audio/Video RF Modulator for Channels 3 & 4
Q: Can you give us a sense of the complexity of the resulting hardware?
This design was a full sub-system comprising 6 hierarchical blocks: 2 for video, 3 for audio and 1 for generation of the RF samples. The total area was 240k gates with a clock frequency of 216Mhz.
Q: What was the design flow during this project?
We started with Matlab to quickly evaluate and design a floating-point version of the RF modulator. Once that model was working, we carried it to a fixed point model in C++ with the help of the Catalytic/Agility tools. Fixed-point C++ is much faster than anything comparable in Matlab, and the AC data types made fixed point modeling very easy.
We compared the output of the C++ model with the output of the Matlab model and we also generated data samples that were fed into a Techtronix arbitrary waveform generator to test the audio and video on TV sets in the lab.
We used Catapult C to synthesize Verilog RTL from the C++ fixed-point model.
Q: Can you describe your experience with Catapult?
This was my first design with the tool and I found running Catapult C quite straightforward. Tony Van Dinh from Mentor Graphics helped us with the initial configuration and some coding style guidance. Achieving proper throughput was an essential aspect of this design, and we were able to use Catapult C’s pipelining constraint to obtain what we wanted.
After looking at different ways of implementing the RF modulator, I was rapidly able to arrive at an optimal implementation. The Gantt chart view was very helpful. It lets you look at the scheduling, if there are problems with it and where to improve the design for performance or area.
Most importantly, the SCVerify flow automatically checks the RTL against the C++ code. With the SCVerify flow I was assured that the RTL output was correct. Being able to look at the input and output signal waveforms and see that the input are being read at the proper intervals and outputs occurring every clock was very important.
The RF modulator was a pretty significant development with a short timeframe. The BTSC encoder and stereo separation proved particularly challenging. We spent a lot of time tuning this part of the design in the lab. For that matter, being able to make quick iterations on the RTL was critical. Catapult C and its ease of use was essential for us to meet our design goals
Q: Have you done other projects since then?
I did do another designer: a jitter pre-correction filter that is applied to the RF modulator output to compensate for jitter of the clock. For this design, and after the experience gathered on the first project, I was up and running on my own.
Q: What’s next?
I am now involved in ultra low-power processor design and one thing I want to do is use the latest Catapult version and try out the new low-power optimizations.
More Blog Posts
Add Your Comment
About Thomas Bollaert’s Blog
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.
Latest Posts
- Mentor ESL in TSMC Reference Flow 12
- 48th DAC – Gary’s Magic Formula
- DAC: 9th ESL Symposium
- HLS Fundamentals / Part 2
- HLS Fundamentals: Loop Unrolling and Loop Pipelining
- HLS Contest: And the winner is…
Comments (↓ Add Your Own)
4 comments on this post
Commented on October 27, 2009 at 1:25 pm
By Gab
We use Matlab too and also move to C++ for fixed-point. This makes perfect sense, this flow is very interesting. Thanks for sharing this story.
Commented on October 27, 2009 at 3:57 pm
By Ramping up with C Synthesis, part 2 « Thomas Bollaert’s Blog
[...] testimonials and success stories from engineers at STMicroelectronics, Texas Instruments or Fujitsu give a pretty good idea of what can be accomplished with C synthesis. If you are [...]
Commented on January 5, 2010 at 2:50 pm
By Top High-Level Synthesis Stories of 2009 « Thomas Bollaert’s Blog
[...] #2 User Interview: Designing a Set-Top-Box IP with Catapult C [...]
Commented on June 8, 2010 at 2:34 pm
By Dropping RTL for C++, from Finland to India « Thomas Bollaert’s Blog
[...] been trying to provide, amongst others, regular updates on customer case studies – for instance here, here or [...]