In digital design, the output signals may have source in register or perhaps some combinatorial logic which is directly connected to an output port. This raises these questions:
- How important is it to always register outputs, even when they are generated from purely combinatorial process?
- How important is it to register input signals before they are used inside an entity/module?
The design may appear to work correctly even if input/output signals are not registered. However, adding registers ultimately adds latency but can also lead to higher fmax or help the fitter/floorplan stage. So in this way, there is a trade-off. Because of this, the correct answer to this question is not clear.
EDIT: Please note that I am referring to entity/module created in hierarchical designs. This is not specific to top level entity/module in a design.