simulation: do not generate SPI matrix lazily, this hopefully fixes a segfault

A race condition leading to corrupt heap memory could occur when multiple threads tried to generate the matrix for the (shared) rule simultaniously. This was a bug that never occurred in any debugger and took easily 20h to find and fix. That is, if it really was this issue.