the program is for a simple multiplier using addition of the partial
products. i find problem only with final addition part pls help me out
1  architecture Behavioral of new_twin1 is

2  type arr is array (3 downto 0) of std_logic_vector(3 downto 0);

3  type arr2 is array(4 downto 0) of std_logic_vector(7 downto 0);

4  signal and_1:arr:=("0000","0000","0000","0000");

5  signal t6:arr2:=("00000000","00000000","00000000","00000000","00000000");

6  signal temp:std_logic_vector(3 downto 0);

7  signal sum:std_logic_vector(7 downto 0):="00000000";

8  begin

9  process(clk)

10  variable z,t,k:integer;

11  variable t2:std_logic_vector(3 downto 0):="0000";

12  variable t7:std_logic_vector(7 downto 0);:="00000000";

13  begin

14  for i in 0 to 3 loop

15  t6(i)(7 downto 0)<=("00000000");

16  end loop;

17  for i in 0 to 3 loop

18  for j in 0 to 3 loop

19  and_1(i)(j)<=(x(i) and y(j));

20  end loop;

21  end loop;

22  t6(3)<= "0000" & and_1(0);

23  k:=0;

24  for i in 2 downto 0 loop

25  t6(i)<=t2( i downto 0) & and_1(k+1) & t2(k downto 0);

26  k:=k+1;

27  end loop;

28  for i in 0 to 3 loop

29  t6(4)<=t6(4)+t6(i);

30  end loop

31  just tried this alternative which too dint work

32   t6(4)<=t6(0);

33   t6(4)<=t6(4)+t6(1);

34   t6(4)<=t6(4)+t6(2);

35   t6(4)<=t6(4)+t6(3);

36  end process;

37  end Behavioral;

the final for loop for addition is giving me a gigup.when i try to
access one variable inside the array am able to retrieve it but while
adding to the same, the total value tends to undefined(XXXXXXXX).
please suggest any modification
thanks in advance