Comments (4)
这是 difftest 跑出问题的提示. 看起来在协同仿真过程中 NEMU 访问了奇怪的地址 0x0000000000000000
, NEMU 不接受对这段地址的访问.
一些可行的策略:
- 可以检查下指令提交时 skip 有没有正确设置, 以及被 skip 的指令结果是否正确
- 确认下这个报错是在哪个 cycle 触发的? 是在仿真一开始就触发了? 还是仿真过了一段时间才触发?
- 如果不是在仿真一开始就触发, 可以看下错误现场附近的情况, 看看你的处理器有没有发出错误的跳转/访存请求
from difftest.
BTW, 这是一个 difftest 相关的问题, 我将它移动到 difftest 的 issue 中了
from difftest.
这是 difftest 跑出问题的提示. 看起来在协同仿真过程中 NEMU 访问了奇怪的地址
0x0000000000000000
, NEMU 不接受对这段地址的访问.一些可行的策略:
1. **可以检查下指令提交时 skip 有没有正确设置, 以及被 skip 的指令结果是否正确** 2. 确认下这个报错是在哪个 cycle 触发的? 是在仿真一开始就触发了? 还是仿真过了一段时间才触发? 3. 如果不是在仿真一开始就触发, 可以看下错误现场附近的情况, 看看你的处理器有没有发出错误的跳转/访存请求
- skip这个属性的判断条件应该是怎样的呀?我没有看明白香山和NutShell的具体代码描述。我之前一直是当成mm/io访存指令的判断条件来考虑的。初始的时候microbench都是寄存器计算所以skip设置的是0。同时,我测试了将skip设置为常量1,然后就像difftest源码中描述的,跳转指令无法正确执行了。
- 这个报错是在仿真一开始就触发了,我这边display了一些指令,显示在我提交第一组指令时就出错了。并且没有显示任何的代码比对内容。
index1_PC: 0000000080000000
index1_IR: 00000413
index2_PC: 0000000080000004
index2_IR: 0000f117
The first instruction of core 0 has commited. Difftest enabled.
address (0x0000000000000000) is out of bound {???} [0x0000000000000000, 0x0000000000000000] at pc = 0x0000000000000000
(其中index1和2是一组发射的两条指令)
from difftest.
怀疑是 difftest 相关的连线有问题, 导致 skip 后出现异常. skip 可以处理包括 MMIO 指令在内的情况. 它所做的事情是:
- 将 DUT 中的指令写回结果强制更新到 REF 中
- 跳过当前指令的比较
参见这里的代码:
difftest/src/test/csrc/difftest/difftest.cpp
Lines 260 to 272 in c02950e
请确认所有 difftest 接口的连线正确. 尤其是 DiffBasicInstrCommitIO
和 DiffIntWritebackIO
.
from difftest.
Related Issues (20)
- Snapshot timestamp t not updated in while loop for simulation HOT 2
- 请问XiangShan上怎么enable smp-difftest? HOT 2
- Difftest is not compatible with Chisel Definition/Instance
- 请问difftest中的DiffTestState 的定义在哪 我没有找到它 HOT 3
- When using Spike as REF, it fails to correctly synchronize the DUT's state during exceptions HOT 2
- AbstractRefProxy 声明了与reference model 不相同的函数原型 HOT 3
- 覆盖率导向模糊测试相关流程使用 HOT 7
- 请问怎么把difftest的打印信息输出到log?有相关功能吗,应该怎么修改代码?
- Difftest环境移植问题 HOT 2
- move指令消除问题 HOT 4
- How can the Rocket example provided by Difftest support extended instructions? HOT 8
- Rocket-chip difftest框架使用 HOT 1
- shmat return value check error HOT 1
- Difftest中的波形功能应该如何开启? HOT 2
- 请问如何能重新make的时候增量编译,即不再重新执行.scala->.v的步骤 HOT 1
- do_store_check的逻辑有bug,if(proxy->store_commit)分支表示的store比对成功,mismatch的打印应该放在else分支中 HOT 1
- Difftest::Difftest内部没有完成对包括difftest_core_state_t dut在内的对象的初始化 HOT 1
- RefProxy void (*memcpy)的调用传参错误 HOT 1
- Difftest::step()中实际上没有完成比较,proxy->regcpy(ref_regs_ptr, REF_TO_DUT)将NEMU的reg val全部copy到DUT,二者永远相等 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from difftest.