An apparatus comprising: a backedge filter to remove a backedge between a first node and a second node of a dataflow graph, DFG,, the first node representing a first operation of the DFG, the second node representing a second operation of the dataflow graph, the backedge representing an interconnecting arc between a child node or operation and a parent node or operation; a latency calculator to determine a critical path latency of a critical path of the DFG that includes the first node and the second node, the critical path being attributable to the longest latency between the first and second node relative to latencies of one or more other path(s), that are non-critical paths, between the first and second node; a latency comparator to compare the critical path latency to a first latency sum of a first buffer latency and a noncritical path latency, the first buffer latency corresponding to a first amount of latency introduced into the non-critical path for one or more inserted first buffers, the noncritical path latency corresponding to the noncritical path; a buffer allocator to insert the one or more first buffers (136, 138) in the noncritical path when the comparator determines that the first latency sum of the first buffer latency and the noncritical path latency is less than the critical path latency of the critical path; wherein the latency comparator is to compare the critical path latency to a second latency sum of the first buffer latency, the non-critical path latency, and a second buffer latency, the second buffer latency corresponding to a second amount of latency introduced into the non-critical path for an inserted second buffer; wherein the buffer allocator is to not insert the second buffer in the non-critical path when the latency comparator determines that the second latency sum exceeds the critical path latency. a backedge filter to remove a backedge between a first node and a second node of a dataflow graph, DFG,, the first node representing a first operation of the DFG, the second node representing a second operation of the dataflow graph, the backedge representing an interconnecting arc between a child node or operation and a parent node or operation; a latency calculator to determine a critical path latency of a critical path of the DFG that includes the first node and the second node, the critical path being attributable to the longest latency between the first and second node relative to latencies of one or more other path(s), that are non-critical paths, between the first and second node; a latency comparator to compare the critical path latency to a first latency sum of a first buffer latency and a noncritical path latency, the first buffer latency corresponding to a first amount of latency introduced into the non-critical path for one or more inserted first buffers, the noncritical path latency corresponding to the noncritical path; a buffer allocator to insert the one or more first buffers (136, 138) in the noncritical path when the comparator determines that the first latency sum of the first buffer latency and the noncritical path latency is less than the critical path latency of the critical path; wherein the latency comparator is to compare the critical path latency to a second latency sum of the first buffer latency, the non-critical path latency, and a second buffer latency, the second buffer latency corresponding to a second amount of latency introduced into the non-critical path for an inserted second buffer; wherein the buffer allocator is to not insert the second buffer in the non-critical path when the latency comparator determines that the second latency sum exceeds the critical path latency.