Difftest踩坑笔记(一)

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

一、Difftest简介

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

  • 处理器运行一条指令
  • 模拟器运行相同的指令
  • 比较两者的状态

为什么能运行更快呢?最著名的模拟器当属Qemu,此外伯克利也提供了针对riscv的模拟器spike,但两者的实现都比较复杂,中科院采用了南大的开发的轻量级教学模拟器Nemu。因为只需要在指令层面做仿真,因此有很大的优化空间。

为什么能容易定位bug?因为每运行一条指令,都会对比关键寄存器的数值,做到动态实时比对,spike需要最终运行完才能比对。计算机的运行就是不同状态的转移,这个观点非常精妙。

那么,这么好的框架如何用起来呢?

二、NutShell difftest

NutShellXiangshan都有difftest相关的介绍,也提供了Difftest使用指南,但真正搭起来还真不容易。

  • 第一是因为这些资料比较零散,没有完整的“保姆级教程”。
  • 第二是版本、版本、版本,包括chisel3、difftest、Nutshell等版本,不同介绍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值