论文部分内容阅读
随着微处理器设计复杂度的增大、设计规模指数级的增长以及永无止境的快速市场化的压力,功能验证面临着越来越大的挑战。在当前工业实践中,模拟仿真验证方法仍然占据着主要地位。随机测试程序自动生成技术在很大程度上提高了模拟仿真的效率,然而由于仿真速度很慢,如何自动生成高质量的测试程序已经成为模拟验证的一个新的瓶颈。
本文结合龙芯1号处理器核的指令级验证工作,将随机测试程序自动生成技术应用于具体的验证过程,实现了一种提高验证效率的方法,加速验证收敛,节约验证成本。本文的主要工作和贡献如下:
完成了龙芯1号处理器核的验证工作。具体包括将已有的CRPG平台移植到该处理器核上,修改指令集,设计验证store指令正确性的方法,基于改进后的双发射结构修改了Testbench,以及在该随机平台中添加了ejtag功能的验证方法。同时,为了衡量验证的进程和结果,还基于龙芯1号处理器核的设计,建立了功能覆盖率平台。通过本文的工作,发现几个隐藏很深的设计错误,有效保证了首次流片的正确性。与使用手写测试程序和使用实际应用程序改造后的测试向量相比,本方法取得了更好的效果。
基于改进的遗传算法,采用覆盖率驱动的方法加速指令级验证收敛,即在上述龙芯1号处理器核指令级随机验证平台的基础上,将遗传算法应用于覆盖率驱动问题中,进一步提高指令级随机验证平台的效率。具体包括:采用“配置文件”作为个体,考虑搜索能力和速度,选用了相应的编码方式。初始种群采用全随机方法生成。根据仿真的目标设计相应的适应度函数,作为遗传算法进化搜索的依据。同时提出了一种新型的选择算法,整个选择过程由两部分构成:首先选择出一半的父个体,然后根据具体父个体选择出相应的交叉个体。交叉和变异操作与具体的编码有关,所以分别针对十进制编码和二进制编码形式设计了相关的算法。在对二进制编码进行交叉和变异操作后,由于编码的约束,均需要对个体的编码进行“修补”操作。最后,根据问题的目标,设计了相应的“优化准则”,用于判断算法是否终止。龙芯1号的验证实践表明,与原有方法相比,本文提出的基于遗传算法的覆盖率驱动随机验证方法有效提高了验证效率。