The parameterized uvm_driver base class includes a built-in uvm_seq_item_pull_port called seq_item_port. The parameterized uvm_sequencer base class includes a built-in uvm_seq_item_pull_imp called seq_item_export. These are always connected in the agent.
Every UVM agent that I create has a tb_monitor extended from the uvm_monitor and everyone declares a uvm_analysis_port.
Question for UVM Library Developers: Is there any reason the uvm_monitor base class should not be enhanced to be parameterized to the transaction type and include a built-in uvm_analysis_port?
Regards - Cliff Cummings