1. A template for a plurality of data transmission protocols, the template comprising: (a) a plurality of input/output (I/O) blocks; (b) a plurality of PHYs connected to each of the plurality of I/O blocks; (c) at least one RTL shell; and (d) a plurality of configurable gate arrays, a portion of which is to be configured into at least one protocol layer connected to at least one of the plurality of PHYs.