есть вот такой код:
`ifndef ADD_V
`define ADD_V
`include "Add1.v"
`include "Add1c.v"
module add(Q, CO, A, B, CI);
	parameter n = 4;
	input  [n-1:0] A;
	input  [n-1:0] B;
	output [n-1:0] Q;
	input          CI;
	output         CO;
	
	wire          [n:0] c;
	genvar         i;
	
	assign c[0] = CI;
	generate
	for( i = 0; i < n; i = i + 2 ) begin
		add1  ap(.Q(Q[i]), .A(A[i]), .B(B[i]),
				 .CI(c[i]), .CO(c[i+1]));
		if (i + 1 < n) begin
			add1c an(.Q(Q[i+1]), .A(A[i+1]), .B(B[i+1]),
			         .CI(c[i+1]), .CO(c[i+2]));
		end
	end
	endgenerate
	
	not n(CO, c[n]);
endmodule   /* add */
`endif
проблема в том, что тупой верилятор не может читать и писать в один вектор а как сделать это без вектора я не знаю. не хочется таскать в проекте ворнинг



