One of the cookbook examples (predictor) contains an example where the predictor is a systemc module. One of the files has following content:
package alu_sc_pkg;
import uvm_pkg::*;
import uvmc_pkg::*;
import alu_analysis_pkg::alu_tlm;
import alu_agent_pkg::alu_txn;
`include "uvm_macros.svh"
class alu_tlm_sc extends alu_tlm;
`uvm_component_utils(alu_tlm_sc)
uvm_analysis_port #(alu_txn) analysis_port;
function new(string name, uvm_component parent);
super.new(name, parent);
analysis_port = new("operands_in",this);
endfunction
virtual function void connect_phase(uvm_phase phase);
uvmc_tlm1 #(alu_txn)::connect(analysis_port, "alu_in");
uvmc_tlm1 #(alu_txn)::connect_hier(results_ap, "alu_out");
endfunction
virtual function void write(alu_txn t);
analysis_port.write(t);
endfunction
endclass
endpackage
module alu_sc_top;
import alu_sc_pkg::*;
import uvm_pkg::*;
endmodule
Near the bottom there is a module importing the above declared pkg and uvm pkg.
What is this doing? It does not instantiate any class or so, at least not explicitly…so I am a bit puzzled.