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

Reply via email to