LINUX.ORG.RU

возврат значения из генератора

 cocotb, ,


0

3

Использую фреймворк 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. А может есть способ это обойти?

★★★★★

Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.