mirror of
https://github.com/enjoy-digital/litex.git
synced 2025-01-04 09:52:26 -05:00
soc/interconnect/stream_packet: add check of field's width vs signal's width in Header.get_field
This commit is contained in:
parent
c0539fff3e
commit
d85d2b7b9b
1 changed files with 6 additions and 4 deletions
|
@ -118,13 +118,15 @@ class Header:
|
||||||
field = getattr(obj, name.replace("_msb", ""))[width:2*width]
|
field = getattr(obj, name.replace("_msb", ""))[width:2*width]
|
||||||
else:
|
else:
|
||||||
field = getattr(obj, name)
|
field = getattr(obj, name)
|
||||||
|
if len(field) != width:
|
||||||
|
raise ValueError("Width mismatch on " + name + " field")
|
||||||
return field
|
return field
|
||||||
|
|
||||||
def encode(self, obj, signal):
|
def encode(self, obj, signal):
|
||||||
r = []
|
r = []
|
||||||
for k, v in sorted(self.fields.items()):
|
for k, v in sorted(self.fields.items()):
|
||||||
start = v.byte*8+v.offset
|
start = v.byte*8 + v.offset
|
||||||
end = start+v.width
|
end = start + v.width
|
||||||
field = self.get_field(obj, k, v.width)
|
field = self.get_field(obj, k, v.width)
|
||||||
if self.swap_field_bytes:
|
if self.swap_field_bytes:
|
||||||
field = reverse_bytes(field)
|
field = reverse_bytes(field)
|
||||||
|
@ -134,8 +136,8 @@ class Header:
|
||||||
def decode(self, signal, obj):
|
def decode(self, signal, obj):
|
||||||
r = []
|
r = []
|
||||||
for k, v in sorted(self.fields.items()):
|
for k, v in sorted(self.fields.items()):
|
||||||
start = v.byte*8+v.offset
|
start = v.byte*8 + v.offset
|
||||||
end = start+v.width
|
end = start + v.width
|
||||||
field = self.get_field(obj, k, v.width)
|
field = self.get_field(obj, k, v.width)
|
||||||
if self.swap_field_bytes:
|
if self.swap_field_bytes:
|
||||||
r.append(field.eq(reverse_bytes(signal[start:end])))
|
r.append(field.eq(reverse_bytes(signal[start:end])))
|
||||||
|
|
Loading…
Reference in a new issue