[verilog] is not a constant in verilog for loop addition
Verilog 사용하다 보면 증가와 반복 구문이 필요하여 for문을 가끔 사용하게 되는데 아래와 같은 상황에서 에러가 발생함
module loop( shift, a );
input [ 3:0] a;
output reg [11:0] shift;
integer i;
always @( a )
begin
for (i=0; i<3; i=i+1) begin
shift[(i*4)+3:i*4] <= a;
end
end
endmodule
비트 버스 부분에 변수를 사용하게 되면 에러가 발생함.
버스가 아닌 단일 비트는 괜찮음
예) b = a[i];
module loop( shift, a );
input [ 3:0] a;
output reg [11:0] shift;
integer i;
always @( a )
begie
shift[ 3:0] = a;
shift[ 7:4] = a;
shift[11:8] = a;
end
endmodule
어짜피 vim 사용하면 매크로 기능으로 금방 작성 가능하니
가독성으로 풀어쓰는 것도 나쁘지 않은듯ㅎㅎ
끝.
도움이 되셨다면 더 좋은 정보 공유를 위해 광고 클릭 부탁 드립니다 :)
0 댓글