Module Uvm Connect Session1 Introduction Aerickson
Module Uvm Connect Session1 Introduction Aerickson
Module Uvm Connect Session1 Introduction Aerickson
Part 1 – Introduction
Adam Erickson
Verification Technologist
[email protected]
www.verificationacademy.com
UVM Connect Presentation Series
• Part 1 – UVMC Introduction
• Learn what UVMC is and why you need it
• Review the principles behind the TLM1 and TLM2 standards
• Review basic port/export/interface connections in both SC and SV
• Connect SC & SV SC
TLM1
SV
Models Using TLM1
• Connect SC & SV SC
TLM2
SV
Models Using TLM2
DMA
SV
uP RTL
Ctrl
T1 SC Ref Periph
Score Predict Mem Bus
Model A
T1 T2
T Periph
Seq Agent1 DUT Agent2 B
Interoperability Using Standard Interfaces
• To be reusable & easy to use, components must be
• Independent of their context, not expose implementation
Media Server TV
HDMI
Interoperability Using Standard Interfaces
• Interfaces
• An interface is a group of methods with well-defined semantics
• Hide implementation
- Implementation can change without affecting code that uses it
- Also known as “encapsulation” or “decoupling”
• Make integration easier—connect the ports, like modules
• Enhance reuse—can reuse components in may different contexts
• Transaction-Level Interfaces
• The interface conveys transaction objects
• “Initiator” components call these methods to send or request new
transactions
• “Target” components implement these methods to execute
transactions or fulfill requests
• TLM ports, exports, and sockets isolate interface callers from
interface implementors
TLM Standard Interfaces
• TLM 1.0 - 2005
• Defines simple intput, get, peek, analysis, fifo
• Semantics only loosely defined
• pass by value
initiator target
producer consumer
Hierarchical TLM Connections
• Ports can connect/bind to • Interfaces (SC)
• Parent ports • Pure virtual classes inherited by
• Sibling exports target. No explicit binding.
• Sibling interfaces/imps • Imps (SV)
• Exports can connect/bind to • Are implicitly bound to target
• Child exports when allocated in target’s c’tor
• Child interfaces/imps • in = new(“in”, this);
parent1 parent2
parent1
initiator
target
void put( t ) {
port.put( t ); …
}
Hierarchical TLM Connections
• Resolving port connections
• occurs just before end of elaboration
• all ports requiring connections connected?
- SC and SV do this checking independently
• if all OK, port-export-interface/imp network collapsed such
that calls incur at most 2 hops
- SC: initiator call port target method
- SV: initiator call port imp target method
parent1 parent2
parent1
initiator
target
void put( t ) {
port->put( t ); …
}
TLM Ports
producer
• Ports are used to out
some
target
call interface
out->put( t );
methods implemented
elsewhere SC
// BACKWARD PATH
• If driving SV target, void bw_proc() {
mem and debug ...coordinate with fw transport per protocol
methods can be stubbed in->nb_transport_bw(trans,ph,delay);
out. }
};
• Depicted as square some consumer
with inward facing arrow initiator
socket void b_transport (packet&, sc_time&)
SC
TLM Sockets – Blocking Transport
• Blocking Transport
initiator target
initiator target
void run() {
tlm_status nb_transport_fw
stat = skt->nb_transport_fw
( t&, phase&, delay& ) {
( t, phase, delay );
process fw request…
} coordinate }
coordinate
tlm_status nb_transport_bw void run() {
( t&, phase&, delay& ) { stat= skt->nb_transport_bw
process bw response… ( t, phase, delay );
} }
TLM Generic Payload
• TLM 2.0 defines Field Description
• a base transaction type:
tlm_generic_payload (TLM GP) command READ, WRITE, or
IGNORE
• a base protocol with initiator/target
sockets address Base address
Adam Erickson
Verification Technologist
[email protected]
www.verificationacademy.com