Split the synthesis and backend flows better into multiple steps with clean inputs, checkpoints and outputs.
The goal is to make the accompanying exercises more self-contained and make it easier for students to slot in their own flow scripts written during the exercises.