Hey crew, I'm running into some confusion about the semantics of the nextCycle() function in clocked objects. In particular, it seems as though this function can return more than one cycle in the future:
Take as an example a buffer that is to accept input for a receiving component. It is possible that the buffer receives an input signal during the middle of one of the receiver's cycles (i.e. not on a receiver's clock edge). In this case, the receiver's nextCycle() function calls clockEdge(Cycles(1)). clockEdge(), in turn, calls update(), which will increment the receiver's tick to be the tick of the next clock edge ahead of curTick(). At this point, when clockEdge(Cycles(1)) continues executing, it adds yet another full cycle to the receiver's next clock edge, and that is what is returned from nextCycle(). Because of this, the buffer I've put together using nextCycle() can only accept 1 input every other cycle when the sender and receiver clocks are out of phase. Is this intended functionality of nextCycle()? Thanks, Joel -- Joel Hestness PhD Student, Computer Architecture Dept. of Computer Science, University of Wisconsin - Madison http://pages.cs.wisc.edu/~hestness/ _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
