I am having a problem switching from an O3 CPU to a TimingSimpleCPU. There are cases I am encountering where there are instructions remaining in certain structures in the pipeline after drain. The assertion failure I'm encountering is Assertion `instList[0].empty()' failed. During the mem_dep_unit switchout function. It seems the cpu is in IDLE state when it enters drain, and thus returns immediately. The instruction that is remaining in the mem_dep_unit is an uncacheable load and so it gets sent directly to commit before it's handled. My question is how should drain be handling this? Should the uncacheable load be removed from the mem_dep_unit when it's sent to commit? Also, if I change which cycle I do the switchout I can avoid this case but run in to another case of Assertion `!loadQueue[i]' failed. I always seem to get one of this assertion failures no matter when I switch. Does anybody have any ideas on why this may be happening?

Also, can somebody explain the drain functionality in a little more depth.

-Tony
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

Reply via email to