Яка різниця між новим () та створенням () в УВМ? Чим вони відрізняються від конструкторів?


Відповідь 1:

new () - це функція нативного конструктора в SystemVerilog, і не є специфічним для UVM. Вам потрібно використовувати для SV-специфічних класів, таких як поштова скринька та семафор.

create () - це заводський метод, який використовується для побудови об'єктів класів, похідних від uvm_object та uvm_component при використанні UVM. Функція create () має деякі переваги, але є трохи складнішою у використанні та налаштуванні. Він працює лише в тому випадку, якщо клас був зареєстрований на заводі, зазвичай використовуючи UVM макроси uvm_component_utils… та uvm_object_utils…. Під час використання create () можна змінити створений тип під час виконання та, таким чином, створити інший тип об'єкта. З новим () це неможливо.

Якщо ви дійсно не хочете, щоб хтось перешкоджав використанню перестановок типу, ви можете використовувати create () за замовчуванням і використовувати тільки new (), якщо у вас є дуже вагомі причини для цього або якщо ви створюєте об'єкти, що не мають UVM.