在UVM验证平台中,在checker中经常会接收来自rm/monitor的xaction,有时候此xaction不仅一处会用到,而且可能会对xaction做对应的修改.那么在使用时,需要对收到的xaction做clone动作,避免浪费不必要的定位时间,下面会做对比:
根据对场景的抽象,fork join三个线程,一个用来产生随机报文,将其存储到队列当中,另外两个线程在不同的时间点去获取报文,圈住的地方是不做clone,另外一个是做clone.
1.不做clone
队列1在收到报文之后延时5ns处理报文,原来的地址是8’hd9,处理之后变为8’hda;但是队列2在收到报文之后延时15ns处理报文,发现报文的地址是8’hda即为处理之后的报文;是因为两个队列中的对象指向同一个地址空间,导致前一个修改影响后一个.
2.做clone
队列1在收到报文之后延时5ns处理报文,原来的地址是8’hd9,处理之后变为8’hda;但是队列2在收到报文之后延时15ns处理报文,报文的地址是8’hd9,不受队列1处理的影响;这是因为clone的时候会新创建一个地址空间.
UVM xaction使用的一点看法
最新推荐文章于 2024-04-23 11:15:01 发布