I am using an interface to define my module ports. However, after Synthesis, the underlying logic is trimmed:
It is highly recommended to use modports in an interface when using Vivado Synthesis. Not doing so forces the synthesis tool to figure out the direction on each level and this does not always work correctly.
To work around this issue, use a modport in the interface to determine direction as shown in the example below: