论文部分内容阅读
功能验证是芯片设计流程中最复杂、最耗时的工作,面临的最主要挑战是如何在有限的时间和计算资源的约束下,暴露尽可能多的设计错误,以提高对芯片功能正确性的自信程度。微处理器作为系统芯片的核心部件,具有设计规模大和设计复杂度高的特点。微处理器功能验证是系统芯片设计流程的瓶颈,目前主要使用基于模拟的验证方法。
在基于模拟的验证方法中,如何高效生成高品质测试程序是当前微处理器功能验证研究的重点。本文立足于国内外微处理器功能验证中测试程序生成方法的研究现状,结合北大众志UniCore-2定点处理器核的功能验证工作,开展测试程序生成方法和回归测试集缩减方法的研究,以达到提高功能验证效率和质量的目标。本文的主要研究内容及贡献包括如下几个方面:
1)提出一种覆盖矩阵反馈的测试程序生成方法
依据对覆盖矩阵的精确分析,使用基于覆盖矩阵的贪心保存策略选择参与进化的测试程序,提高遗传算法的收敛速度,尽早生成可以取得较高覆盖率的测试程序,以尽快完成覆盖目标。将该方法应用到北大众志UniCore-2定点处理器核控制相关机制的功能验证中,生成的测试程序的功能覆盖率比现有的演化测试程序方法提高31.03%。
2)提出一种面向覆盖率和模拟执行代价的测试程序生成方法
使用基于多目标优化的遗传算法,在保证覆盖率目标的前提下,生成模拟执行代价尽可能小的测试程序,以缩短测试程序的模拟执行时间,提高模拟验证效率。将该方法应用到北大众志UniCore-2定点处理器核的功能验证中,在保证代码覆盖率的前提下,生成的测试程序的模拟执行时间比现有的演化测试程序方法减少87.08%。
3)提出一种使用局部建模的处理器定向测试程序生成方法
在达到较高覆盖率时,针对未覆盖到的功能点使用局部模型抽取和模型精简策略为处理器建立局部抽象模型,并使用模型检验引擎产生测试指导,定向生成验证未覆盖功能点的测试程序。将该方法应用到北大众志 UniCore-2定点处理器核数据相关机制的功能验证中,针对使用伪随机测试程序生成方法很难覆盖到的功能点,抽取出包含161个状态变量的处理器模型,并使用模型精简策略进一步减少52.8%的状态变量。最后,使用模型检验引擎定向生成测试程序完成对这些未覆盖功能点的验证。
4)提出一种回归测试集缩减方法
结合贪心算法收敛速度快和遗传算法寻优效果好的特点,对回归测试集进行优化,在保证覆盖率相同的基础上,获得模拟执行时间更短的回归测试集,以提高回归测试效率。使用该方法对UniCore-2定点处理器核已有的回归测试集进行优化,节省69.96%的回归测试时间。