Quantcast
Channel: UVM Forums RSS Feed
Viewing all articles
Browse latest Browse all 756

User defines frontdoor sequence can't support simultaneous accesses

$
0
0

Hi

We're trying to use a used defined frontdoor sequence for our register model. Most of our registers are accessed through an indirection mechanism, so creating a custom frontdoor sequence looks like the way to go.

Everything works well, except when parallel threads are trying to simultaneously access the model (*NOT* to the same register of course) we're getting into some trouble - the frontdoor sequence is started again causing a UVM_FATAL error. Here's the code from uvm_reg:

         // ...VIA USER FRONTDOOR
         if (map_info.frontdoor != null) begin
            uvm_reg_frontdoor fd = map_info.frontdoor;
            fd.rw_info = rw;
            if (fd.sequencer == null)
              fd.sequencer = system_map.get_sequencer();
            fd.start(fd.sequencer, rw.parent);
         end

Now either we can set a unique instance of the frontdoor sequence to each register (doesn't sound like a good idea in terms of memory usage), or we need to have some sort of a semaphore for the whole map (not sure how exactly.

We can also try to "clone" the sequence instead of just starting it, but that involves changing the code of UVM...

 

What do you guys propose?

 

Thanks.


Viewing all articles
Browse latest Browse all 756

Trending Articles