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):
56
56
except AttributeError :
57
57
return self .fields ["payload" ][name ]
58
58
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
+
59
99
60
100
class _FIFOWrapper :
61
101
def __init__ (self , payload_layout ):
You can’t perform that action at this time.
0 commit comments