In reply to Salman94:
When a ‘class’ is registered with factory, that class has implementation for ‘create()’ method.
While, in case of ‘Port’ which is class, and uvm source code for any ‘Port’ does not have any factory registration. So new() should be used to create a port.
Secondly, there is no point to replace any ‘Port’ in env, so this should be a reason for having ‘create()’ method implementation for any port.