Dynamic tiled state machine tailored for Spartan6 logic blocks

After the previous post about how to implement a tiny sate machine in one CLB only?, the point of view of the Spartan-6 silicium die can now be shifted from a sea of logical blocks (CLB), into a sea of potential state machines.

Here is my design proposal for a 16-state state machine using 5 identical 4-state state machines and 2 multiplexers.

In order to fit the larger design, the 4-state state machine building block was updated to following way:

The local state feedback loop can now be controled from outside, and the current state is also an output.

/* TODO: to be continued */