Ray, I managed to do the recursive call but my problem was in the declaration part I didnt knew how to the declare the signals as I mentioned in the begining of the thread.
eventually I took Nicolas Matringe advise and declared a complete bidim array (width-1,width-1) - that is actually twice the size I needed and the synthesizer optimized half of array for me. the code relevant section is attached.. and it's working too ;-)
BTW - I did it in order to create a delay network for an 32 bit NCO design at 300MHz.
Regards, Moti.
signal c : std_logic_vector (width-2 downto 0); signal accumulator_reg : std_logic_vector (width-1 downto 0); signal b_delayed : std_logic_vector (width-1 downto 1);
type bidim_array is array (width-1 downto 1, width-1 downto 0) of std_logic; signal reg : bidim_array;
begin
process (clk,resetn) begin if resetn = '0' then reg (others => '0')); if rising_edge(clk) then--elsif rising_edge(clk) then for n in 1 to width-1 loop reg (n,0)