原创
基于OVM1.1的AMBA3.0 AXI SLAVE VIP
基于OVM 1.1的AMBA3.0 AXI SLAVE VIP。经过大量的读写测试通过。 AXI_SLAVE_VIP包括三个部分,axi_slave_driver.sv , axi_slave_sequencer.sv, axi_slave_agent.sv . agent中包括了一个driver和一个sequencer,driver监测AXI_IF的信号,当在读写命令总线上监测到命令后,通过一个 ovm_analysis_port把数据包发送给sequencer,出发sequencer中的addr_ph_collect 事件。用户sequence可以监测这个事件,根据触发类型给出相应激励。 driver在如下情况下上报数据: 1/检测到AW总线上有新的写命令,并且此命令的写数据还没有接收到。送给sequencer一个axi_response包,valid标签为3'b001. 2/监测到W总线上有新的数据,并且此数据对应的写命令还没有接收到。送给sequencer一个axi_response包,valid标签为3'b010. 注意:对同一个写命令来说,1和2不能同时发生。当用户sequence监测到任意一种情况后,必须在同一仿真时刻把对这个写操作的响应控制信息发回给driver,driver根据这些信息来对master响应。 3/driver根据用户给下来的响应信息把些数据接收完毕以后,会把整个写操作的数据包送给sequencer,这个数据包包括了些操作的控制和数据信息。valid标签为3'b111,用户根据这个数据包再给出写响应的数据包。 4/当监测到AR总线上有新的读命令后,送给sequencer一个包含读控制信息的包,sequencer根据这些信息给出返回的读数据和读响应,以及响应的反压信息。 需要注意的是,读操作的interleave和out of order是上层sequence来控制的。每次driver上报数据包时,会同时把driver里面读命令/写RESPONSE BUFFER的队列有效个数返回给sequence,用户可以选择把读/写响应间插到这个队列的任意位置,这样就可以实现读数据/写响应的OUT OF ORDER。interleave可以通过axi_response的 interleave_buffer/new_interleave/interleave_size来控制。 如果您有兴趣使用此VIP,遇到问题可以联系我。如果有人使用的话,后续再把文档仔细写一下。 下一个VIP是 AXI_MASTER_VIP,敬请关注。。。 https://static.assets-stash.eet-china.com/album/old-resources/2008/9/17/5730ab06-32b6-4958-b3dc-1608e28255b2.rar
用户1560557 2011-9-7 19:31
用户373086 2011-8-19 20:54
用户286513 2011-4-23 22:07
用户178292 2008-11-2 23:27
ash_riple_768180695 2008-9-18 08:57