Jump to content
Sign in to follow this  
swapnilm

How to connect driver to the monitor directly?

Recommended Posts

Hello All,

I want to connect driver directly to the monitor,(not going through any DUT). So how does it work? Which TLM can be used and how? Can someone plz help in this regard? The transaction packets are being sent from driver to monitor in byte form. So please guide me through.

Thanks,

Swapnil

Share this post


Link to post
Share on other sites

Hello whiteriver,

In order for me to check the functionality of my verification environment, I want to check whatever packets I am sending through driver, I am receiving the same packets. Hence rather than sending the packets inside the DUT, which may increase the complexity of debugging, I want to directly connect driver to the monitor. I thought there should be a way, through some TLMs, to check this kind of functionality. And if at all, I am supposed to connect both driver and monitor to interface only, should the other end of interface not be connected to DUT? Or can I really connect the same interface to both monitor and driver, and not connecting that interface to the DUT? Can it work this way also? Plz give some idea.

Regds,

Swapnil

Share this post


Link to post
Share on other sites

Hi swapnilm,

you can do a check between sent packets and monitored packets as below.

monitor and driver should connected to same interface and that both components should have a analysis export port ,so whenever your packet is ready to send for comparision you can directly pass those packets with write method of analysis port to the scoreboard ,where u have to declare as a import port and compare with the uvm compare task.

as per your question you can directly try to connect driver and monitor with analysis export port in to driver and import port in to monitor.I think it should work with out any outside interface because both is extended from the uvm_component base class.

Regards

Share this post


Link to post
Share on other sites

Hello Sega,

I connected the analysis ports for both driver and monitor in scoreboard and comparing the sent and the received packets. Also connected the driver with the monitor through an interface and and empty DUT (which only prints the bytes are received in the DUT). But still the packets are mismatch. I am not getting any clue where its might be going wrong. I am getting following errors. Plz see if you can get any clue out of it.

Errors:-

# UVM_ERROR @ 50: reporter [PCKSZ] 16 bits needed to unpack integral, yet only 0 available.

# UVM_ERROR @ 50: reporter [PCKSZ] 16 bits needed to unpack integral, yet only 0 available.

UVM_FATAL @ 600: uvm_test_top.env_h.agent_h.sequencer1_h [uvm_test_top.env_h.agent_h.sequencer1_h] Item_done() called with no outstanding requests. Each call to item_done() must be paired with a previous call to get_next_item().

And dont know why but only 1 packet is being sent, although I am trying to send many packets through a sequence. But its not working.

Please give some guidance, if you you are getting any clue of where it might be going wrong?

Thanks and regds,

Swapnil

Share this post


Link to post
Share on other sites

Hi swapnilm, 

                  sorry for delayed reply.

                  Can you once try the same thing with using UVM_NOPACK for each and every field in to packet class, which are present into object utilities.

                  I am not much sure but it showing some packing and unpacking related issue so i think we can try without using internal packing and unpacking utils once.

Regards

sega 

Share this post


Link to post
Share on other sites

Hello Swapnil

 

You can connect driver to monitor directly using interface .through this interface you can communicate directly between driver and monitor without using dut.

i will post my code here so you will get idea from it.It is working successfully.

Share this post


Link to post
Share on other sites

Both the driver and monitor must have virtual interface variables. You can initialize

both these variables to point to the same instance of the interface.  Whenever the driver drives a signal on the interface, this change

will be visible in the monitor's virtual interface.

 

At some point in the future when you want to connect the DUT, you will be able to  instantiate the DUT in the same

environment without any modifications to your driver or monitor.

 

Loganath

Share this post


Link to post
Share on other sites

Take a look at Figure 1 in the UVM user guide. You should have 2 agents for your DUT. One for the input side (what you're calling your "driver") and one for the output side (which I think you're calling your "monitor"). Each of these agents contains a monitor. The input monitor should communicate to your scoreboard as will the output monitor.

 

This allows you to check the functionality of the DUT (comparing what it saw on the inputs to what it generated on the outputs).

 

If you want to check the functionality of the driver, you'll need to compare the input transactions in the driver against those observed by the input monitor (this is not generally automated).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×