История изменений
Исправление Virtuos86, (текущая версия) :
gen_before = misc.is_ch_active(dut, report, channel) помещает инстанс класса (корутину) cocotb.RunningCoroutine в переменную.
yield gen_after — вызывает метод send корутины, передавая в него саму корутину.
def send(self, value):
try:
return self._coro.send(value)
...
raise
except ReturnValue as e:
self.retval = e.retval
Дальше, как видно, корутина (value) передается в изначальный генератор is_ch_active, вход происходит в точку, где находится первая инструкция yield (yield одновременно может отдавать значение из генератора, и принимать). Эта точка — yield posedge(dut.itfc_clk) (можно посмотреть:
val = yield posedge(dut.itfc_clk)
if val is not None: print val).
Дальше доходит до первого raise ReturnValue... и т.д.
Исходная версия Virtuos86, :
gen_before = misc.is_ch_active(dut, report, channel) помещает инстанс класса (корутину) cocotb.RunningCoroutine в переменную.
yield gen_after — вызывает метод send корутины, передавая в него саму корутину.
def send(self, value):
try:
return self._coro.send(value)
...
raise
except ReturnValue as e:
self.retval = e.retval
Дальше, как видно, корутина (value) передается в изначальный генератор is_ch_active, вход происходит в точку, где находится первая инструкция yield (yield одновременно может отдавать значение из генератора, и принимать). Эта точка — yield posedge(dut.itfc_clk) (можно посмотреть:
val = yield posedge(dut.itfc_clk)
if val is not None: print val[/сщву]
).
Дальше доходит до первого raise ReturnValue... и т.д.