If PROGEMPTY is asserted, the number of words in the FIFO is less than or equal to PROG_EMPTY_THRESH.
Because of the inherent latencies in the FIFO, especially for the independent-clocks FIFO, PROGEMPTY is always considered a pessimistic flag. This means that not all write operations might have synchronized to the RDCLK domain, and therefore the words in the FIFO might be reported as fewer than there actually are in the FIFO. However, because the PROGEMPTY flag is synchronous to the RDCLK domain, it is generally used to determine how many locations in the FIFO are available to be read, so the under-reporting of PROGEMPTY guarantees that the FIFO never underflows.
The number of clock cycles required for a write operation to cause PROGEMPTY to deassert depends on the FIFO configuration. For an independent-clocks FIFO, a write operation is first synchronized internally to the RDCLK domain before it can influence the status of the PROGEMPTY flag, resulting in a latency from the write operation to the deassertion of PROGEMPTY that is a combination of a few write clocks followed by a few read clocks.
The PROGEMPTY flag is synchronous to the RDCLK domain and is intended as a status signal for logic reading from the FIFO.