When defining a port, the port:
• Can be constrained or unconstrained.
• Are usually constrained.
• Can be left unconstrained in the entity declaration.
° If ports are left unconstrained, their width is defined at instantiation when the connection is made between formal ports and actual signals.
° Unconstrained ports allow you to create different instantiations of the same entity, defining different port widths.
RECOMMENDED: Do not use unconstrained ports. Define ports that are constrained through generics. Apply different values of those generics at instantiation. Do not have an unconstrained port on the top-level entity.
Array types of more than one-dimension are not accepted as ports.
The entity declaration can also declare VHDL generics.