UVM에서 new ()와 create ()의 차이점은 무엇입니까? 그것들은 생성자와 어떻게 다릅니 까?


대답 1:

new ()는 SystemVerilog의 기본 생성자 함수이며 UVM과 관련이 없습니다. 사서함 및 세마포어와 같은 SV 특정 클래스와 함께 사용해야합니다.

create ()는 UVM을 사용할 때 uvm_object 및 uvm_component에서 파생 된 클래스의 객체를 구성하는 데 사용되는 팩토리 메소드입니다. create () 함수는 몇 가지 장점이 있지만 사용 및 설정이 약간 더 복잡합니다. 일반적으로 UVM 매크로 uvm_component_utils… 및 uvm_object_utils…를 사용하여 클래스가 팩토리에 등록 된 경우에만 작동합니다. create ()를 사용하면 런타임에 작성된 유형을 대체하여 다른 유형의 오브젝트를 작성할 수 있습니다. new ()로는 불가능합니다.

다른 사람이 유형 재정의를 사용하지 못하게하려면 기본적으로 create ()를 사용하고 그렇게 할만한 이유가 있거나 UVM 이외의 객체를 만드는 경우에만 new ()를 사용할 수 있습니다.