In reply to chr_sue:
After going through source code ( and even trying various codes ) I know one thing for certain , the port-to-port , port-to-export connection if not followed doesn’t have any consequences for analysis_port .
The txn object will still be transferred from starting port to the imp .
Here’s a snippet from uvm_port_base class ::
// if we're an analysis port, allow connection to anywhere
if (get_type_name() == "uvm_analysis_port")
return 1;
Also when it comes to normal ( non analysis port classes ) if I use ::
sub_comp1.sub_comp2.port.connect ( sub_comp3.imp ) ;
// sub_comp2 is child of sub_comp1 . sub_comp1 and sub_comp3 are at same level of hierarchy .
I would still see the transaction being transferred from port to imp .
Here’s a link to a question I had posted regarding the same on accellera forum ::