2014-03-05 4 views
1

누군가 가상 클래스를 공장에 등록하는 방법이 있습니까? object_utils 매크로를 사용하면 불법 인 가상 클래스에 대해 new (...)를 호출하는 type_id :: create (...) 메소드가 정의됩니다.UVM으로 가상 클래스 등록하기 공장

당연히 유형 대체는 공장에 등록 된 모든 가상 클래스에 필수입니다. 만약 누군가가 이것에 대한 우아한 해결책을 가지고 있다면 멋질 것입니다.

답변

2

불행히도 가상 클래스를 사용하여 UVM에서 자신의 공장을 다시 만들지 않고이를 수행 할 방법이 없습니다. 그러나이 클래스의 build_phase()를 계측하여 클래스가 대체되었는지 확인할 수 있습니다. 어느 쪽이든 당신은 런타임까지 이것을 점검 할 수 없을 것입니다. 따라서 가상 클래스가 제공하는 컴파일러 검사를 잃어 버리는 이유는 무엇입니까?

+1

나는 이것으로 좀 더 놀았으며, 작동시키고 있지만, uvm_object_utils가 호출하는 내부 매크로를 사용했다. 이것은 분명히 나쁜 습관이지만, 모험을 좋아하는 사람을위한 코드는 다음과 같습니다. http://www.edaplayground.com/x/3iJ –

+0

UVM 개발에 관여했기 때문에이 기능을 기능으로 간주 할 수 있습니까? @dave –

+0

새로운 [SystemVerilog OOP for UVM Verification] (https://verificationacademy.com/courses/systemverilog-oop-for-uvm-verification) 과정에서 공장의 코드를 자세히 설명합니다. –