0
의 모든 자식 멤버를 통해 이동합니다.SystemVerilog를 나는 다음과 같은 기본 클래스가 부모 클래스
base_transaction 클래스의 my_randomize() 함수에서 모든 하위 멤버 (확장 클래스 중 하나)를 검토 할 수있는 systemVrilog/UVM 옵션이 있습니까?
의 모든 자식 멤버를 통해 이동합니다.SystemVerilog를 나는 다음과 같은 기본 클래스가 부모 클래스
base_transaction 클래스의 my_randomize() 함수에서 모든 하위 멤버 (확장 클래스 중 하나)를 검토 할 수있는 systemVrilog/UVM 옵션이 있습니까?
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
큐 자녀의 모든 구성원에 액세스 할 수 있습니다.
정확히 무엇을 의미하는지 모르겠습니다. _child_class_ 클래스의 많은 객체가 존재한다고 말하면 'my_randomize'를 한 번 호출하여 모두 무작위로 선택하십시오. –
@Matthew Taylor - 예. – sara8d
나는 이것을 직접 구현해야한다고 생각한다. 클래스 자체의 대기열 인 정적 멤버를 구현 한 다음 'new'를 호출 할 때마다 해당 대기열에 각 참조를 푸시 할 수 있습니다. 아마도 당신은 큐를 반복하고 각각에있는'my_randomize' 메소드를 호출하는 정적 함수를 가질 수 있을까요? 나는 아마 이것을하는 _design 패턴 _이 있다고 생각한다. _design pattern_ 태그를 사용하여이 질문을 할 수 있습니다. (만약 당신이 용감하다고 느끼면, Stack Overflow가 어떤 것인지 알 것입니다. 아마도 약간의 거짓말을하고 화염에 빠지게 될 것입니다.) –