python - 停止 cocotb 分叉协程
问题描述
我有一个等待信号上升的协程:
@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:
是否有正确停止分叉协程的解决方案?
解决方案
这看起来与https://github.com/potentialventures/cocotb/issues/650中的问题非常相似- 您可以订阅问题以在其状态更改时收到通知。
推荐阅读
- css - 使用 CSS Grid auto-fit 时,我可以让网格单元格扩展以适应其内容吗?
- sql-server - 如何根据多行的各种条目 ID 的条目日期从数据库中获取最新数据
- vue.js - 如何获得焦点以返回选择输入
- pandas - 将 KDB 查询返回到 pandas 数据框
- python - 我们如何定义 Keras 的 Early Stopping 以在每批(而不是整个 epoch)之后检查
- swift - 有没有办法在 UIPickerView 上从 Firebase 实时数据库打印数据?
- cidr - CIDR 和 IP 地址数
- c# - 如何建立匿名参数数组
- excel - 无法使用 vba 在散点图上绘制值
- ios - 如何强制 iOS 12 的主屏幕 Web 应用程序自动更新?