如何处理这种情况:
entity foo is
generic (
num_instances : natural := 8
);
port (
data_in_per_instance : in std_logic_vector(num_instances-1 downto 0);
data_out_per_instance : out std_logic_vector(num_instances-1 downto 0)
);
end foo;
architecture bar of foo is
component do_stuff is
port(
din : in std_logic;
dout : out std_logic
);
end component do_stuff;
signal sig_per_instance : std_logic_vector(num_instances-1 downto 0);
begin
L1: for i in 0 to num_instances-1 generate
L2: do_stuff
port map(
din => data_in_per_instance(i),
dout => data_out_per_instance(i)
);
end generate;
end bar;
这里的问题是,如果减少到 0,则 在评估num_instances
信号范围时会出现错误......
有没有一种优雅的方法来解决这个问题?我能想出的只是使用一个函数来防止这个问题(但是综合可能不会给我我想要的东西,即什么都没有)。
有什么方法可以更无缝地处理这种情况吗?(num_instances-1 downto 0)
max(num_instances-1,0)