Of course if you are in the business of selling high-level synthesis (HLS) tools then the obvious answer is immediately. Start at 9am tomorrow morning. But a more realistic answer is when you are having to do something completely new. If you are working on a legacy design, perhaps with pre-existing IP, then moving the design up to a higher-level might make sense in the long-term but in the short-term it certainly comes with some costs compared to re-using what you already have in hand. But when a brand new standard comes along, there is no legacy RTL, no existing IP, and it is the perfect moment to start with a blank slate and move the level of design up another level to C++.
What is more, the standards bodies distribute their specifications as C++ reference models. OK, those reference models are not necessarily written with an efficient hardware implementation in mind, but they do introduce complex new functionality, which is something HLS is designed to make manageable. Since everything is brand new, any design team has to start from scratch and there is no downside to moving up since there is no pre-existing work being discarded.
For example, high-efficiency video coding (HEVC) also known as H.265 (pronounced aitch-dot-two-six-five) is the latest generation of mobile video compression formats. There is a lot of activity going on around HEVC and most is being done with HLS. Prior to the arrival of H.265 there was H.264 (MPEG-4, Blu-ray) which also created a surge in the adoption of HLS since it was almost impossibly complicated to implement directly in RTL. In the wireless space there has been a similar phenomenon with the introduction of 3G, LTE and WiMAX standards.
When a new standard such as H.265 is published then creating codecs is a race. HLS tools such as Calypto’s Catapult help to get that first implementation to market fast, especially compared with writing and debugging a huge amount of complex RTL from scratch.
Having got an initial implementation done using HLS, there is a subsequent benefit. Since HLS is inherently technology neutral, moving the design to a new technology node or increasing its operating frequency are straightforward. The HLS can re-synthesize the design with different libraries and constraints. It creates a new optimized RTL that matches the new process in a matter of minutes, a much simpler task than is required to move RTL to a new node with new PPA targets. Similarly, removing functionality to meet a lower price point just requires commenting out the functions that are not required.
So the answer: when starting something new, especially a new standard.
See Calypto’s blog post with more details on the topic here.Share this post via: