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