classuvm_tlm_fifo#(typeT=int)extendsuvm_tlm_fifo_base#(T);conststaticstringtype_name="uvm_tlm_fifo #(T)";localmailbox#(T)m;localintm_size;protectedintm_pending_blocked_gets;// Function: new//// The ~name~ and ~parent~ are the normal uvm_component constructor arguments. // The ~parent~ should be ~null~ if the <uvm_tlm_fifo#(T)> is going to be used in a// statically elaborated construct (e.g., a module). The ~size~ indicates the// maximum size of the FIFO; a value of zero indicates no upper bound.functionnew(stringname,uvm_componentparent=null,intsize=1);super.new(name,parent);
typedefuvm_tlm_req_rsp_channel#(REQ,RSP)this_type;conststaticstringtype_name="uvm_tlm_req_rsp_channel #(REQ,RSP)";// Port: put_request_export//// The put_export provides both the blocking and non-blocking put interface// methods to the request FIFO:////| task put (input T t);//| function bit can_put ();//| function bit try_put (input T t);//// Any put port variant can connect and send transactions to the request FIFO// via this export, provided the transaction types match.uvm_put_export#(REQ)put_request_export;
// @uvm-ieee 1800.2-2020 auto 18.2.8.2classuvm_tlm_fifo#(typeT=int)extendsuvm_tlm_fifo_base#(T);`uvm_component_param_utils(uvm_tlm_fifo#(T))`uvm_type_name_decl("uvm_tlm_fifo #(T)")localmailbox#(T)m;localintm_size;`ifndefUVM_USE_PROCESS_CONTAINERprotectedbitm_pending_blocked_gets[process];`elseprotectedbitm_pending_blocked_gets[process_container_c];`endif// Function -- NODOCS -- new//// The ~name~ and ~parent~ are the normal uvm_component constructor arguments. // The ~parent~ should be ~null~ if the <uvm_tlm_fifo#(T)> is going to be used in a
//------------------------------------------------------------------------------classuvm_tlm_analysis_fifo#(typeT=int)extendsuvm_tlm_fifo#(T);`uvm_component_param_utils(uvm_tlm_analysis_fifo#(T))`uvm_type_name_decl("uvm_tlm_analysis_fifo #(T)")// Port -- NODOCS -- analysis_export #(T)//// The analysis_export provides the write method to all connected analysis// ports and parent exports:////| function void write (T t)//// Access via ports bound to this export is the normal mechanism for writing// to an analysis FIFO. // See write method of <uvm_tlm_if_base #(T1,T2)> for more information.uvm_analysis_imp#(T,uvm_tlm_analysis_fifo#(T))analysis_export;
typedefuvm_tlm_req_rsp_channel#(REQ,RSP)this_type;`uvm_component_param_utils(uvm_tlm_req_rsp_channel#(REQ,RSP))`uvm_type_name_decl("uvm_tlm_req_rsp_channel #(REQ,RSP)")// Port -- NODOCS -- put_request_export//// The put_export provides both the blocking and non-blocking put interface// methods to the request FIFO:////| task put (input T t);//| function bit can_put ();//| function bit try_put (input T t);//// Any put port variant can connect and send transactions to the request FIFO// via this export, provided the transaction types match.uvm_put_export#(REQ)put_request_export;
classuvm_tlm_transport_channel#(typeREQ=int,typeRSP=REQ)extendsuvm_tlm_req_rsp_channel#(REQ,RSP);`uvm_component_param_utils(uvm_tlm_transport_channel#(REQ,RSP))`uvm_type_name_decl("uvm_tlm_transport_channel #(REQ,RSP)")typedefuvm_tlm_transport_channel#(REQ,RSP)this_type;// Port -- NODOCS -- transport_export//// The put_export provides both the blocking and non-blocking transport// interface methods to the response FIFO:////| task transport(REQ request, output RSP response);//| function bit nb_transport(REQ request, output RSP response);//// Any transport port variant can connect to and send requests and retrieve// responses via this export, provided the transaction types match. Upon// return, the response argument carries the response to the request.