Jump to content

How to Use multiple lower layer sequencers in parallel


Recommended Posts

In the Layered Sequencers,
As shown in the figure below, I want to use multiple lower layer sequencers(1,2,3) in parallel.
Is it possible?
If possible, Can you tell me how do I implement?

 

Sequencer(Upper) +-----> Sequencer(Lower1) ----> Driver
                           +-----> Sequencer(Lower2) ----> Driver
                           +-----> Sequencer(Lower3) ----> Driver

 

Link to comment
Share on other sites

hi, 

 

there are multiple ways to do that. the easiest is to use a virtual sequence (one without a driver) which drives the sequences on Lower1,Lower2,Lower3 and have the subsequences started in a fork/join.

 

class UpperVseq ...

someSeq Lower1;

someSeq Lower2;

someSeq Lower3;

 

task body();

fork

`uvm_do_on(Lower1sqr,Lower1)

`uvm_do_on(Lower2sqr,Lower2)

`uvm_do_on(Lower3sqr,Lower3)

join

endtask

Link to comment
Share on other sites

Thank you for reply.
I understood about how to fork/join in virtual sequence.

 

I was considering that I used to drive at the same time multiple lines in the Agent, this technology.

 

The following is an example of multiple lines environment.
This figure shows that the Agent is to distribute the data to the multiple lines.

  
         +-------------+   line 1   +-----------+
          |             +------------>+            |
 Data  |              |   line 2    |             |
 ----->  |   Agent  +------------>+  DUT   |
          |              |   line 3    |             |
          |              +------------>+           |
          |              |   line N    |            |
          |              +------------>+           |
          +-------------+             +-----------+


Q1 In the case of the above, I was thinking of the following configuration, does this violate the concept of UVM?
Q2 Is it possible in the UVM implementation like this?
Q3 Is there a configuration of UVM a recommendation of when driving on Agent multiple lane like this?


         +---------------------------------------------------------------------------------------------+          +-------+
          | Agent  +---------------------------+                                                   |            |        |
          |            |                +------+  |   +--------------------------+   +----------+  | line 1  |        |
 Data  |            |                 |       |----->|Sequencer(Lower1)|-->|Driver 1 |--+----------+        |
 ----->  |            |                 |       |  |    +--------------------------+   +----------+  |            | DUT |
          |            |   Main       |Dis  |  |   +---------------------------+   +----------+  |  line 2  |        |
          |            |Sequencer | tri   |----->|Sequencer(Lower2)|-->|Driver 2 |--+----------+        |
          |            | (Upper)     |bute |  |   +---------------------------+   +----------+  |            |        |
          |            |                |       |   |   +---------------------------+   +----------+  |  line N  |       |
          |            |                |       |----->|Sequencer(LowerN)|-->|Driver N |--+----------+       |
          |            |               +------+  |   +---------------------------+   +-----------+  |            |       |
          |           +--------------------------+                                                      |           |        |
         +----------------------------------------------------------------------------------------------+          +-------+
            - Sequenser(Upper and Lower) to describe the behavior of the model.

            - Driver drives the line.

Link to comment
Share on other sites

hi,

 

this is a typical configuration/setup when one virtual sequence drives multiple lower level entities in parallel. there might be slight variations depending upon the exact properties of your environment. 

 

One thing you should be looking at is the translation/ending model of the upper/N*lower conversion. does one upper item translate into N same sized lower items? do the lower items complete at the same time? if its not guaranteed that they end at the same time then is there q requirement that driverX operates in back-to-back mode (no gaps between lower items on a line)?

 

/uwe

Link to comment
Share on other sites

Hi,

 

I have a somewhat similar problem though it's more about the use of virtual sequencers to control both non-virtual and virtual sequencers. I created a post that you could follow with this link:

 

http://forums.accellera.org/topic/1356-how-to-use-virtual-sequencers-to-control-both-non-virtual-sub-sequencers-and-virtual-sub-sequencers/?hl=%2Bvirtual+%2Bsequencer

 

I look forward to your inputs guys.

 

Thanks,

Martin

Link to comment
Share on other sites

Hi uwes.

 

Thank you for reply.

 

I understand that it is within the scope of the concept of UVM.

 

Answer to the question is as follows.

 

Q1. does one upper item translate into N same sized lower items?
A1. Yes.

 

Q2. do the lower items complete at the same time?
A2. Yes.

 

Q3.if its not guaranteed that they end at the same time then is there q requirement that driverX operates in back-to-back mode (no gaps between lower items on a line)?
Q3. No there is not.

 

Thanks,

sdjun2

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.

Guest
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...