停止cocotb分叉协同程序

2024-06-02 07:16:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个团队在等待信号上升: 你知道吗

@cocotb.coroutine
def wait_for_rise(self):
    yield RisingEdge(self.dut.mysignal)

我在«main»测试函数中启动它,如下所示: 你知道吗

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:

有没有一个解决方案来正确地停止forked协程?你知道吗


Tags: inpyselfdecoratorsfor信号linefile