文章目录
1.3 Persistent trigger: triggered built-in method
1.2.1.2 uvm_object_string_pool
1.2.2.2.1 wait_trigger/wait_ptrigger
systemverilog 中介绍了semapahore,event和mailbox,以进行线程间的通信,而它们的实例需要同处一个对象中。而在uvm中,涉及多个组件,组件间的同步线程不再只局限于在同一个对象中。如果组件A定义了一个semapahore,event或mailbox,组件B需要与其通信,则组件B中需要通过hierarchy name的方式来引用组件A中的semapahore,event或mailbox。这种方式与tb间的耦合极为紧密,为将来环境变动,环境复用带来很大的麻烦。
为此,uvm中定义了uvm_event, uvm_barrier,通过全局资源池(唯一的),环境中的任何组件都可以从资源池获取共享的对象句柄,避免组件之间的互相依赖。
uvm定义了如下元件,来实现组件间的同步: