2009-05-18 3 views
1

Specman의 메서드 호출에서 배열을 반환하려면 어떻게해야합니까? 예 :Specman의 배열 반환

method a : list of uint is { 
    var data: list of uint; 
    ..... 
    result = data; 

}; 

extend sys { 
var data_sys: list of uint; 
run() is also { 
    data_sys = a(); 
}; 
}; 

일부 인쇄물은 배열 데이터와 data_sys와 다릅니다. 내가 놓친 걸 말해 줄 수 있니?

+2

이것은 "teh codez를 줄 수 있습니까?"질문입니다. –

+0

헤이 헤이? 코드 블록 형식을 사용하여 더 나은 제목을 사용하십시오. – curtisk

답변

1

게시 한 코드가 컴파일되지 않습니다. print 문을 더 넣거나 specview에 중단 점을 설정하고 코드를 단계별로 실행하십시오. 인쇄물을 테스트하는 단계를 알고 있습니까? data_sys를 (Specman을 생성하는 대신) 절차 적으로 설정하려면 do-not-generate 수정 자 '!'를 지정해야합니다.

[...] 
!data_sys : list of uint; 
[...] 
1

pls는 sscce을 제공합니다. 그없이

매우 기본적인 예 할 수 있습니다

extend sys { 
    m() : list of uint is { 
    print result.size(); // result.size() = 0 
    }; 

    run() is also { 
    var m := m(); 
    }; 
}; 

방법은 기본적으로 당신을 위해 할당 된 배열을 반환 할 수 있습니다. 포인터에 의해 반환되므로주의해야합니다.

엄지 법칙으로 계산할 때 목록을 반환하는 메소드는 피하십시오. 메소드가 생성 메소드 또는 getter가 아닌 한 동적 인 특성을 전달하기 위해 매개 변수로리스트를 전달하십시오.

collect_packets(packets : list of packet) is {...}; 
get_collected_packets() : list of packet is {...};