目的:工作记录一下对CCI500 local验证case的波形理解,梳理一下ACE接口的逻辑流程。
CCI简单描述功能:基于目录的做缓存一致性功能的模块,支持4个ACE、6个ACE_LITE(ACE和ACE_LITE加起来不超过7个)、4个memory port、2个system port。内部的Transaction tracker(TT)用来解决coherency和ordering的工作,TT使用snoop filter来决定snoop request应该往哪里发送。Snoop Filter 用来记录来自Master的transaction,判断是否hit或Miss,如果hit表明其他的core中有相应的data,需要将这个request发往这个core,如果miss,则直接往主存发request。AW,AR通道经过tt模块,W、R、B经过crossbar结构的互联结构。
一、write_back_test
当受snoop的master传输了dirty data给CCI的时候,CCI执行WriteBack 操作。
流程:
- 使用来自ACE主控的ReadShared事务预加载窥探过滤器。
- 配置ACE主控,使其始终以干净数据响应。
- 发送不同可共享类型的读写操作,并期望没有CCI生成的写回。
- 配置ACE主控,使其始终以脏数据响应。
- 再次为不同的可共享类型发送读写操作。检查CCI生成的写是否被发送,以响应ReadOnce(一次读取)、ReadClean(干净读取)、CleanInvalid(无效干净)、CleanShared(干净共享)和WriteUnique(唯一写入)触发的事务。