문제

Specman에 상속 된 다음 코드가 있습니다.

some_method() is {
    var a: bool;

    if (!a) {
        a = some_other_method();
    };
};

내 이해는 매번 some_method() 호출됩니다. a 새로 생성되며 확인에 의미가 없습니다. a할당되기 전의 값. 그러나 여기서 뭔가 빠진 것이있을 수 있습니다. 예를 들어, if a 정적 인 경우이 코드는 의미가있어 내 질문에 나옵니다.

Specman에서 변수가 정적 인 방법이 있습니까?

도움이 되었습니까?

해결책

C에서와 같이 정적 변수가 없습니다. 메소드의 변수는 기본값을 갖습니다 (False 이 경우) 초기화되지 않은 경우, 당신이 맞아야합니다. if (!a) 항상 있어야합니다 True.

경우 상황이 다를 것입니다 a 구조물 멤버였으며 다른 OO 언어와 마찬가지로 여러 메소드 호출에 대한 가치를 유지하고 점검이 더 의미가 있습니다.

struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

대화식 프롬프트에서 이와 같은 내용을 확인할 수 있습니다.

Specman> var a : bool;
Specman> print a
  a = FALSE

대화식 도움말도 좋습니다. 예를 들어 시도해보십시오.

Specman> help variable

항목을 선택하십시오 (번호 별) sn_eref: variables : declaring. 거기에서 귀하의 질문에 대한 모든 관련 정보를 찾을 수 있습니다.

건배, 다니엘

다른 팁

정적 구조물 멤버 (이벤트, 필드, 방법)를 Specman v15.2의 언어에 추가 하였다. 정적 필드는 생성, 물리적 (%) 또는 하위 유형에 사용될 수 없습니다.

struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

-- Change field 'a' for all instances
on xxx { some_struct_s::a = TRUE; };

TeamSpecman 블로그의 몇 가지 의견은 다음과 같습니다. e

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