Divergente, zeitabhängige Funktionen, wie Du sie hier benutzt, basieren
auf asynchronen Laufzeiteffekten, die nur auf Registerebene definiert
werden können. In Asics lässt sich sowas leicht einbauen und im Prinzip
geht es auch im FPGA - Du musst es nur den Werkzeugen beibringen. Da
gibt es aber ein Problem mit der Interpretation von Schaltungsdesign und
Validierung:
Du und Deine Firma müssen sich darauf einigen, wie sie
Chip-Funktionalität nutzen wollen. Die Synthesewerkzeuge wie XST sind
darauf ausgelegt, aus abstrakten HDL-Definitionen, welche Verhalten
beschreiben, eine funktionsfähige Schaltung zu generieren. Dies tun sie
aber aufgrund der Annahme von synchronen! Schaltungstopologien, bei der
Laufzeiten und asynchrone Funktionen gezielt eliminiert / misachtet
werden, so möglich. Daher werden bei lediglicher Beachtung der
Sollsignalzustände im clk-Zeitpunkt einige Funktionen unterwegs
wegoptimiert. Das gilt im Bereich FPGA auch für redundante
Schaltungsfunktionen, die hazzards infolge der Nutzung ungepufferter
Kombinatorik unterdrücken: Die kriegt man im FPGA meist nicht
synthetisiert (leider).
Wenn Du solche Dinge eindesignen möchtest, must Du aber auch mal über
Testfunktionalität und Designsicherheit nachdenken. Ist die Schaltung
mit der gegebenen Umgebung noch 100% simulier- und damit das Verhalten
voraussagbar? Kannst Du so die Schaltungsfunktion unter den
verschiedenen Fallbeispielen noch vollständig untersuchen? Nicht alles,
was digital-elektronisch funktionieren müsste, ist in der jeweils
genutzten Entwicklungslandschaft als valider Entwicklungspfad anzunehmen
und in manchen Branchen kommt es darauf an, daß man im Falle eines
Falles korrekt entwickelt hat. Tricks werden da im Nachhinein rasch zu
Fussangeln!
Quintessenz: Überführe die asychronen und laufzeitabhängigen Pfade
lieber in zeitlich gerasterte Pfade, die den synchronen Designprinzipien
unterworfen, durchsimuliert und dann auch leicht und voraussagbar
synthetisiert werden können.
Aus akademischen Gründen ist es aber interessant, sowas hinzubekommen /
zu steuern.