File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -56,6 +56,46 @@ def __getattr__(self, name):
5656 except AttributeError :
5757 return self .fields ["payload" ][name ]
5858
59+ def bfm_send (self , pkts , timeout = 100 ):
60+ len_pkts = len (pkts )
61+ for i , pkt in enumerate (pkts ):
62+ yield Settle ()
63+ yield self .valid .eq (1 )
64+ yield self .first .eq (i == 0 )
65+ yield self .last .eq (i == len_pkts - 1 )
66+ for key , val in pkt .items ():
67+ yield getattr (self , key ).eq (val )
68+
69+ yield
70+ elapsed = 1
71+
72+ yield Settle ()
73+ while not (yield self .ready ):
74+ yield
75+ yield Settle ()
76+ elapsed += 1
77+ if elapsed >= timeout :
78+ raise Exception ("timeout" )
79+
80+ yield self .valid .eq (0 )
81+
82+ def bfm_read (self , timeout = 100 ):
83+ elapsed = 0
84+
85+ yield self .ready .eq (1 )
86+ yield Settle ()
87+ while not (yield self .valid ):
88+ yield
89+ yield Settle ()
90+ elapsed += 1
91+ if elapsed >= timeout :
92+ raise Exception ("timeout" )
93+
94+ yield
95+ yield self .ready .eq (0 )
96+
97+ return {key : getattr (self , key ) for key , _ in self .description }
98+
5999
60100class _FIFOWrapper :
61101 def __init__ (self , payload_layout ):
You can’t perform that action at this time.
0 commit comments