Hi,
I never did say it does not work.
Just my opinion: If you have a circuit and you never know "when" your output is valid, then it is unreliable .. and an device with unreliable output, I call "useless".
****
Indeed the discussion is not about "functional or not", it is about the missing timing information.
Imagine a railway gate. It does "work" when it goes up and down. But it is "useless" when it goes up and down at the wrong time. --> The timing needs to be referenced to the train.
****
And now there is ACLK . Hooray!
We have a reference for the timing!
ACLK arrives always much later ..."
we never had this information before. Urgent information.
--> this is the missing specification that defines when the data is valid or not... and thus whether a circuit is useless or not. (see my second post)
But
... is meaningless without a value. It may be picoseconds .. it may be half a year.
This exactly now is your job to find out how input_data and output_data need to be related to ACLK.
I guess no one of us can do this for you.
This is how your timing has to constrained.
That also means whenever inputs are invalid the outputs are not needed.
This is what a timing diagram is for....
***
Klaus