扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

从6个方向思考memory验证的完备性

01/30 15:28
144
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

验证空间是无限大的,用有限的计划时间去完成全部空间验证是不现实的,至少目前是的。那么,就需要在计划的时间内,尽可能更有效率地找出更多芯片设计问题,而且优先把严重问题排除掉。

在memory验证中,可以从6个方面去思考、琢磨是否有芯片设计问题。

验证模块的输入和输出接口:这个是芯片验证最基本的要求。对于输入,要保证激励不要过约束,而且设计激励前要多去理解芯片架构和微架构,来产生更有意义的激励。对于输出,每一根信号都要检查是否符合项目需求。

命令和数据传输的完整性:这一块花的精力会多些,特别是检查器(reference model + scoreboard)。确保所有master口和slave口之间的命令和数据传输是完整的。

Order:也就是保序,常见的比如AXI同ID保序,或者Device nGnRnE的强保序,或者load acquire/store release保序,或者memory barrier保序等。保序通常跟命令的语义有关系,必须准确的理解好命令语义,才能做好保序检查。

Hazard:常见的有RAW、WAR、WAW、和RAR。有些RAW可以forward数据,但有些RAW就不能forward的数据。这个有些是跟引起Hazard的命令语义有关系,有些是跟微架构自己设计有关系,需要具体问题具体分析。

仲裁:仲裁处理不当会引起饿死、死锁或活锁的产生。仲裁的验证其实还是很依赖于激励的质量。单级仲裁用formal来验证是最有效果的,直接遍历完所有场景。但多级仲裁再叠加上很多逻辑电路时,深度太深了,用formal可能也验证不完,大多数情况下,只能多正向分析,然后有针对性的压力测试。

性能:memory的性能还是很关键的,常见的衡量方式有benchmark、bandwidth、latency,也有可能跑真实场景来分析。

有事没事,多从这六个方面去思考memory验证,一定会有新的发现。

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录