-- This procedure adds two n-bit bit_vectors and a carry and -- returns an n-bit sum and a carry. Add1 and Add2 are assumed -- to be of the same length and dimensioned n-1 downto 0. procedure Addvec (Add1,Add2: in bit_vector; Cin: in bit; signal Sum: out bit_vector; signal Cout: out bit; n:in positive) is variable C: bit; begin C := Cin; for i in 0 to n-1 loop Sum(i) <= Add1(i) xor Add2(i) xor C; C := (Add1(i) and Add2(i)) or (Add1(i) and C) or (Add2(i) and C); end loop; Cout <= C; end Addvec;