2017-04-21 11 views
1

내 테스트 벤치에서 제약 조건을 무시하는 데 문제가 있습니다. 내 순서에서 내가 뭐하는 거지 다음 제한 재정의

`uvm_do_with(req, {trans_kind == WRITE ; 
         address == 40'hc0_0000_0000; 
         mask_mismatch_error == 1; 
         bus_error_type == SCB_BUS_ERR_NONE; 
         }) //this line sends the transaction 

그리고 내 순서 항목에

:

ncsim : * W, SVRNDF 로그 파일이 경고를주고있다

constraint c_mask_mismatch_error_disable_map8 { (cfg_h.is_map8 == 1) -> (mask_mismatch_error == 0); } 

(소스 위치/라인) : 무작위 화 방법 호출 에 실패했습니다. 79,492,842 PS + 14

ncsim : * W, RNDOCS : 이러한 제약은 충돌 일련의 제약에 기여}) //이 실패한 RANDOMIZE 전화의 고유 ID는 86

관찰 된 시뮬레이션 시간이다 온라인 트랜잭션을 전송 ( (mask_mismatch_error == 0)} (소스 위치/라인)

ncsim * W, RNDOCS :

상태 변수 :이 변수는 충돌 제약들의 세트에 기여 : cfg_h.is_ma P8 (1) [소스 위치/라인]

랜드 변수 : mask_mismatch_error [소스 위치/라인]

재정의이 유형 수없는 이유를 이해하지 않습니다. 시퀀스에서 제약 조건을 무시할 수 있도록하려면 어떻게해야합니까?

답변

1

randomize에 대한 호출의절은 제약 조건을 추가하는 데만 사용됩니다. 그것들을 무시할 수는 없습니다. 제약 조건을 재정의하는 올바른 OOP 방법은 트랜잭션 클래스를 확장하고 확장 클래스에서 같은 이름의 제약 조건을 선언하는 것입니다.

귀하의 다른 옵션을 사용하면 그렇게한다면, 당신은 더 이상 사용할 수 없습니다

req.c_mask_mismatch_error_disable_map8.constraint_mode(0); 

사용 제한을 해제하는 것입니다`많은 사람들이 어쨌든 사용에 대해 권장하는 매크로 umm_do_with.

+0

감사합니다. 귀하의 솔루션을 구현합니다 – Pete

+0

또 다른 옵션은 시퀀스 항목의 일부로 갖는 제약 조건을 '소프트 제약 조건'으로 선언하는 것입니다. – AndresM