Normally the connection between two processes is through port and export , but with TLM 2.0 we have sockets which provide asynchronous pipelined bi directional connectivity between components. Socket has both a export and port packaged together. A socket can be initiator socket or target socket. Data flows in the forward direction from the initiator socket to target socket , there is also a backward path between Target socket to initiator socket. TLM connectivity between components can be easily encapsulated using sockets.
Sunday, November 3, 2013
Sunday, October 13, 2013
Phases in UVM !!!
UVM component have different phases like build() , connect() , end_of_elaboration() , start_of_simulation(), run() , extract() , check() & report(). Except run() all other phases are virtual functions , run() phase is a virtual task.
phases operate in a particular sequence as follows build -> connect --> end_of_elaboration --> start_of_simulation --> run --> extract --> check --> report. All the phases except build() phase is bottom up , build phase is top down. In UVM we have provision to add custom phase.
Sunday, September 29, 2013
TLM process communication using TLM FIFO !!!
Thursday, August 15, 2013
Build in command line options in UVM !!!
here are some of the useful build in command line options in UVM.
instance specific factory override : +uvm_set_inst_override
type specific factory override : +uvm_set_type_override
integer configuration : +uvm_set_config_int
string configuration : +uvm_set_config_string
Timeout : +UVM_TIMEOUT
Max quit count : +UVM_MAX_QUIT_COUNT
Objection trace : +UVM_OBJECTION_TRACE
These command line options helps in quick debug and test writing.
Saturday, July 13, 2013
System verilog assertion coverage !!!
Functional coverage collection with passive monitor is the method recommended by methodology to collect coverage. There is alternative ways to collect coverage in system verilog using assertion coverage. This feature is very useful if you want to collect coverage on some important DUT events , using assertion coverage has its own advantages and disadvantages.
Advantages of assertion coverage
- Coverage monitors are not required to collect required coverage event and then trigger a cover group.
- Coverage is collected using assertions and using cover property , binding the assertion to the module or instance is required to collect coverage from the DUT.
- Implementing and collecting assertion coverage is faster compared to writing functional coverage for DUT events.
- Assertion coverage is perfect fit for collecting coverage on important DUT events.
Disadvantages of assertion coverage
- Assertions coverage if not coded appropriately takes considerable amount of simulation time.
- Debugging assertion failures is slightly complex than debugging coverage events in a passive monitor.
Saturday, June 1, 2013
Sequence library in UVM !!!
Sequences can be grouped using uvm sequence library , sequences can be registered to sequence library using the macro `uvm_add_to_seq_lib(). When the sequence library is started it randomly selects and executes the sequence depending on the selection mode. Selection modes can be any of the following
UVM_SEQ_LIB_RAND -- Random selection of sequence
UVM_SEQ_LIB_RANDC -- Random selection without repeating the sequences
UVM_SEQ_LIB_ITEM -- Execute a single sequence item
UVM_SEQ_LIB_USER -- user selects sequences using select_sequence() method
Selection mode of the sequence library is set using uvm_config_db().
sequence library can be used to create system level scenario using random sequences.
Thursday, May 2, 2013
Interrupt handling using grab() and ungrab() sequencer in UVM !!!
Subscribe to:
Posts (Atom)
