Running sequence from a scoreboard

Hi

I wish to run a sequence from a scoreboard, this sequence is basically reading of some registers upon receiving an interrupt. I read in some earlier post that this is possible only if i connect the Component (Scoreboard here) to the Sequencer. How do i do this connection?

Thanks
Achal

Although not recommended, you can start a sequence from any task if you have a handle to the sequencer. No connection is needed. You can use the config_db to store the handle, or use uvm_top.find(“path to sequencer”). The problem with this is that it makes the scoreboard an active component of your testbench.

A better solution would be to create an ISR sequence from a fork in the body of a main sequence. This is described in the UVM cookbook.

In reply to dave_59:

Hi Achal,

It is possible to read(for backdoor access it is through “peek”) any register through Backdoor access in your scoreboard.

For this you have to extend your existing register model and then in build function of your extended register model you can add backdoor path of your register using “add_hdl_path_slice()”. You also have to add top level HDL path using “add_hdl_path.”

Once you extend your register model, you can use “factory.set_type_override_by_name” to override it with your existing register model. Remember you do this before you create your register model.

Now pass the handle of your register model in your scoreboard using uvm_config_db::set and get that handle in scoreboard using uvm_config_db::get.

Now in your scoreboard you can use “reg_model.register.peek(status,data)” to read the the register. Remember that this will not create any “read transaction” on the bus because you are accessing the register through backdoor.

Let me know if you still have any confusion.

Regards,
Ravish