Fix X-init for cocotb 2.0

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2025-09-07 13:13:03 -07:00
parent dcb9a6bd02
commit 88b6624a93
2 changed files with 24 additions and 6 deletions

View File

@@ -30,6 +30,11 @@ from cocotb.triggers import RisingEdge, Timer, First, Event
from cocotb.utils import get_sim_time from cocotb.utils import get_sim_time
from cocotb_bus.bus import Bus from cocotb_bus.bus import Bus
try:
from cocotb.types import LogicArray
except ImportError:
pass
from .version import __version__ from .version import __version__
from .reset import Reset from .reset import Reset
@@ -301,9 +306,13 @@ class AxiStreamBase(Reset):
for sig in self._signals+self._optional_signals: for sig in self._signals+self._optional_signals:
if hasattr(self.bus, sig): if hasattr(self.bus, sig):
if self._init_x and sig not in ("tvalid", "tready"): if self._init_x and sig not in ("tvalid", "tready"):
v = getattr(self.bus, sig).value s = getattr(self.bus, sig)
try:
v = LogicArray("x"*len(s.value))
except NameError:
v = s.value
v.binstr = 'x'*len(v) v.binstr = 'x'*len(v)
getattr(self.bus, sig).setimmediatevalue(v) s.setimmediatevalue(v)
if hasattr(self.bus, "tkeep"): if hasattr(self.bus, "tkeep"):
self.byte_lanes = len(self.bus.tkeep) self.byte_lanes = len(self.bus.tkeep)

View File

@@ -29,6 +29,11 @@ from cocotb.queue import Queue, QueueFull
from cocotb.triggers import RisingEdge, Event, First, Timer from cocotb.triggers import RisingEdge, Event, First, Timer
from cocotb_bus.bus import Bus from cocotb_bus.bus import Bus
try:
from cocotb.types import LogicArray
except ImportError:
pass
from .reset import Reset from .reset import Reset
@@ -119,9 +124,13 @@ class StreamBase(Reset):
if sig in self._signal_widths: if sig in self._signal_widths:
assert len(getattr(self.bus, sig)) == self._signal_widths[sig] assert len(getattr(self.bus, sig)) == self._signal_widths[sig]
if self._init_x and sig not in (self._valid_signal, self._ready_signal): if self._init_x and sig not in (self._valid_signal, self._ready_signal):
v = getattr(self.bus, sig).value s = getattr(self.bus, sig)
try:
v = LogicArray("x"*len(s.value))
except NameError:
v = s.value
v.binstr = 'x'*len(v) v.binstr = 'x'*len(v)
getattr(self.bus, sig).setimmediatevalue(v) s.setimmediatevalue(v)
self._run_cr = None self._run_cr = None