systemverilog에는 컴파일러 지시문이 없습니다. 따라서 다음 줄은 올바르지 않습니다.systemverilog에 대한 해결 방법 컴파일러 지시문이없는 경우
`define BITS 16
reg[`BITS-1:0] my_reg;
...
`if `BITS > 10
my_reg[31] = 1'b0;
endif
...
경고 또는 오류가 있으면`없음.
어떻게 해결할 수 있습니까?
systemverilog에는 컴파일러 지시문이 없습니다. 따라서 다음 줄은 올바르지 않습니다.systemverilog에 대한 해결 방법 컴파일러 지시문이없는 경우
`define BITS 16
reg[`BITS-1:0] my_reg;
...
`if `BITS > 10
my_reg[31] = 1'b0;
endif
...
경고 또는 오류가 있으면`없음.
어떻게 해결할 수 있습니까?
할 수 있습니다 절차 if
문
if (`BITS > 10)
my_reg[31] = 1'b0;
컴파일러/신디사이저는 상수 식으로 분기 문을 최적화; if
문에 의해 추가 논리가 생성되지 않는다는 것을 의미합니다.
my_reg[(`BITS>31) ? 31 : 0] = 1'b0;
1800-2012 LRM, 22.5.1이 필요합니다 은 "`정의 지시어가를 생성 텍스트 대체 매크로. " 예 : 당신이 당신의 필요에 따라 parameter
/localparam
를 사용해야 수치 매개 변수의
`define D(x,y) initial $display("start", x, y, "end");
`D("msg1" , "msg2") // expands to 'initial $display("start", "msg1", "msg2", "end");'
.