我在uvm_agent
中实现了一个从属模型。对于“奴隶”,我的意思是它不能单独发起交易。交易总是由另一方(主DUT)发起。所以它是一种被动的代理(虽然它仍然能够传送回复数据包)。
当从机检测到来自DUT的数据包时,它将自动响应/根据其协议响应(与其他数据包一起)。 从属代理有一个监听器来监听DUT的初始化传输。并且由于它能够传输数据包,因此从属代理也具有驱动程序来发送回复数据包。在从属模式下实现UVM代理
+------------+ master initiate transfer +------------------------+
| Master DUT | ------------------------> | UVM Agent - slave mode |
| | | Monitor |
| | | Driver Sequencer |
+------------+ +------------------------+
+------------+ +------------------------+
| Master DUT | | UVM Agent - slave mode |
| | slave auto reply | Monitor |
| | <------------------------- | Driver Sequencer |
+------------+ +------------------------+
我的问题是它是如何发送回复数据包?直接从它的驱动程序? 由于采用uvm方式,驱动程序项始终来自正在执行用户测试级别序列的顺控程序。但是现在在这种情况下,没有序列 - 只有来自监视器的检测到的数据包。
我的第一个想法是,我需要提供从monitor
到sequencer
的反馈,并在那里实现我的协议功能。
或者我应该直接从monitor
传递数据包到driver
,让它处理它并发送回复?如果是这样,我该怎么做? 有没有更好的办法?