1. A method for performing phase based scheduling in a network having two or more network processing units each network processing unit having at least one node, with each of the at least one node having a single output buffer, the method comprising the steps of: assigning one or more phases to each of said nodes to identify data dependencies; and synchronizing the two or more network processing units having the steps of: (a) identifying an epoch in each of said units; (b) sending a READY message to all upstream network processing units; (c) waiting for a READY message from all downstream network processing units; (d) selecting an uncomputed node in said epoch; (e) performing a compute operation on said selected node if said selected node is enabled; (f) outputting a result of said compute operation; (g) repeating steps (d) through (f) for each uncomputed node in said epoch; (h) sending a DONE message to all downstream network processing units; (i) waiting for a DONE message from all upstream network processing units; and (j) repeating steps (a) through (i) for each epoch.