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;
> 

Reply via email to