Jump to content

uvm_blocking_peek_imp in ubus example

Recommended Posts


i saw "uvm_blocking_peek_imp#(ubus_transfer,ubus_slave_monitor) addr_ph_imp" in ubus_slave_monitor.sv file. but i don't know how it peeks the ubus_transfer, i cann't see any other code about addr_ph_imp except in class ubus_slave_agent like this: sequencer.addr_ph_port.connect(monitor.addr_ph_imp);

i guess that there should be some codes like this addr_ph_imp.write(ubus_transfer), then the sequencer can peek the ubus_transfer, but there isn't.

any expert to answer my question? thanks in advance.

Edited by mrforever
Link to comment
Share on other sites

The slave monitor having a uvm_blocking_peek_imp means it is implementing a peek member task for someone else to call through a uvm_blocking_peek_port, which in this case sits in the sequencer. A sequence can then call peek() on the sequencer port, i.e p_sequencer.addr_ph_port.peek(). The peek call will be forwarded to the peek task of the monitor since the slave agent has connected the peek port of the sequencer to the monitor peek imp. At that point, peek() of the monitor will pend on the address_phase_grabbed event and return trans_collected to the sequence in the trans output parameter when the event triggers.


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...