2016-12-08 5 views
0

의 모든 자식 멤버를 통해 이동합니다.SystemVerilog를 나는 다음과 같은 기본 클래스가 부모 클래스

base_transaction 클래스의 my_randomize() 함수에서 모든 하위 멤버 (확장 클래스 중 하나)를 검토 할 수있는 systemVrilog/UVM 옵션이 있습니까?

+0

정확히 무엇을 의미하는지 모르겠습니다. _child_class_ 클래스의 많은 객체가 존재한다고 말하면 'my_randomize'를 한 번 호출하여 모두 무작위로 선택하십시오. –

+0

@Matthew Taylor - 예. – sara8d

+0

나는 이것을 직접 구현해야한다고 생각한다. 클래스 자체의 대기열 인 정적 멤버를 구현 한 다음 'new'를 호출 할 때마다 해당 대기열에 각 참조를 푸시 할 수 있습니다. 아마도 당신은 큐를 반복하고 각각에있는'my_randomize' 메소드를 호출하는 정적 함수를 가질 수 있을까요? 나는 아마 이것을하는 _design 패턴 _이 있다고 생각한다. _design pattern_ 태그를 사용하여이 질문을 할 수 있습니다. (만약 당신이 용감하다고 느끼면, Stack Overflow가 어떤 것인지 알 것입니다. 아마도 약간의 거짓말을하고 화염에 빠지게 될 것입니다.) –

답변

0

Systemveilog/UVM에 원하는 옵션이 없다고 생각합니다. 그러나 우리는 다음과 같은 코드를 사용하여 그렇게 할 수 있습니다.

// Add this queue in parent class - base_transaction 
static base_transaction child_list[$]; 

// Add this function in parent class - base_transaction 
function register_child (base_transaction child); 
    base_transaction::child_list.push_back (child); 
endfunction 

// Your extended class 
class new_transaction extends base_transaction; 
    function new(); 
    super.register_child (this); 
    endfunction 

    // Other stuff related to your new class 
endclass 

그래서 지금 당신은 base_transaction::child_list 큐 자녀의 모든 구성원에 액세스 할 수 있습니다.