由于我使用的model经过团队的大量修改、添加,所以直接调用example里面的simulate.run()时,遇到了一些问题。经过一顿折腾,最终能正常save restore。但是有些改动还需check和review。
=================================================
第一步,参照fs.py, 调用Simulate.run()
from common import Simulation
Simulation.run(args, root, system, FutureClass)
在Simulation.py中,run() 对各种checkpoint的使用都做了实现,基本思路都是 m5.instantiate()+m5.simulate() + m5.checkpoint()
第二步,设置checkpoints
我用了scriptcheckpoint这种模式,即在脚本中添加checkpoint:
这种模式又可以分为两类:第一类是将checkpoint加在tick上,如下面的例子,意思是在51000000处设置checkpoint,后面每1000个tick在继续设置,但是max-checkpoints=1限制了只有一处checkpoint
另外一种设置方式,在某行指令处设置checkpoint,注意此时take-checkpoints只有一个参数
restore的时候替换成如下指令即可:
第二步,执行即可
如果正常,可以从log上看到类似如下信息(set/restore):
=========================================================================
由于我们的model经过大量改动,直接套用fs.py会有问题,做了三处改动:
1.如下这个没用到,直接注释掉
2.将simulation.py run()中跟CPU_switch相关的动作都注释掉
3. 将serialize.hh中arrayParamIn中的fatal_if拿掉,因为我们的model里面有一条obj没有
=========================================================================
=========================================================================
以下为debug过程中的截图信息