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