Jump to content

Versatile UVM Scoreboard

About This File

A generic UVM Scoreboard architecture supporting multiple models, packaging abstract queues and compare methods.

What's New in Version   See changelog


  • - SCB now clones the uvm_sequence_item before adding it to the queue. this isolates the SCB from the rest of the TB making it less error prone. This can be disabled by setting cl_syoscb_cfg::disable_clone to 1'b1.
  • - Added support for max_queue_size per queue. For instance this helps if you have a never ending loop and the SCB just floods with unmatched transactions.
  • - Re-worked the UVM phasing so it is more correct.
  • - Added in order compare
  • - Major overhaul/cleanup on the code to make it consistent in implementation style etc.
  • - Loads of improvements to the implementation documentation. All APIs are now documented and the docs are now also available as PDF.

User Feedback

Recommended Comments

It was a tar/gzip combo. Use:


tar xzf <file>


to unpack it on Linux. On Windows 7-Zip can do it but then you need to do it two times. The first time it will turn the .tgz into a .tar file which then has to be unpacked.



Link to comment
Share on other sites

Hi Guys!

Two items I struggled with:

  • Didn't override cl_syoscb_queue and then add_item creates a error message saying that add_item must be overridden. cl_syoscb_queue is a abstract class and you shouldn't be able to create a instance at all. Since abstract keyword and UVM is not compatible, maybe this is possible by adding a `uvm_fatal in the new function?
  • An example with uvm_tlm_generic_payload and analysis port would be nice. I needed to change my analysis ports to uvm_sequence_item to not create a compile error when connecting monitor with the scoreboard (parameterized class type mismatch). But often it is not possible to change the already existing monitor...

Best Regards,



Link to comment
Share on other sites

Your DVCon paper discusses the use of UVM Connect with the scoreboard and reference models, but the code and documentation that is the part of your download makes no mention of UVM Connect.  Is there any example code available that demonstrates the application of UVM Connect in conjunction with the scoreboard?

Link to comment
Share on other sites

Please consider a different body font for the PDF user guide that displays clearly from a full page view (Consolas, Arial, etc.).  Also, shrinking the margins a little will permit more content when viewed at full width.  It would also be nice to have a navigation pane supporting the PDF, not sure if this is possible with the Doxygen generation or not.  I attempted to solve these issues, but am unable to copy the text from the PDF for some reason.  I just get Doxygen looking syntax.

Thanks for the much needed basic scoreboard solution.  Not sure why Synopsys didn't donate VMM's Datastream Scoreboard, at least as an extended class from uvm_scoreboard (?).  No matter, you guys have filled the gap.

Best Regards,


Link to comment
Share on other sites

Some comments/answers....

@Thomas T:

Adding a uvm_fatal in the constructor is of course possible but the compilers should catch it. Some do and some don't. I do not see this a s a big issue. When we toss backwards compatibility then it can be turned into an abstract class now as UVM IEEE should support this in the factory.

More examples are always nice 🙂 The scoreboard is delivered as an end-point you can say. All the infrastructure leading upto the scoreboard is your own responsibility.. Now, you are right that you need a component which basically does a type cast on the AP in e.g. a monitor as otherwise you cannot connect it to the subscriber returned by the get_subscriber method in the scoreboard. It is not possible to return different subscribers with different types so we use the lowest common denominator which is uvm_sequence_item.  We typically call this component a filter which is a subscriber with an AP in it. Then it is daisy chained to between the monitor and subscriber coming from the scoreboard. Also note that UVM has a compare error when comparing two UVM TLM GPs. There is a +define you can set in the scoreboard to work around this bug.


The scoreboard provided can of course work together with UVM Connect and we have done this many times. However, it is not a part of the UVM scoreboard release to show how to do this kind of integration. That is out of the scope. Again, more examples would be nice but crafting a test bench with UVM connect and using the scoreboard is at a different level which we of course can help you to accomplish.

We have done some PDF tweaks in conjunction with another release and will consider carrying that over to the UVM score board also. We actually did a VMM version of this scoreboard before the VMM datastream was invented and used it successfully. Then the VMM datastream was added to VMM and people started using it. Then when we saw that the uvm_scoreboard class was empty then we revived it 😉 This scoreboard is also superior to the vmm datas tream which relies on the fact that you can compute the expected result in zero time etc. This implementation is agnostic to this since it doesn't care when the transactions are arriving due to the architectural separation as explained in the DVCon paper. 

We have a new version for the SCB coming up. It includes a lot of new stuff:

* Backwards compatible
* UVM IEEE compliant
* Tons of new configuration options
* Full scb dump output to HTML for browsing the transactions in a browser
* Easier setup through methods instead of factory overwrites
* Inclusion of the filters mentioned above
* Scoreboard wrapper in case you need to instantiate many scoreboards. Have been tested with 1000+ instances.

You can get this new beta release if you write to my mail: jacob AT syosil DOT com as it is too big for attaching it here.

Thanks, JSA

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.

Add a comment...

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