Specman의 이벤트 목록에서 하나의 이벤트를 기다릴 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1530228

  •  20-09-2019
  •  | 
  •  

문제

Specman에는 구조물이 있습니다.

struct foo_s {
    event foo_ev;

    // some code that will emit foo_ev sometimes
};

그리고 목록 :

var foo_l: list of foo_s;  // later code will manage the list

그리고 이제 나는 어떤 것과 동기화하고 싶습니다. foo_ev 목록의 이벤트 :

first of {
    sync @foo_l[0].foo_ev;
    sync @foo_l[1].foo_ev;
    sync @foo_l[2].foo_ev;
    //etc
};

문제는이 스 니펫이 실행될 때 얼마나 많은 요소가 있는지 모르겠습니다. foo_l. 내가 기다릴 수있는 방법이 있습니까? 어느foo_ev 방출 될 이벤트?

도움이 되었습니까?

해결책

이벤트를 수동으로 캐스케이드 할 수 있습니다.

unit bar_u {
    foo_l: list of foo_s;  
    event any_foo_toggled_e;
}

struct foo_s {
    event foo_e;
    on foo_e {
        emit get_enclosing_unit(bar_u).any_foo_toggled_e;
    };

    // some code that will emit foo_ev sometimes
};

다른 팁

또 다른 솔루션은 계산 된 매크로를 사용하는 것입니다. 계산 된 매크로의 개념은 e 코드를 생성하기 위해 코드를 작성하는 것입니다. 이 접근법을 사용하여 길이를 볼 수 있습니다. foo_l 그리고 생성하십시오 first of { sync ... 매크로 교체로 나열하십시오.

미안하지만 현재 예를 들어 요리 할 시간이 없지만 관심이 있으시면 Specman 문서가 친구가되어야합니다. 계산 된 매크로에 대해 듣지 못했다면 확실히 볼 가치가 있습니다.

업데이트]: 팀 사양에서 그들은 방금 게시했습니다 계산 된 매크로의 예. 그들은 또한 일부가 있습니다 오래된 게시물 이 주제에 대해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top