2016-08-30 2 views
0

genvar 변수의 너비를 자르는 방법은 무엇입니까? 예를 들어, 내가있는 경우 : 내가 ModelSim을에서 시뮬레이션 할 때Verilog, genvar 너비 크기를 자름

parameter LENGTH = 8; 

genvar i; 
for(i = 0; i < LENGTH; i = i + 2) begin 
    somemodule #(WIDTH($clog2(LENGTH)) 
       ) 
       tmp (.a(i) 
        ,.b(i+1) 
        ,.c(output) 
        ); 
end 
endgenerate 

, 나는 연결 크기와 일치하지 않는 포트 크기를 얻을 것입니다. 제네바는 32 비트 너비라는 문제가 있으며 모듈의 너비는 다양합니다.

나는

genvar [$clog2(LENGTH)-1:0] i; 

.a(i[$clog2(LENGTH)-1:0]) 

을 시도하지만 구문이 올바르지 않습니다.

이 문제를 해결하려면 어떻게합니까?

답변

3

parameter int LENGTH = 8; 
parameter int WIDTH = $clog2(LENGTH); 
for(genvar i = 0; i < LENGTH; i = i + 2) begin 

    parameter bit [WIDTH-1:0] A = i; 
    somemodule #(.WIDTH(WIDTH)) 
       ) 
       tmp (.a(A) 
        ,.b(A+1'b1) 
        ,.c(output) 
        ); 
end 
에 대한 데이터 유형으로 선언 된 중간 매개 변수를 사용할 수 있습니다