In reply to Malai_21:
PSS abstraction model of a DUT is not pretty straight forward, it was quite different. it uses buffers, pools, etc., why is that?
You are right that PSS is different from a procedural programming language. That is intentional. PSS is declarative so that it can describe scenario-level constraints, in terms of scheduling (activities), data flow (buffers, streams, etc) and resource conflicts (resources) so that from a single specification of your critical intent, a tool can extract multiple legal scenarios that implement your intent given the constraints of your system. It’s not unlike specifying constraints on your sequence_items in UVM and letting the tool randomize the fields of your sequence item each time the sequence runs. In the constrained-random case, the constraints are solved at run-time to generate new data values (which may cause different sub-sequences to run) so that a single UVM test can generate many different sequences to be run.
With PSS, you get much more complicated scenarios that can be generated from a relatively concise description of your intent. Elements like buffers (and other data flow objects, which imply scheduling relationships between producers and consumers) and pools (which provide flexibility to the tool in determining legal possible data flow and resource configurations) are used to help build these descriptions of your verification intent and allow the tool to generate the various legal implementations.
what is the Difference between the DSL and C++ model?
The DSL is a declarative language that borrows concepts from object-oriented programming languages, hardware-verification languages, and behavioral modeling languages. PSS focuses on
the essential domain-specific semantic layer and links with other languages to achieve other related purposes. This eases adoption and facilitates project efficiency and productivity.
The C++ library is (almost) semantically equivalent to the DSL in that running a PSS C++ description will create the same model as a compiled DSL description, from which a tool may then generate the target implementation(s). There are a few DSL constructs that cannot be modeled in C++. Please note that, like SystemC, knowledge of C++ does not really give any insight into the PSS library (other than familiarity with general C++ syntax in calling objects/methods, etc). One must still learn the same PSS concepts that one would have to in using the DSL as well.
Do all tools support PSS?
PSS is still a relatively new standard, so I cannot comment on what other companies may or may not support. Mentor is fully committed to supporting PSS.