关于SRAM验证的一些思考

最近遇到非标准的sram:两个sram拼在一起,每个SRAM 数据位宽是128bit,

关于读写

对于写端:每次可能写入128bit或256bit;

对于读端:只要sram 剩余数据大于等于256bit就会读256bit,否则读128bit,直至sram empty.

关于空满

pre_full , 可通过寄存器(back_pressure_thrd/back_pressure_return_thrd)配置sram 剩余多少空间pre_full举起来以及举起后剩余多少空间pre_full拉低;

当pre_full拉起来后HW还可以write 3 行sram address .

empty,就是sram 空;

一些验证思考

check part

  1. 计算sram使用空间的单位是什么,是128bit还是256bit(考虑写入奇数个128bit的场景)
  2. sram used depth 是否计算正确
  3. pre_full assert/de-assert的行为是否正确(是小于thrd还是小于等于thrd pre_full就会assert;产生逻辑是组合和是register out)
  4. pre_full拉起后是否最多写三笔
  5. sram 是否会overflow(当thrd设定值比较小时)
  6. 结合3、4、5,若是register out,需考虑back_pre_thrd不能小于5;若设为4,因为HW是小于thrd pre_full会为1,即left space 为3时,且 pre_full register out,故当pre_full举起时left space 可能为2.
  7. simulation结束时 FSM是IDLE,counter、sram used depth 均为0,sram 为empty ,读写指针要相等

cover part

  1. stimulus 是否足够random(应对一些没有想到的场景)
  2. 两个sram address 是否都有访问
  3. 当sram left space 恰好等于back_press_thrd,且没有数据再写入sram
  4. 当sram left space 恰好等于back_press_return_thrd,且有数据再写入sram
  5. sram left space 等于0(full)
  6. sram 写入奇数个128bit data
  7. back_pressure_thrd 和 return_thrd相等
  8. 同T读2笔data(unit : sram used depth )
  9. 同T写2笔data(unit : sram used depth )
  10. cross item8和item9
经验分享 程序员 微信小程序 职场和发展