I have been testing some end-to-end handshake designs and experimenting with where to put buffers in the circuits. In one of my most recent tests, a complex circuit terminated execution, but with an incorrect result.
That’s the first time I’ve seen wrong results. My understanding is moving around buffers can prevent deadlock in a design like this, but should never change the result. So, I believe we have at least one bug in the hardware generated from handshake.
I’m trying to see what is a good way to track down such bugs, and verify that our components actually do provide the guarantees we expect. For example, I found this paper: https://arxiv.org/pdf/2102.06326.pdf. I’m learning about their methodology and might try something similar.
I thought I’d ask the community here, does anyone have some experience with verifying the latency insensitivity of handshaking components?