D
dgreig
Hi List
I have run into a problem with Quartus synthesis, namely recursive
intantiation. Don't have the sane issue with Synopsis, AldecHDL or
Modelsim. Here is a simple example fanout tree (Ashenden - going back
to basics to figure the issue), but first the Quartus 9.1 message:
Error (10504): VHDL error at fanout_tree.vhd(58): slice that is
assigned to target slice has 4 elements, but must have same number of
elements as target slice (2)
library IEEE;
use IEEE.std_logic_1164.all;
--
============================================================================--
entity fanout_tree is
generic(
height : natural
);
port(
fan_i : in std_logic;
fan_o : out std_logic_vector(0 to (2**height) - 1)
);
end entity fanout_tree;
--
============================================================================--
--
============================================================================--
architecture recursive of fanout_tree is
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
begin
--------------------------------------------------------------------------------
g_tree_buff : if (height = 0) generate
fan_o(0) <= fan_i;
end generate g_tree_buff;
g_tree : if (height > 0) generate
signal buff_0_s : std_logic;
signal buff_1_s : std_logic;
begin
buff0 : entity work.buff(rtl)
port map(
buff_i => fan_i,
buff_o => buff_0_s
);
subtree0 : entity work.fanout_tree(recursive)
generic map(
height => (height - 1)
)
port map(
fan_i => buff_0_s,
fan_o => fan_o(0 to (2**(height - 1)) - 1)
);
----------------------------------------
buff1 : entity work.buff(rtl)
port map(
buff_i => fan_i,
buff_o => buff_1_s
);
subtree1 : entity work.fanout_tree(recursive)
generic map(
height => (height - 1)
)
port map(
fan_i => buff_1_s,
fan_o => fan_o( (2**(height - 1)) to (2**height) - 1)
);
end generate g_tree;
--
============================================================================--
end architecture recursive;
Can anyone confirm if Quartus is capable of recursive instantiation
with '93 settings? I'ts going to be a DSP nightmare if not!!
Best Regards
I have run into a problem with Quartus synthesis, namely recursive
intantiation. Don't have the sane issue with Synopsis, AldecHDL or
Modelsim. Here is a simple example fanout tree (Ashenden - going back
to basics to figure the issue), but first the Quartus 9.1 message:
Error (10504): VHDL error at fanout_tree.vhd(58): slice that is
assigned to target slice has 4 elements, but must have same number of
elements as target slice (2)
library IEEE;
use IEEE.std_logic_1164.all;
--
============================================================================--
entity fanout_tree is
generic(
height : natural
);
port(
fan_i : in std_logic;
fan_o : out std_logic_vector(0 to (2**height) - 1)
);
end entity fanout_tree;
--
============================================================================--
--
============================================================================--
architecture recursive of fanout_tree is
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
begin
--------------------------------------------------------------------------------
g_tree_buff : if (height = 0) generate
fan_o(0) <= fan_i;
end generate g_tree_buff;
g_tree : if (height > 0) generate
signal buff_0_s : std_logic;
signal buff_1_s : std_logic;
begin
buff0 : entity work.buff(rtl)
port map(
buff_i => fan_i,
buff_o => buff_0_s
);
subtree0 : entity work.fanout_tree(recursive)
generic map(
height => (height - 1)
)
port map(
fan_i => buff_0_s,
fan_o => fan_o(0 to (2**(height - 1)) - 1)
);
----------------------------------------
buff1 : entity work.buff(rtl)
port map(
buff_i => fan_i,
buff_o => buff_1_s
);
subtree1 : entity work.fanout_tree(recursive)
generic map(
height => (height - 1)
)
port map(
fan_i => buff_1_s,
fan_o => fan_o( (2**(height - 1)) to (2**height) - 1)
);
end generate g_tree;
--
============================================================================--
end architecture recursive;
Can anyone confirm if Quartus is capable of recursive instantiation
with '93 settings? I'ts going to be a DSP nightmare if not!!
Best Regards