11.4 Evaluating and optimizing memory and timing across HW and SW boundaries