处理器/DSP
改进处理器验证方法:如何完美击中系统漏洞集群?
创建一个高质量的RISC-V处理器的关键是需要一个执行最高标准的验证方法。来自Codasip的验证总监Philippe Luc将为我们详细解释:为使处理器验证达到全新的水平,Codasip的验证解决方案如何改进?
在分析了好几代CPU上的漏洞之后我们得出了一个结论:"漏洞通常是以群集形式出现的"。换句话说,当在设计的某一区域发现一个漏洞时,那么在同一区域存在其它类似漏洞的概率是相当高的。
Directed Testing
处理器的漏洞通常不会单独出现
成功找到一个CPU漏洞的成就感众所周知,然而找到漏洞本身不应该是一个目的,而是提醒处理器验证团队如何在已经被发现漏洞的区域发现更多的漏洞并成功击中它们?
我们经常会遇到这样的场景:一个随机测试在经过数千小时的测试后发现了一个漏洞。此时我们需要关注的是它如何发现这个错误?以及为什么随机测试会发现这个错误?它可能是之前不可预测事件组合的结果,也很可能是由于外部的修改导致:例如测试参数的改变,RTL或者模拟器的修改等。
随着这个新的、罕见的漏洞被发现,需要一个性能更强大的测试平台,可以测试设计中的新领域。同时我们也应该了解到,在测试平台得到改进之前,并没有特别强调这个新的设计区域。假设漏洞是以群集形式出现的,这意味着这个新的设计区域需要进一步探索以发现更多的漏洞。而此时如何改进验证方法是重中之重!
Random testing
使用智能随机测试改进验证
为了改进测试平台并成功击中这些系统漏洞,通过断言,增加检查器和测试是主要方法,其中测试尤为重要。
为了扩大范围,使我们有信心击中这些漏洞,Codasip使用智能随机测试法。我们发现当使用定向测试方法重现这个漏洞时,只有完全相同的漏洞可以被击中。然而我们之前提到,漏洞通常是成群结队的,在同一区域有其它漏洞的概率非常高,而且条件相似。此时扩大测试范围似乎很有用。在这种漏洞群集的情况下,随机测试似乎不再有效,而此时我们需要针对什么才能使之行之有效?
假设这个漏洞是在一个特定的RISC-V指令上发现的,那么通过增加这个指令的测试概率可以改善测试结果吗?乍一看可能是这样,因为从统计学上看,失败越多暴露的错误就越多。然而大多数漏洞是通过一系列罕见事件的组合被发现的:比如一个停滞的流水线,一个完整的FIFO(数据结构中的先进先出队列),或者其他一些微架构的实现细节都可以导致漏洞出现。标准的测试平台可以通过简单地改变一个测试参数来轻松地调整一个指令的概率。但是充满FIFO并不能直接从测试参数中获得,它是其它独立参数(如延迟)的组合,可以使FIFO更频繁地充满。
Smart-random Testing
在Codasip的验证方法中使用智能随机测试,使我们既能有针对性,又能广泛地在这个新领域有效地找到更多的漏洞。这种测试方法包括调整测试,以更频繁地激活触发该漏洞的其他事件。换句话说,这意味着我们需要调整测试的几个参数,而不仅仅是其中一个参数。这种看似耗时的方法在提高测试质量方面确实效果显著。
在产品开发过程中,通过跟踪漏洞集群来改进测试平台,并成功解决系统漏洞是关键。而这正是Codasip验证团队为保证向客户提供一流品质的RISC-V处理器而做出的努力。
作者:
Philippe Luc
Codasip验证事业部总监
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !