Electronic – In VHDL, does having large bus input to component take extra resources

busfpgavhdl

I have a component that has a very large array signal in it (a couple kilobits) and I currently write and read to it in only one component. I have checked in Vivado if this uses too much resources, and it doesn't. My question is I want to have a sub-component that can access this array (only read from it). If I merely set the array as an input to the sub-component, will it take any more resources that if I implemented the array in the same component? I know the optimizing compiler is pretty powerful, but I don't know what goes on when you interface between VHDL components.

Thanks

Best Answer

When you look at the design as a schematic, you might get a false sense that borders exist between your individual modules (or entities). But, by default Vivado flattens your design - which means your design is essentially treated as one big layout. All sub-component boundaries are ignored. So, just think of it as if you had simply copied the sub-component's code and pasted it into the parent.

Of course, you can tell Vivado to maintain your defined hierarchy (i.e. not flatten the design), in which case the place and routing stages will try and colocate the guts of each individual entity within the fabric. But even still, it won't replicate drivers of signals which exist in parent components.