1. A method for generating a Network on Chip (NoC), comprising: generating the NoC comprising a hardware element having an input port associated with an input virtual channel and an associated output port associated with an output virtual channel, the generating the NoC comprising: sizing a width of the input virtual channel based on a performance objective and a throughput of at least one of the input virtual channel and output virtual channel; sizing a width of the output virtual channel based on the performance objective and a throughput at least one of the output virtual channel and input virtual channel; and adjusting a buffer size of a buffer associated with the input virtual channel based on the performance objective and the throughput of at least one of the input virtual channel and output virtual channel; adjusting a buffer size of a buffer associated with the output virtual channel based on the performance objective and the throughput of the at least one of the output virtual channel and input virtual channel; wherein the hardware element is one of a router and a bridge.