LINUX.ORG.RU

История изменений

Исправление 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... и т.д.