Soft Connections: Addressing the Hardware-Design Modularity Problem

Modularity is a critical feature of high-level Hardware Description Languages (HDLs). Ideally designers should be able to swap alternative modules in a \"Plug-and-play\" manner. Such swapping enables code reuse and design-space exploration, and thus enhances designer productivity. Hardware-design languages typically impose a rigid communication hierarchy that follows module instantiation. This leads to an undesirable side-effect where changes to a child's interface result in changes to the parents. Soft connections address this problem by allowing the user to specify connection endpoints that are automatically connected at compilation time, rather than by the user.