Mutex Components on FPGA

The Mutex-mutual exclusion block is a basic block in asynchronous design that receives requests from two sources to use the same resource.
If the two sources request to use the same resource at the same time this is a race that may cause metastablilty.
The project suggests a test environment to check the functionality of Mutex on FPGA in case of metastability.

The Mutex has two main parts : Latch , Filter .
The Filter is needed to avoid getting undefined values at the mutex’s output if the latch goes into metastability.

The test environemet assigns values in the inputs of the mutex , it tracks the values of the Mutex’s outputs during the propagtion delay of the Mutex , and
it saves those results inside registers that were assigned in the RegisterBank.
These results are data source that can be analyzed to get conclusions about the Mutex behavior during metastability.

The test environment supports two modes of tests:
1)One test mode that checks the values at the output of the mutex for a specific inputs values combination .
2)Many tests mode ,the user choose the number of the tests,for checking the metastability case, this is necessary because the metastability is analyzed statistically ,
and the more samples of results we have the more accurate the conclusions about the mutex behavior would be.

In addition , the test environment gives a simple interface for the user to run the tests and get the results by write and read commands via the xmd .