refactor propagateStages and optimizePlacement to use its own graph representation instead of the native chisel graph