Was ist der Unterschied zwischen new () und create () in UVM? Wie unterscheiden sie sich von Konstrukteuren?


Antwort 1:

new () ist die native Konstruktorfunktion in SystemVerilog und nicht UVM-spezifisch. Sie müssen mit SV-spezifischen Klassen wie Mailbox und Semaphor verwenden.

create () ist die Factory-Methode zum Erstellen von Objekten von Klassen, die bei Verwendung von UVM von uvm_object und uvm_component abgeleitet wurden. Die Funktion create () hat einige Vorteile, ist jedoch etwas komplexer in der Verwendung und Einrichtung. Dies funktioniert nur, wenn eine Klasse bei der Factory registriert wurde, normalerweise unter Verwendung der UVM-Makros uvm_component_utils… und uvm_object_utils…. Bei Verwendung von create () ist es möglich, den erstellten Typ zur Laufzeit zu überschreiben und somit einen anderen Objekttyp zu erstellen. Dies ist mit new () nicht möglich.

Wenn Sie nicht wirklich möchten, dass jemand die Verwendung von Typüberschreibungen verhindert, können Sie standardmäßig create () verwenden und new () nur verwenden, wenn Sie einen guten Grund dafür haben oder wenn Sie Nicht-UVM-Objekte erstellen.