UVM with base as Systemverilog vs UVM with base C++

If UVM is built with base as C++, what would be the advantage/disadvantage over SV?

In reply to Sumeet Jain:

It’s probably more important that you follow a common methodology than which of these languages you choose. UVM was specifically created to accelerate the adoption of SystemVerilog for verification. A lot of concepts don’t map that well to other languages. I see the main purpose of UVM in other languages is when mixing other languages with UVM/SystemVerilog.

In reply to dave_59:

Hello,
the reason I asked this question was because I still see many places where c++ is still used for verification and me as a new college grad want to know specific points why SV is better suited than C++
Also can you elaborate on your comment: “A lot of concepts don’t map that well to other languages”?

Thank you,
Sumeet

In reply to Sumeet Jain:

OK, I thought your original question was more along the lines of UVM/SystemVerilog versus porting UVM to C++ to use UVM/C++. I see you are asking a more fundamental language question of using SystemVerilog versus C++ for verification.

I would say that SystemVerilog is first a Hardware Description Language(HDL), and then a Hardware Verification Language(HVL). For both, Hardware is an abstraction representing the functionality of digital/Boolean logic. Two requirements I think SystemVerilog is better than C++ for representing Hardware (Design or Verification) are:

  • Massive amounts of concurrent behaviors (processes) sharing a global simulation time.
  • Declaring individual signals(wires and bits), operations on those signals, and the controlled flow of data between those processes
  • Safe memory management - no access to pointers

And a few places where the Hardware verification requirements are easier to meet in SystemVerilog are:

  • Hierarchical referencing signals for probing/monitoring activity
  • Declarative specification of random constraints, functional coverage and assertions.
  • Sampling semantics for glitch/race-free signal observation

If I had the time, I would go deeper into why these requirements are needed, but this should get you started. Of course, for all of these concepts listed, you can probably find counter-examples why C++ does things better for certain applications than some other language.