I hope this is possible. I want to be able to write recursive code like this:
entity myEntity
generic (
size : natural -- a power of 2
)
port (
-- whatever
);
end;
architecture structural of myEntity is
begin
smallerEntity : entity component.myEntity(structural)
generic map (
size => size/2
);
port map (
...
);
end;
So each architecture instantiates a smaller version of itself. At some value of the generic ‘size’ I want to have a different implementation however.
Can this be done with configurations? If so, how?
As to why I’d like to be able to do this – so I can build reusable code for computing FFTs/DCTs and similar transforms.
You can use recursion in VHDL. But you need to encapsulate your instantiation in an
if-generatestatement. Something like: