Before starting on the RTL development I implemented a rough python model of the hardware to do some initial design exploration. The main purposes of this model were to explore what the micro-instructions of the hardware should look like, and to get a feel of whether the message passing approach was practical. In particular I wanted to investigate whether network congestion would limit the performance of the hardware.

The basic structure of the python model is: