1. 观察者模式
Observer Pattern:对象之间定义一个一对多的依赖关系,当一个对象改变的时候,所有依赖对象都会自动收到通知。
观察目标(Subject)和观察者(Observer)是一对多的关系。有时候观察者模式也叫做发布-订阅模式(Publisher-Subscriber)。观察者模式将观察者和被观察者代码解耦。
2. uvm_subscriber
UVM中内建了uvm_subscriber类,可以被当作观察者或者订阅者使用。
verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/
订阅者订阅monitor中收集到的transaction。
覆盖率模块,参考模型,scoreboard都是订阅者。
每当monitor收集到新的transaction,自动调用write函数,将transaction广播出去。
uvm_analysis_port是一个广播的port,可以对应多个接收者。
至于write函数如何实现,monitor并不关心,每个订阅者的write实现不同。
在覆盖率类中write具体实现就是调用sample函数,收集覆盖率。
UVM通过connect函数将TLM端口连接,在订阅者和发布者之间建立了联系。
————————————————
原文链接:https://blog.csdn.net/Holden_Liu/article/details/112008271