Eine Möglichkeit ist es, den Verlauf der Takte dreiecksförmig "Jittern"
zu lassen, d.h. es erfolgt eine Phase der Beschleunigung und des
Bremsens und dann umgekehrt. Damit entstehen Taktvorlauf und -nachlauf.
Mit einer sinnvollen Einstellung diesbezüglich bei allen Takten kann man
alle prinzipiellen Konstellationen der Takte zueinander abklappern. Die
andere Option ist, dass ein Takt permanent etwas schneller läuft, als er
nominell spezifiziert ist, weil sie aus irgendwelchen Quarzen kommen.
Diese Betrachtungen haben Auswirkungen auf die benötigten minimalen
FiFo-Längen bei asynchroner Übergabe von Daten, wenn sich Takte nicht
sehr strak unterscheiden. Theoretisch lässt sich das alles natürlich
auch rechnerisch lösen, um es zu designen, aber ein formeller Beweis der
Extremfälle ist eben nur möglich, wenn man ihn praktisch auch
nachstellt.
Damit hat man auch gleich eine Dokumentation dieser Fälle, wenn es in
bestimmten Branchen nötig ist, diesen formellen Beweis anschaulich zu
führen. Im Prinzip lässt sich natürlich auch dass alles wider mit
Diagrammen aufzeigen und veranschaulichen. Aber oft finde ich es
einfacher, eben mal schnell die Takte zu verstellen und sich den Fall in
der Simulation zu suchen, bzw ihn zu provozieren. ModelSim "malt" das
Timing-Diagramm dann automatisch und ich habe in Nullkommanix einen
Sreenshot für die Doku.