1. A method for generating a Network on Chip (NoC), comprising: generating the NoC comprising a hardware element comprising an input channel and an an output channel, the generating the NoC comprising: sizing the input channel and the output channel of the NoC based on flow control of the hardware element; adjusting a buffer size of a buffer associated with the input channel based on a performance objective and a throughput of at least one of the input channel and output channel; and adjusting a buffer size of a buffer associated with the output channel based on the performance objective and the throughput of the at least one of the output channel and input channel.