Corner Cases to Verify Synchronous FIFO
OK, that looks a bit more like a normal synchronous FIFO but:


There is no FULL flag so the producer does not know when to stop writing. 
There is an overflow but no underflow (or rename this signal to e.g. error).
There is no reset/clear. How does the overflow (error) get cleared?
What is the depth? Lets assume N.


Test corner cases are:


Writing to full FIFO check overflow gets set.
Reading from empty FIFO  underflow/error???
With a full FIFO do simultaneous write and read. overflow remains clear


Normal test cases are foreach x in 1..N


Write X values and check empty flag is clear and stays clear after each write.
Read X values and check empty flag is clear and stays clear unless it is the last read.
In all case overflow should remain clear.
Write always unique values and check the read values correspond.
Toggle at least each data line high and low.


Always run with code coverage and check the score.