一、Difftest简介
Difftest是差分测试框架,有什么用呢?高性能CPU的设计需要做复杂的测试,传统的测试方法运行较慢,而且出了问题很难定位,Difftest就是为了解决这两个问题,基本的逻辑也不难:

- 处理器运行一条指令
- 模拟器运行相同的指令
- 比较两者的状态
为什么能运行更快呢?最著名的模拟器当属Qemu,此外伯克利也提供了针对riscv的模拟器spike,但两者的实现都比较复杂,中科院采用了南大的开发的轻量级教学模拟器Nemu。因为只需要在指令层面做仿真,因此有很大的优化空间。
为什么能容易定位bug?因为每运行一条指令,都会对比关键寄存器的数值,做到动态实时比对,spike需要最终运行完才能比对。计算机的运行就是不同状态的转移,这个观点非常精妙。
那么,这么好的框架如何用起来呢?
二、NutShell difftest
NutShell,Xiangshan都有difftest相关的介绍,也提供了Difftest使用指南,但真正搭起来还真不容易。
- 第一是因为这些资料比较零散,没有完整的“保姆级教程”。
- 第二是版本、版本、版本,包括chisel3、difftest、Nutshell等版本,不同介绍

本文介绍了Difftest在CPU设计中的高效调试作用,重点讲解了如何在NutShell环境下搭建和使用Difftest,涉及版本管理、配置步骤及常见问题解决。

1832

被折叠的 条评论
为什么被折叠?



