uvm_tlm_analysis_fifo is extended from the uvm_tlm_fifo.
From the source code of the uvm_tlm_analysis_fifo I understood that, this component will support the unbounded size of data. where uvm_tlm_fifo can not support.
Apart from the above difference is there any difference between the uvm_tlm_fifo and the uvm_analysis_tlm_fifo.
The source code for the class
uvm_tlm_analysis_fifo shows you precisely what the differences are.
The class
uvm_tlm_fifo supports both bounded and unbounded fifos. But when the constructor of
uvm_tlm_analysis_fifo calls super.new(), it fixes the size argument to unbounded, 0. It also constructs an analysis_export, which implements the necessary write() method, which calls the fifos try_put() method.