@@ -261,7 +261,7 @@ def count(self):
261261 return len (self .queue )
262262
263263 def empty (self ):
264- return self .count () == 0
264+ return not self .queue
265265
266266 def create_logic (self ,
267267 clk ,
@@ -344,7 +344,7 @@ def logic():
344344 tvalid_int .next = False
345345 tlast .next = False
346346 if (tlast and tready_int and tvalid ) or not tvalid_int :
347- if len ( self .queue ) > 0 :
347+ if self .queue :
348348 frame = self .queue .pop (0 )
349349 frame .B = B
350350 frame .N = N
@@ -374,14 +374,15 @@ def __init__(self):
374374 self .has_logic = False
375375 self .queue = []
376376 self .read_queue = []
377+ self .sync = Signal (intbv (0 ))
377378
378379 def recv (self ):
379- if len ( self .queue ) > 0 :
380+ if self .queue :
380381 return self .queue .pop (0 )
381382 return None
382383
383384 def read (self , count = - 1 ):
384- while len ( self .queue ) > 0 :
385+ while self .queue :
385386 self .read_queue .extend (self .queue .pop (0 ).data )
386387 if count < 0 :
387388 count = len (self .read_queue )
@@ -393,7 +394,15 @@ def count(self):
393394 return len (self .queue )
394395
395396 def empty (self ):
396- return self .count () == 0
397+ return not self .queue
398+
399+ def wait (self , timeout = 0 ):
400+ if self .queue :
401+ return
402+ if timeout :
403+ yield self .sync , delay (timeout )
404+ else :
405+ yield self .sync
397406
398407 def create_logic (self ,
399408 clk ,
@@ -498,6 +507,7 @@ def logic():
498507 frame .WL = WL
499508 frame .parse (data , keep , id , dest , user )
500509 self .queue .append (frame )
510+ self .sync .next = not self .sync
501511 if name is not None :
502512 print ("[%s] Got frame %s" % (name , repr (frame )))
503513 frame = AXIStreamFrame ()
0 commit comments