Cocotb公司从未打过电话

2024-06-14 11:15:50 发布

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

我刚开始使用cocotb,但我对 应该使用协同程序的一小段代码

import cocotb
from cocotb.triggers import Timer

@cocotb.coroutine
def test(dut):
    dut.a <= 1
    dut.b <= 2
    cocotb.log.info('test')
    yield Timer(1, unit='ns')

@cocotb.test()
def add_corner(dut):
    dut.uop <= 0b0
    dut.src <= 0b01
    test(dut)
    yield Timer(1, units='ns')
    dut._log.info('done')

将创建并运行模拟,但是 永远不叫协同程序。这两条消息都不会显示日志消息 任务也没有执行

我使用Python3.8,并测试了一些示例 包含在回购协议中。axi_从机测试工作正常 很好,所以我假设我的设置正常

有人能猜出是什么引起的吗 问题出在哪里


Tags: 代码fromtestimportinfolog消息def
2条回答

请注意,如果使用新的await语法,如果犯了错误,将收到警告:

import cocotb
from cocotb.triggers import Timer

# note: no coroutine decorator needed (or wanted)
async def test(dut):
    dut.a <= 1
    dut.b <= 2
    cocotb.log.info('test')
    await Timer(1, unit='ns')

@cocotb.test()
async def add_corner(dut):
    dut.uop <= 0b0
    dut.src <= 0b01
    test(dut)  # whoops - missing await
    await Timer(1, units='ns')
    dut._log.info('done')

给予

RuntimeWarning: coroutine 'test' was never awaited

您需要yield您的协同程序,而不是直接调用它

相关问题 更多 >