Making two `ovm_do_with work parellely ? how?

Hiii Alll,

I have a condition like, I am running a sequence which contains many "ovm_do_with", as per the ovm those work sequentially, but can we make work two ovm_do_with parallely i.e. the situation is like when the first ovm_do_with is working within which it holds some values, so based on those values the next ovm_do_with has to work…

Eg: Process A is one ovm_do_with within which I am there gona be 4 transactions, and the process B is another ovm_do_with which has to intentionally work when the 3rd transaction of the Process A is over, its like Process A[ovm_do_with] is doing a write operation and before it completed its transaction I want to send one more command which is stop that is inside Process B [ovm_do_with],

How can i code this situation, Kindly do help me out!! Quite critical the problem is, kinldy help out ovm experts.

Thanks,
Desperado – In need of help

Hi desparado,

Even though you are trying to transmit parallelly transactions, driven can handle one transaction at a time.

Your requirment can be easily met by triggering transaction in following order.

First trigger, 3 transactions of process A, one transaction of process B, 4’th transaction of Process A.

I am not getting why you would like to trigger two sequences parallelly, if it can be easily met by triggering sequential transactions.

if you want do do it parallel:

fork
ovm_do(A) ovm_do(B)
join

if you want to make sequantial sequence dependent:

ovm_do(A) if ( A.return_value == 0 ) ovm_do(B)
else
`ovm_do(C)

==== Things above are just for reference.
in your case, you could:

fork
ovm_do(A) #(3rd tr doen of A)ovm_do(B)
join

or set_item_done() when 3rd tr done of A.

Hii,

Thanks to both!!!

My requirment was, this is one sequence within which I have two ovm_do_with. In that first ovm_do_with, the number of transactions processed has 4 write operation to be done.

As soon the 2nd write transaction is over, i want to initiate the 2nd ovm_do_with, So what I did was took an event, and using p_sequencer I triggered the starting of the 2nd ovm_do_with,…

As per the process what i understood was, as soon the 2nd ovm_do_with is triggered, its kept in the sequencer queue, so only after the 1st ovm_do_with is processed the 2nd `ovm_do_with is starting the process…

Is it not possible to make both the transaction work in parallel i.e. isint the sequencer not possible to process both the `ovm_do_with in parallel…

Kindly let me know…

Thanks in adv,
Desperado…

Yes if they are items. all 4 items in seq A are already in the item queue before seq.B.

I do know if there is any way that could insert itme between queue, but suggest you could implement as do seqences instead of do itmes. than you could insert sequence B between 3rd and 4th sub-squences of squence A.

Hii yhchou,

Thanks for your timely comments & notes: Kindly let me know if you get to know how to put the sequence into the sequencer queue inbetween…

Thanks,
Desperado

dear desperado,

you are welcome, I am new to OVM too.

User manual told us the p_sequencer.grab(this); could make the current sequence items have higher priority than those items in the queue.

using do_seq could works because it would not insert sequence items before previous sequence complete.

@OVM Creators:

Hello Creators, Can you comment your suggestions on the same for this thread, Kindly do help out as its quite critical…

Thanks,
Desperado → Learning new things of OVM day by day :D