2014-03-26 1 views
1

이 코드가 있습니다*** 경고 : WARN_GEN_CFA_UNSUPPORTED : specman에서 왜 그것을 얻을 수 있습니까? 그 의미는 무엇입니까?

<' 
type type_t:[GOOD,BAD]; 
    struct packet { 
    t:type_t; 
    !header:uint(bits:3); 
}; 
extend sys { 
    !pkt:packet; 
    keep read_only(pkt.t==GOOD) => pkt.header==6; 
    run() is also { 
     gen pkt; 
     gen pkt.header; 
     print pkt; 
    };   
    }; 
'> 

을 그리고 난 그것을 실행할 때 생성 할 때, 난,이 이상한 경고를 pkt.header 보낸 사람

*** Warning: WARN_GEN_CFA_UNSUPPORTED: 
The following constraint-from-above includes input(s) which cannot be sampled 
during the allocation of [email protected] 
     keep read_only(pkt.t == GOOD) => pkt.header == 6 at line 9 in @gen 
Enforcing the constraint through later sampling of these inputs is not 
supported yet, and therefore it will not be enforced in the following 
gen-action. 

       at line 12 in @gen 
     gen pkt.header; 

이 오류 메시지 내가 이상한, 나는 'gen pkt.header'를 발행하고, pkt는 이미 생성 (할당)되어 있으므로 't'입니다.

만약 내가 이것을 exaplain 수 있다면 나는 그것을 감사하겠습니다.

덕분에,

답변

1

나는 CFAs에 대한 자세한 내용을 읽은 후 코드를 시도하며 비린내가 뭔가 Specman을에서 진행되는 것을 보인다. Hannes가 말한 것처럼, 아마도 버그 일 것입니다.

+0

사실이 코드를 시뮬레이션 한 후에 코드는 정상적으로 작동하며 헤더는 6과 같습니다. 그래서 나는 당신이 말하는 것이 정확하다는 것을 확신하지 못합니다. 또한 경고가 생성되는 대상 필드가 아니라 입력을 실제로 참조하는 것입니다. 그래서 뭔가 이상한 뭔가가 입력과 함께 ... 왜? – yuvalg

+0

네 말이 맞아, 좀 더 연구를 한 후에 대답을 바꿨다. –

1

이것은 실제로 이상하게 보입니다. 특히 트레이스 생성을 켜는 경우. 발전기 동작 # 3 # 12의 일련의 연결된 필드 해결>> 0 #GEN -

: 중에서도 로그이를 표시 ([email protected])에

pkt.header 

을 - 감소> 0 #GEN> :

pkt.header -> [6] 
    due to constraints: 
    keep read_only(pkt.t == GOOD) => pkt.header == 6 at line 10 in @cfa_depr 

      **with the input state:** 

    read_only(pkt.t == GOOD): TRUE 

- 연결된 필드> 0 #GEN> 완성 된 솔루션 : ([email protected]에서)이 버그 수 있습니다

pkt.header: 6 
    constrained by: 
    keep read_only(pkt.t == GOOD) => pkt.header == 6 at line 10 in @cfa_depr 

을, 나는' 개발자들에게 확인해 보겠습니다.

1

먼저 헤더 필드는 do-not-generate 필드 인 '!'으로 표시되며이를 제거하면 경고가 사라집니다. pkt.header가 생성되기 전에 pkt가 생성되지 않은 경우 할당되지 않은 메모리 영역에 액세스하려고 시도한 경우 OS11 오류가 발생합니다. 둘째, 라인 :

keep read_only(pkt.t==GOOD) => pkt.header==6; 

아마 구조체 자체의 내부에 있어야합니다 (하나는 'soft'나없이 포함).

+0

do-not-generate 필드 자체를 참조하고 있습니다. 그러나 경고는 입력을 참조하고 있으며 샘플링 할 수 없다고 알려줍니다 ... pkt.header를 생성하려고하면 경고가 발행됩니다 왜 내가 pkt를 올리면 그 시점에서 입력을 샘플링 할 수 없습니까? – yuvalg

1

테스트 케이스의 동작은 실제로 버그입니다. 이 시나리오에서는 경고를 발행해서는 안됩니다. Cadence 지원팀에서받을 수있는 문제에 대한 패치가 제공됩니다.

위에서 설명한 제약 조건 및 특히이 경고에 대한 일반적인 내용은 Specman 설명서 (Specman Generation User Guide의 1.10 절)를 고려할 수 있습니다.

관련 문제