1. A router in a Network on Chip (NoC) comprising a plurality of routers, the router comprising: a plurality of ports, each of the plurality of ports configured with one or more virtual channels (VCs), each of the one or more VCs associated with a separate buffer, each of the one or more VCs configured to connect to specified one or more other ports or VCs of the plurality of ports based on a membership specified by a specification; wherein a number of the plurality of ports and a number of the one or more VCs for the each of the plurality of ports is specified by the specification; wherein a size of each of the one or more VCs and a size of the buffer is specified by the specification; wherein the connectivity between each of the one or more VCs is specified by the specification; wherein the one or more VCs are configured to operate in different clock domain as specified by the specification; wherein said NoC is constructed by a software layer that configures the one or more of the plurality of routers with information from the specification and connects one or more of the plurality of ports of the one or more of the plurality of routers to one another or to one or more agents of the NoC, and that further configures the one or more of the plurality of routers with information to facilitate routing of packets between NoC agents.