LUT Register Mode
When FIFO implementation is configured to the LUT register, the synthesis tool implements
the memory array using registers clocked by the wr_clk_i. This
architecture creates a direct physical path from the storage registers in the write
domain to the data output registers in the read domain.
While static timing analysis (STA) tools identify this as a timing violation, it is
architecturally safe to ignore. The FIFO’s internal pointer logic strictly prevents the
read address from matching the write address, unless the FIFO is empty, guaranteeing
that the data at the read address is stable before it is sampled. Therefore, you should
apply a set_false_path constraint from the RAM registers to the read
data output registers to suppress these violations.
- Output Register =
Disable
set_false_path -from [get_cells <fifo_instance_name>/xefx_fifo_ram/ram*] -to [get_cells rdata*] - Output Register =
Enable
set_false_path -from [get_cells <fifo_instance_name>/xefx_fifo_ram/ram*] -to [get_cells <fifo_instance_name>/xefx_fifo_ram/r_rdata_1P*]