This example shows a SV producer driving an SC consumer via a TLM2 UVMC connection, and an SC consumer sending transactions to a SV scoreboard via a TLM1 analysis connection. It also makes a local UVM analysis connection between the producer and scoreboard. See UVMC Connection Example - Basic Testbench, SC side for the SC portion of this example.

The sv_main top-level module below creates and starts the SV portion of this example. It does the following:
These connections would normally be made in the connect method of a UVM component. This example does not show that for sake of brevity and highlighting the UVMC connect calls.
| UVMC Connection Example - Basic Testbench, SV side | |
| This example shows a SV producer driving an SC consumer via a TLM2 UVMC connection, and an SC consumer sending transactions to a SV scoreboard via a TLM1 analysis connection. |
//
//------------------------------------------------------------//
// Copyright 2009-2012 Mentor Graphics Corporation //
// All Rights Reserved Worldwid //
// //
// Licensed under the Apache License, Version 2.0 (the //
// "License"); you may not use this file except in //
// compliance with the License. You may obtain a copy of //
// the License at //
// //
// http://www.apache.org/licenses/LICENSE-2.0 //
// //
// Unless required by applicable law or agreed to in //
// writing, software distributed under the License is //
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR //
// CONDITIONS OF ANY KIND, either express or implied. See //
// the License for the specific language governing //
// permissions and limitations under the License. //
//------------------------------------------------------------//
import uvm_pkg::*;
import uvmc_pkg::*;
`include "producer.sv"
`include "scoreboard.sv"
module sv_main;
producer prod = new("prod");
scoreboard sb = new("sb");
initial begin
// normal SV-only connection
prod.ap.connect(sb.expect_in);
// TLM2 connection
uvmc_tlm #()::connect(prod.out, "stimulus");
// TLM1 connection
uvmc_tlm1 #(uvm_tlm_generic_payload)::connect(sb.actual_in, "analysis");
run_test();
end
endmodule