ESL Languages: Which One Is Right For Your Needs?

The winners still haven’t been determined, but the leading favorites are SystemC and System Verilog.


The question about ESL language is the right one comes up over and over again.  As customers begin to understand the benefits of modeling and analysis at the system level, they must address this question as one of the first steps in getting started.


What language should be used for ESL—SystemC, SystemVerilog, UML or M? Technically, you can create an ESL/TLM platform in any language you would like. I’ve seen large corporations doing system-level modeling in all of these languages, and then some C/C++, VHDL, and even Java, have been used to do various levels of analysis at the system level. While much of the choice in language is subjective, it’s a good idea to have an understanding of the tradeoffs of using one language vs. another. These tradeoffs include language constructs and semantics, as well as issues outside the language itself—such as tool support, third-party IP availability and access to knowledgeable engineers.


While all of the mentioned languages have supporters, the two main languages I see organizations applying and trading off today are SystemC and System Verilog. At a very high level, the differences between the languages are pretty simple to characterize. SystemVerilog is primarily focused on verification and maintains all of the RTL level focus inherited from its Verilog base. The enhancements related to directed test generation, assertion definitions and coverage metrics are all very valuable capabilities, and all are closely tied to the RTL implementation domain. SystemC is C++. The libraries and standards that define SystemC extend C++ to be a language well suited to transaction-level model definition and simulation of this modeling level.


Because SystemC is based on C++, there are a huge number of experienced users and off-the-shelf examples and libraries that can be used for a wide range of functional modeling applications. The SystemC constructs add enough hardware-specific capabilities to allow the language to support TLM modeling without getting bogged down in the complexity introduced in addressing verification challenges.


I see many customers using both languages and using the languages together. For all of you who have explored the options for creating ESL models and simulations, what tradeoffs have you looked at? What were your ultimate decisions? I welcome any comments from readers to understand the choices between all of the possible ESL languages and methodologies. 


Jon McDonald, technical marketing engineer, Mentor Graphics