2014-11-08 2 views
-1

입력을 기반으로 일부 모듈을 인스턴스화하고 싶습니다. 그 이유는 다른 테스트 케이스를 실행할 때 유연하지만 동일한 설정을 사용하는 것입니다.선택에 따라 모듈을 인스턴스화하고 싶습니다. 어떻게해야합니까?

예를 들어, 나는 모듈 이름 checker.sv이

If a variable/string = number/"text", 
    `include "check_a" 
else 
    `inclcude "check_b" 

곳 check_a 기본적으로 check_b이 같은 checker.sv 인스턴스화의 목록 :

checka file is : 
checker icheck1 (sig1, sig2, 3.0) 
checker icheck1 (sig1, sig2, 2.5) 
      : 
      : 

checkb file is : 
checker icheck1 (sig1, sig2, 3.9) 
checker icheck1 (sig1, sig2, 1.5) 
      : 
      : 

가장 좋은 방법으로는 무엇 이 작업을 수행? 모든 체커를 사용하고 싶지는 않습니다. 특정 테스트를 위해 필요한 체커로 테스트 벤치를 실행하고 싶습니다. 감사합니다.

답변

0

포함 할 파일을 결정하는 것은 컴파일 타임 작업입니다. 인스턴스화 할 모듈을 결정하는 것은 정교한 작업입니다. 즉, 변수를 사용할 수 없습니다. 당신이 CHECK_A 여부를 정의 중 하나가 당신의 실행 스크립트에서

`ifdef CHECK_A 
    `include "check_a.svh" 
`else 
    `include "check_b.svh" 
`endif 

: 당신이 포함 길을 가고 싶은 경우에, 당신은 프리 프로세서를 사용할 수 있습니다. 이것은 사용중인 시뮬레이터에 따라 다르지만 대부분 -D 옵션 또는 +define+을 사용하여 완료됩니다. 예 : some_sim -D CHECK_A에는 check_a.svh이 포함되지만 정의를 생략하면 다른 검사가 인스턴스화됩니다.

관련 문제