In reference to analysis port used in system verilog or UVM monitor, is there any specific guidelines on number of analysis port to be used?
While I understand from SV LRM perspective there is no constraint, but from efficiency point of view what is better when different subscribers uses either part or all information monitored/sampled by monitor :
to have multiple analysis port in monitor sending different transaction. Respective subscriber can connect to either one or multiple analysis ports to receive data.
Or to have single analysis port sending a transaction wrapper which can have handles to multiple/different transactions? All subscriber to use same analysis port, but can get consume relevant information via handles to different transactions.
In reply to bhupeshpaliwal:
I am not aware of any such constraint. But if you want to send the same transaction to multiple subscriber then a single uvm_analysis_port is enough.
4.1 uvm_analysis_port ‐ broadcast port
As already noted, the uvm_analysis_port is a broadcast port that broadcasts a transaction from
the port until it reaches zero or more uvm_analysis_imp ports where the transaction is either used
immediately (in 0‐time), or a copy of the transaction is made so that the copy can be manipulated
over time without modifying the original broadcast transaction. This is why the transaction copy()
command I so important (see Section 4.1.1 ).
A uvm_analysis_port can be connected to other uvm_analysis_ports, uvm_analysis_exports
and uvm_analysis_imps, but there is only one uvm_analysis_imp per analysis path.
In reply to bdreku:
Yeah, that’s typical case, analysis port are used for broadcast only. I am trying to infer whether to use or not to use multiple analysis port in same monitor
In reply to bhupeshpaliwal:
If you have different types of transaction then you can have analysis port per transaction, but for the same type of transaction there is no meaning of using multiple analysis ports.