Coverage differently for driver generator and monitor

Is there anyone who knows how to take coverage differently for generated transaction, drived transaction and monitored transaction in case of APB???
And also how to cover particular scenario like “2 write 1 read 3 write 2 read” ???

In reply to Ravina:

I don’t know what you mean by “differently”. Perhaps you are looking for the covergroup per_instance option.

For your 2nd question, look at coverpoint transition bins.

In reply to Ravina:

Is there anyone who knows how to take coverage differently for generated transaction, drived transaction and monitored transaction in case of APB???

Im not sure about this question.

And also how to cover particular scenario like “2 write 1 read 3 write 2 read” ???

If I understand your question correctly, you can refer the following suggestion:
You capture a APB trans (generated by a sequence) from monitor and push it to a class component where you implement coverage group to check this scenario. Example:


class coverage_check extends uvm_component;
  covergroup cg_apb_sequence with sample(apb_trans trans);
  cp_apb_cmd: coverpoint trans.cmd {
    bins b_cmd = (APB_WR[*2] => APB_RD => APB_WR[*3] => APB_RD[*2]);
  }
  endgroup

  function new(name, uvm_component parent);
    super.new(name,parent);
    cg_apb_sequence = new();
  endfunction : new

  // Capture apb transaction from monitor
  function void write_apb(apb_trans trans);
    cg_apb_sequence.sample(trans);
  endfunction : write_apb
endclass : coverage_check

In reply to dave_59:

yes differently means develope only one covergroup and taking instance of that in generator driver and monitor and taking different coverage for all three .
So how can we do that ?

In reply to cuonghl:

but how can we make it generic ???

In reply to Ravina:

In reply to cuonghl:
but how can we make it generic ???

What do you mean generic? You should have a plan to cover your tests. Define all scenarios that you think they are missing in your sequences, causing design bugs, etc.

In reply to cuonghl:
generic means at run time user add sequence like “2 write 3read 1 write” anything. So i want that the sequence entered by user is automatically created at sequence to provide it to driver and also the coverage for that sequence is automatically created. So how can we do that???