The various port types are covered on slides 62 and 63 of the PACT 2008 SimFlex tutorial, which is available at http://parsa.epfl.ch/simflex/doc/SimFlex-tutorial-pact2008.pdf.
Briefly, the difference between the two is which side of a communication link controls when data is transferred, the sender or the receiver. With only a handful of exceptions (e.g., the Feeder objects), Flexus uses almost exclusively Push ports. Best Regards, -Thomas Wenisch On Jul 17, 2011, at 7:51 AM, Mahmood Naderan wrote: >> When you use Push ports, the component will send > >> information by pushing them to a PushOutput port > >> When you use Pull ports, the component will send > >> information by putting them to a PullInput > > What I understand is that I can send information to either > > PushOutput or PullInput. Really isn't there any difference between them? > > I want to know when should I use PullInput and PushOutput? Please give > > a scenario that PullInput works but PushOutput doesn't. > > Thanks > > > // Naderan *Mahmood; > > > ----- Original Message ----- > From: Volos Stavros <[email protected]> > To: Mahmood Naderan <[email protected]>; simflex <[email protected]> > Cc: > Sent: Monday, July 11, 2011 3:15 PM > Subject: RE: Some questions > > Hi Mahmood, > > When you instantiate a component array (e.g., L1-D cache), you need to > specify its width. > For example, SCALE_WITH_SYSTEM_WIDTH will be 16 in case of a 16-CPU simics > checkpoint. > When you multiply by 1, this means that the width of the component array will > be 16. > > Regarding the difference between Pull and Push. When you use Push ports, the > component > will send information by pushing them to a PushOutput port which is connected > to a PushInput > of another component. When you use Pull ports, the component will send > information by putting > them to a PullInput which is connected to a PullOutput of another component. > You use "push", >> > and "pull", << respectively. > > The Stalled port of components such as uArch, uFetch, v9Decoder, > FetchAddressGenerator is used > in the multithreaded simulator and they are connected to the corresponding > ports of the component > MTManager. > > Regards, > -Stavros. > > > ________________________________________ > From: Mahmood Naderan [[email protected]] > Sent: Wednesday, July 06, 2011 8:26 AM > To: simflex > Subject: Some questions > > Hi > > 1- What does (...SCALE_WITH_SYSTEM_WIDTH, MULTIPLY, 1); mean in > FLEXUS_INSTANTIATE_COMPONENT_ARRAY ? > > 2- What is the difference between PushInput and PullInput? Also PushOutput > and PullOutput? It is easy to understand PushInput and PullOutput > > 3- some components has DYNAMIC_PORT_ARRAY( PullOutput, bool, Stalled). > However "stalled" is not wired in simulator. Is it a special thing? When > should I use that? > > > Thanks > > // Naderan *Mahmood; >
