Каква е разликата между new () и create () в UVM? По какво се различават от конструкторите?


Отговор 1:

new () е нативната конструкторска функция в SystemVerilog и не е специфичен за UVM. Трябва да използвате със специфични за SV класове като пощенска кутия и семафор.

create () е фабричният метод, използван за конструиране на обекти от класове, получени от uvm_object и uvm_component при използване на UVM. Функцията create () има някои предимства, но е малко по-сложна за използване и настройка. Той работи само ако клас е регистриран във фабриката, обикновено използва UVM макроси uvm_component_utils… и uvm_object_utils…. Когато използвате create (), е възможно да се замени създадения тип по време на изпълнение и по този начин да се създаде друг тип обект. Това не е възможно с нов ().

Освен ако наистина не искате някой да попречи да използва отмените на типа, можете да използвате create () по подразбиране и да използвате new () само ако имате много основателна причина за това или ако създавате обекти, които не са UVM.