白皮书

Without objection

Touring the uvm_objection implementation—uses and improvements

close up of rainbow colored wafer

The SystemVerilog UVM implements a class named uvm_objection. An objection is used to guard code that “isn't done yet.” For example, an objection can prevent a process from finishing until some other process agrees. uvm_objections are sometimes overused and are always misunderstood. This paper explains the implementations, shares uses, and provides some alternative solutions that are easier to understand, simpler to use, and work transparently.

Making objections straightforward

Synchronization with objections is conceptually simple—raise an objection to “passing the barrier” and drop an objection to “passing the barrier.” But the UVM phasing and objection code quickly become intertwined. There’s complexity there that can be problematic to debug and understand. Simple synchronization can be implemented with something much simpler.

The SystemVerilog uvm_objection is a powerful tool. It is used widely to coordinate processes—in most UVM testbenches. But use it wisely, as with the right set of calls it can hang itself without any testbench or DUT.

The solutions presented in this paper are easier to understand, simpler to use, and work transparently. Source code shared in this paper is available by request from the author.

分享

相关资源

AI for Everyone
Webinar

AI for Everyone

How AI enabled IoT solutions help customers fulfill their digital transformation

面向能源及公共事业行业的高级工程仿真
Webinar

面向能源及公共事业行业的高级工程仿真

面向能源及公共事业行业的高级工程仿真,只为优化关键资产性能。

软件助力在能源行业获得可靠结果
Video

软件助力在能源行业获得可靠结果

结果是否可靠取决于工作团队使用的技术和平台。观看此短视频,了解西门子为化工过程企业提供的优质软件解决方案。