Ready-to-run snippets

Code Examples

Ready-to-run Verilog, SystemVerilog, and UVM examples. Click any to open it live in the IDE.

← All examples

Class vs Struct: Equality: Comparing Values vs Comparing Identity

SystemVerilog Classes & OOP

Runnable example from the SystemVerilog Class vs Struct tutorial (Equality: Comparing Values vs Comparing Identity)

Open in IDE
testbench.sv
typedef struct {
  int addr;
  int data;
} packet_t;

class Packet;
  int addr;
  int data;
endclass

module tb;
  packet_t s1, s2;
  Packet   c1, c2;

  initial begin
    // Two SEPARATE structs, with identical field values
    s1.addr = 10; s1.data = 20;
    s2.addr = 10; s2.data = 20;

    // Two SEPARATE class objects, also with identical property values
    c1 = new (); c1.addr = 10; c1.data = 20;
    c2 = new (); c2.addr = 10; c2.data = 20;

    if (s1 == s2)
      $display ("Structs are equal");
    else
      $display ("Structs are NOT equal");

    if (c1 == c2)
      $display ("Classes are equal");
    else
      $display ("Classes are NOT equal");
  end
endmodule
Admin mode — edit and delete controls are visible on each row. Use the IDE to add new snippets via File → Save as Snippet.