Hello,
I was wondering if anyone is familiar with how to add delays into
Opals pipeline. I am trying to add a delay so that certain I/O loads
and stores get delayed by a set amount. I have found the relevant
place in load_inst_t::Execute where Opal checks if a memory operation
is to an IO instruction, but if it is, I am unsure of how to delay
it. I tried adding a simple delay that doesn't set the stage to
COMPLETE_STAGE until a static number of cycles passes, but this
appears to cause opal to crash, as instructions in the queue end up
having no stage associated with them. However, when I tried adding my
own stage into Dynamic.h which was DELAY_IO_STAGE, and setting the
memop instructions stage to this, it doesn't appear to ever go into
the relevant case statement I added in dynamic_inst_t::Schedule, and
later crashes for the same reason. I was wondering if maybe I am
doing something wrong, or misunderstood the organization of this code.
Any help would be greatly appreciated.
thanks,
Phil
|