RE: my action item for explaining semantics of notify callbacks in SCE-MI pipes

From: Shabtay Matalon <shabtay_at_.....>
Date: Fri Apr 20 2007 - 15:43:41 PDT
John,

>-----Original Message-----
>From: John Stickley [mailto:john_stickley@mentor.com]
>>
>> John, I want to be very precise about the conditions. Fullness of
>> emptiness of the buffer by your proposal does not cause either yield
or
>> callback to be called. Only the fact that #elements in the pipe have
>> changed established the criteria for the callback to be called, and
it
>> is the blocking send on full buffer or blocking receive on empty
buffer
>> that causes the yield (among the other causes we discussed).
>>
>> Please confirm.
>
>johnS:
>Not entirely true.
>
>Detection of fullness (or emptiness) will ultimately cause
>a blocking send (or receive) operation to yield.
>
>In the process of trying to move a requested # elements,
>a blocking call will do partial updates of the pipe between
>yields. When this happens it is important to notify the other
>end since this represents a change in state.

 [Shabtay] I'd like to extend the proposal to the following scenario:

Assume we use input pipes named in_pipe1 and in_pipe2. 

The consumer on in_pipe1 successfully consumed an element using
try_receive() and at the same time (or clock edge if you want), the
consumer on in_pipe2 successfully consumed an element using
try_receive(). Some time (clocks) later, consumer on in_pipe1 calls now
receive ()to consume more elements and this time the pipe is empty and
ok_to_send is called on in_pipe1. 

I assume that when in_pipe1 HDL-side consumer yielded to the C-side
producer on in_pipe1, also C-side ok_to_send callback will be called on
in_pipe2. Furthermore, the order in which ok_to_send on both pipes will
be called will be totally arbitrary. 

I also assume that in the general case, if you have n input pipes and m
output pipes, each time that the HDL side yields to the SW side,
ok_to_send/receive callbacks will be called for all pipes for which the
#elements in their pipes have changed prior to when the yield occurred.

Please confirm if this is the case.

Note: To avoid any confusion, note that my scenarios assume that
try_receive or receive are interchangeably called.

Thanks,

Shabtay






-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri Apr 20 15:44:02 2007

This archive was generated by hypermail 2.1.8 : Fri Apr 20 2007 - 15:44:05 PDT