Why does uvm_analysis_imp require the second parameter?

Declaring uvm_analysis_imp (inside a scoreboard for example), requires that the second parameter used is the name of the scoreboard class. When the uvm_analysis_imp declaration is inside the scoreboard class, why should the name of scoreboard class be passed as the second paramater?


uvm_analysis_imp #(my_trans, my_scbd) my_imp_port;


Thanks.

The uvm_analysis_imp is a wrapper that exports your scoreboard’s write() method as the subscriber for an analysis_port write. You might want to read TLM1 Method | Verification Academy. Basically it needed to complete a chain of wrappers.