Jump to content

Design of UVM Scoreboard for Single Master Multi Slave ! Best Re-usable Way ??

Recommended Posts

Hi All,

I have a requirement to build an UVM Scoreboard, where the environment contains a single master and multi-slave data tx/rx protocol.

Simple Working Operation:

1. Master is the one who initiates the Tx packet.

2. Based on the packet received the required slave sends the response Rx packet and so does the process goes on.


1. I need to build a scoreboard where, the scoreboard will be getting information (i.e. Expected packet & Obtained packet from the master side) and so does the same at the slave side.

2. I have planned up to do a three level checks, which Includes:

a. Tx packet integrity (i.e. whether right packet is generated or not) sent at the Master side.

b. Tx packet integrity (i.e. whether the slave de-packetize the received packet properly and stored the information in fifo properly or not) received at the slave side.

c. End to end packet which is been transmitted from the master to the slave.

Idea's poped for verifying:

1. I had planned up to create an array of analysis fifo's connected to the scoreboard based on the number of components (i.e. 1 Master and N slaves).

2. Would be having three different functions/tasks or logic's which performs the above mentioned checks in Point 2 and do the same.


1. If I have multiple analysis ports, then based on the no of ports used, I should used different named write functions which might sometimes mess up stuffs.

Poped-up Idea:

1. Can I used different subscribes inside the scoreboard based on the no of components required i.e. 1 subscriber for one master and N subscriber for N slaves etc inside the UVM scoreboard.


I would request if anyone gives me a much better idea/procedure for designing this scoreboard which verifies the data coming from master and multi-slave.

Thanks in advance.

Fresh Breath of UVM when started again !!

Desperado: Passive -> Active State

Link to comment
Share on other sites

Put the array of analysis FIFOs, as well as an array of analysis exports, inside your scoreboard. In your env, connect the agents to the analysis exports. Within the scoreboard, connect the analysis exports to the analysis FIFOs. In the run phase in the scoreboard, fork off a thread for each analysis FIFO. Each thread calls get method from the associated FIFO, then does something when it receives a transaction. The rest of the scoreboard logic, including coordinating all the threads, is entirely up to you. No need to implement any write method in your scoreboard for each and every master/slave.

Link to comment
Share on other sites

  • 2 years later...

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.

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