我已经开发了实现AXI协议的uvm驱动程序,它具有两个队列,用于收集读写事务。一旦驱动程序从定序器接收到事务,事务就会被推送到读取队列或写入队列,并且读取和写入通道会驱动每个AXI通道上的相应事务。驱动程序不会等待写入响应,然后发出AXI指定的下一次读取或写入。现在,我想更改行为,使其等待写入事务完成(写入响应返回),然后发出下一个事务。在我的测试平台中,实现此功能的最佳位置是什么—驱动程序,定序器,序列或sequence_item?
理想情况下,我希望我可以按顺序进行,因为这种方法不需要更改测试平台。然后,问题是序列如何知道写入响应何时到达?事务级别建模(TLM)的想法意味着序列项处于事务级别,无需担心握手细节。
如果修改顺序很困难,则另一个想法是(勉强地)将驱动程序更改为具有一个深度为1的单个队列进行读取和写入。然后,在驱动程序可以接受第二个事务之前,应从队列中删除第一个读写事务。什么时候?当第一个写入的响应到达时,然后从q中删除事务,并且可以从定序器中接受下一个事务。