极术小姐姐 · 2019年12月17日

检查4KB边界

当我尝试通过
https://silver.arm.com/browse...

了解SVA 4KB边界时,下面 是一个属性
//开始
属性AXI_ERRM_AWADDR_BOUNDARY;

@(posedge`AXI_SVA_CLK)
!($ isunknown({AWVALID,AWBURST,AWADDR}))& AWVALID&(AWBURST ==`AXI_ABURST_INCR)

    |->(AwAddrIncr [ADDR_MAX:12] == AWADDR [ADDR_MAX:12]);

endproperty


始终以@(AWSIZE或AWLEN或AWADDR) 开始:p_WAddrIncrComb

AwAddrIncr = AWADDR +(AWLEN << AWSIZE); //突发

结束的最终地址

// end

如果有事务:据我所知,AWADDR:'d4095 AWLEN:'d0 AWSIZE:'d1 AWBUSRT:incr 据我所知,这应违反4K限制。是否在此部分上面检查属性?

1 个回答 得票排序 · 时间排序
棋子 · 2019年12月17日

您的AXI交易不会违反4K边界。

您使用的起始地址(4095)与传输宽度(16位)不一致,因此,这种1拍事务实际上将传输的只是一个字节。

尽管AXI协议描述了它支持“未对齐的传输”,但是实际的实现仍然是传输到数据总线的AxSIZE对齐的部分,因此,当AWSIZE指示16位传输时,未对齐的起始地址意味着这16个字节的仅上半部分位数据将被传输。

在AXI规范中有一些示例,因此请看图A3-13,其中显示了INCR事务中的AxSIZE = 32位传输。不对齐的起始地址意味着在第二,第三和第四示例中,第一次传输实际上并未传输32位。

在这些示例中,INCR突发中的其余传输每个都传输32位,因此它们是AxSIZE对齐的,只是第一个未对齐的传输。

固定突发类型事务在事务中的每次传输中都保持不对齐,并且WRAP突发不能使用未对齐的起始地址。

你的回答