What has happened to ESL verification?
![]() |
4.0 (3) |
Whenever a new abstraction level has taken over in the past, it has been verification that was in the lead. It established the new languages, and set the stage for the emergence of design automation that was to follow. RTL verification was available long before RTL synthesis, as it was with the gate level. With the migration to ESL, it appeared as if it would be the same again. SystemC came out of a verification centered way of thinking – as shown by the need for defining synthesizable sub-sets. So too with the newly emergent TLM standards. They are for verification, not for synthesis. So I would seem to be proving myself wrong.
But stop for a moment and look around at what is going on in terms of tool development. Every one of the major EDA companies now has a synthesis offering. Mentor has been there for a few years now and this year we saw entrants from both Cadence and Synopsys. There are also a number of virtual-prototype tools on the market – from Mentor and Synopsys as well as some small companies. But these are system-level modeling tools and not verification environments. Where are the tools the can successfully verify at the behavioral or system-levels?
Now part of the answer is of course that the existing verification methodologies are sort of capable of reaching up, but I don’t think this is enough. I want to see OVM and VMM clearly show how they deal with multiple abstractions and how they can treat verification as being a flow across the whole design process, rather than just a static point in the design flow. I want to see how verification can separate concerns such as the division of function and architecture, function and interface and all of these other good things that bring about a truly reusable, extensible framework.
Now I know that there are companies out there trying to do some of these things, trying to put the necessary pieces in place, but I want to hear a lot more about this and to hear how users are filling the gaps while waiting for the next level of verification tools to emerge.
So vendors, please tell us what you are working on and user, please tell us what you need and what is working for you today.
-----------------------------------------------
Brian Bailey - keeping you covered
User reviews
Average user rating from: 3 user(s)
re2: What has happened to ESL verification?
I choose here the CoFluent Studio example because this is something I know. However, I think the described process can be at least partially applied to other SystemC-based design flows. I will just talk about the usual test bench verification here, formal verification is another problem.
CoFluent Studio can be used to model test benches enabling verification at system-level for CoFluent models themselves (the abstraction level is Message Level Model / Transaction Level Model), but also for external models at different abstraction levels. The generated output SystemC model can be connected without major modification to a virtual platform model (usually TLM or slightly lower level) and even to RTL models using transactors (as done in most SystemC-based methodologies). Thus, the verification across the design process is always operated with the same test bench. Of course, transactor design is still a necessary effort, although in most cases it should not be difficult to automate transactor code generation.
One of the interesting points you mentioned is the separate of concerns between function and architecture. In CoFluent Studio, functional and platform models are separated. An architectural model can be created by mapping the different functions onto computation resources of the platform, functional relations onto memories, buses and so on. The platform model can be seen as a set of constraints applied to the functional model through mapping operation. Thus, the test bench designed for functional verification can become an architectural verification test bench through mapping operation. I think it is the only time in the design flow at which is needed to modify the test bench: I mean the step from an untimed or partially timed model to a timed "golden model" used as a specification during the design flow.
Clarrifications on TLM
Thanks for the comment George. I would like to clarify what I meant by "TLM standards are for verification and not for synthesis." If we consider the OSCI TLM 1.0 and TLM 2.0 standards, they have been constructed specifically with verification in mind. Many of the features in these are not synthesizable by any of the tools on the market today and it is unlikely that some constructs ever will be. So a synthesizable subset has to be created before they can be freely interchanged. At the same time, these standards do not include some of the constructs necessary for synthesis, such as resets - so the standards have to be extended for use in a synthesis flow.
re: What has happened to ESL verification?
Brian,
With respect to abstraction, verification has definitely led synthesis. In that dimension, ESL synthesis and ESL verification are often completely different animals -- and ESL synthesis can raise the fundamental question as to whether ESL is an abstraction or just a language syntax.
Abstractions should be relevant regardless of use model. You mentioned how TLM standards are for verification, not for synthesis. But, why not use them for synthesis as well? Designs can benefit from TLM concepts as well. At Bluespec, TLM can be used for designs, models and verification -- and they are synthesizable in all of these contexts.
And, we're also synthesizing verification IP, whether it be models, transactors or test benches. We just posted a new technical white paper covering just this on our website (http://www.bluespec.com/synthesizable-test-bench.htm) entitled:
Delivering Synthesizable Verification IP for Test Benches
Case Study: SystemVerilog VMM vs. BSV for an Ethernet MAC test bench
In the case study, the synthesizable BSV-based test bench is about 40% fewer lines of code than the non-synthesizable SystemVerilog VMM-based one for comparable functionality. (BSV is used for design implementations as well, whether they be datapath, control or system interconnect -- abstraction should be delivered regardless of use model.)
When people work in FPGA/emulation environments, the verification abstractions that they use should still remain relevant. High-level concepts such as TLM and modern, high-level programming language features should be usable in the synthesis world as well.
Hi George. You make some very good points. With respect to TLM, my point was that if we look at TLM 1.0 or 2.0, they contain constructs which are not synthesizable, making a subset required, plus they are missing constructs, such as the notion of reset - which means that it is difficult to use the standards in the way that they were written. Somebody now has to make a new standard based on the original standard for synthesis.
I will definitely take a look at your paper. Please post it here if you can. The good part about techbites.com is that it does not hold your copyright captive.





