[verilog] is not a constant in verilog for loop addition

[verilog] is not a constant in verilog for loop addition

[verilog] is not a constant in verilog for loop addition

enter image description here

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 댓글