Is PSS replacement for UVM?

Hello all
I am really new to PSS, I have read in a few blogs, it used drive stimulus to any environment. I would like to know, Is Portable Stimulus is a replacement for UVM? why we need a new language to drive a stimulus, and what is the need to use PSS?
Most importantly what language it is based on? Is it functional programming or OOP or AOP?

In reply to Malai_21:
Portable Stimulus is most definitely NOT a replacement for UVM.

PSS is a declarative language that lets you define stimulus scenarios at an abstract level, including rules for scheduling behaviors (called ‘actions’ in PSS), data flow between actions, and resource utilization. From these abstract models, a tool can automatically generate tests for your target platform, whether that is C code running on a processor, or UVM code to run in simulation. The PSS language uses both OOP and AOP concepts.

For each behavior in the abstract model, you specify an implementation for the target platform, and the tool generates the target implementation to stitch together the behaviors according to the schedule of your abstract model. This “realization layer” includes the ability to specify templates for target code, import methods, or, in 2.0, the ability to specify abstract procedural code that can then be targeted to your platform.

Note that in the UVM case, the PSS model generates an implementation usually in the form of UVM sequences and virtual sequences. It would be up to you to define the UVM environment (including agents, etc) and the test(s) that would call these PSS-generated sequences.

So, PSS is not a replacement for UVM. Rather, UVM is expected to be one of the more prominent targets for tests generated by a PSS tool. For more information, please see our Portable Stimulus Basics video course.

In reply to tfitz:

Hello, Tom thanks for your response. PSS abstraction model of a DUT is not pretty straight forward, it was quite different. it uses buffers, pools, etc., why is that? what is the Difference between the DSL and C++ model? Do all tools support PSS?

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.

In reply to tfitz:

Thank you, Tom. Is there any webinar or video course for a Practical demo of PSS stimulation in Mentor?