Использую фреймворк cototb (это Python + FPGA). И есть такая проблема: для работы с временем, т.е. ожидания положительных фронтов клоков, требуется задействовать ключевое слово yield. Эта функция считается что она генератор. Насколько мне известно из примеров в инете, из генераторов значения возвращается тоже словом yield. Как же мне тогда вернуть значение?
@cocotb.coroutine
def is_ch_active(channel):
active = False
chan_0_adr = 0x20
chan_size = 7
dut.cs_b = 0
dut.rd_b = 0
n_wait = 3
chan_id = channel
base_addr = chan_0_adr + chan_id * chan_size
dut.adr = (base_addr + 6) * 4 # channel enable
for wait in range(n_wait):
yield posedge(dut.itfc_clk)
v = int(dut.dout)
dut.cs_b = 1
dut.rd_b = 1
yield posedge(dut.itfc_clk)
if v & (1<<0):
active = True
yield active
is_active_before = misc.is_ch_active(channel)
is_active_after = misc.is_ch_active(channel)
is_active before= <cocotb.decorators.RunningCoroutine object at 0x2aaad013af10>, after= <cocotb.decorators.RunningCoroutine object at 0x2aaad013add0>
Нужно просто вернуть то значение active - True или False. А может есть способ это обойти?