Остановка кокотка раздвоенной сопрограммы
У меня есть сопрограмма, которая ждет повышения сигнала:
@cocotb.coroutine
def wait_for_rise(self):
yield RisingEdge(self.dut.mysignal)
Я запускаю его в своей "основной" тестовой функции, например:
mythread = cocotb.fork(wait_for_rise())
Я хочу остановить это через некоторое время, даже если повышение сигнала не произойдет. Я пытался "убить" это:
mythread.kill()
Но исключение случается:
Send raised exception: 'RunningCoroutine' object has no attribute '_join'
File "/opt/cocotb/cocotb/decorators.py", line 121, in send
return self._coro.send(value)
File "/myproject.py", line 206, in i2c_read
wTXDRwthread.kill()
File "/opt/cocotb/cocotb/decorators.py", line 151, in kill
cocotb.scheduler.unschedule(self)
File "/opt/cocotb/cocotb/scheduler.py", line 453, in unschedule
if coro._join in self._trigger2coros:
Есть ли решение, чтобы правильно остановить разветвленную сопрограмму?
0 ответов
Очень похоже, что это та же проблема, что и на https://github.com/potentialventures/cocotb/issues/650 - вы можете подписаться на проблему, чтобы получать уведомления об изменении ее статуса.