最近在验证AXI4的读写测试,遇到了wrap 操作下地址超出边界的情况,学习了一点。以下是一些wrap操作的约束
1.wrap 操作的起始地址需要和每次传输的大小对齐。例如size=64bit,addr[2:0] = 0,size=32bit,addr[1:0]=0,size=16bit,size[0]=0。
2.len必须是2,4,6,8,16。
3.地址边界的计算:Wrap_Boundary = INT(Start_Addr / (Size * Length))* Size * Length
例如起始地址3E88,size=8byte,len=4,地址下界是(0x3E88/(8*4))*(8*4)=0X3E80,地址上界是0x3E80+0x20=0x3EA0,所以每一笔的地址就是3E88,3E8C,3E88,3E8c,3E90,3E94,3E98,3E9c, 3E80,3E84