Dear Mahmood,

Flexus is a cycle-driven simulator meaning that each component moves forward 
upon
receiving a clock tick. This is implemented by the drive function for every 
component. This
function  is called once per cycle in the timing simulator. Please read the 
slides of the following
tutorial beginning from slide 82 for more information.

http://parsa.epfl.ch/simflex/doc/SimFlex-tutorial-isca2006.pdf

In few words, the MemoryLoopback component pushes memory requests into the 
outQueue
with a delay of the memory latency - 1 cycle (the code explains why 
decrementing the latency
by 1 cycle). The enqueue function which is implemented in the file 
Common/MessageQueues.hpp
pushes the memory request and the cycle time in which the request will be 
ready. The component's
drive function which is called once per cycle checks which messages are ready 
(i.e., the cycle time
is smaller or equal than the ready cycle time of the message). In case it's 
ready the message is dequeued.

Implementation of other timing components may be more complex.

Navigating through the code is the best way to understand how Flexus works. The 
debugging mode can
provide more insight in case you cannot follow the code paths.

Regards,
-Stavros.

On Jul 30, 2011, at 8:48 AM, Mahmood Naderan wrote:

Hi
How does flexus take memory delay into account for IPC calculation? I want to 
set a delay for my component and see the effect on IPC.

For memory, I see the delay is defined as
PARAMETER( Delay, int, "Access time", "time", 1 )

The only thing I think is related to that is

outQueue->enqueue(aMessageTransport,cfg.Delay -1);


Any more information about that? thanks

// Naderan *Mahmood;

Reply via email to