Hi, I was following the extending gateware logic example to set up the linked_led, I edited the file in PHY folder and also coredevice folder, also the kasli-soc.py in artiq-zynq repo. And successfully built it. The set_o method works, but the other three example methods doesn't work. I tried editing the flake.nix and changed the source of artiq to our own fork but that doesn't help.

Thanks ahead for helping!
We are on Kasli-soc v1.1.1
Error:

aqp-linux@aqp-linux-inspiron:~/aqpcontrol$ artiq_run flip_led.py 
<synthesized>:1:1-1:67: error: host object does not have an attribute 'flip_led'
<artiq.coredevice.linked_led.LinkedLED object at 0x7ffee6ea4790>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
flip_led.py:9:1: note: expanded from here
def run(self):
^             
flip_led.py:11:9-11:27: note: attribute accessed here
        self.leds.flip_led()

PHY/linked_led.py

from migen import *
from artiq.gateware.rtio import rtlink

class Output(Module):

    def __init__(self, pad0, pad1):
        self.rtlink = rtlink.Interface(rtlink.OInterface(2))
        reg = Signal()
        pad0_o = Signal()

        ###
        self.sync.rtio += [
            If(self.rtlink.o.stb,
                reg.eq(self.rtlink.o.data[0]),
                pad0_o.eq(self.rtlink.o.data[1])
            )
        ]

        self.comb += [
            pad0.eq(pad0_o),
            If(reg,
                pad1.eq(pad0_o)
            )
        ]

coredevice/linked_led.py

from artiq.language.core import *
from artiq.language.types import *
from artiq.coredevice.rtio import rtio_output

class LinkedLED:

    def __init__(self, dmgr, channel, core_device="core"):
        self.core = dmgr.get(core_device)
        self.channel = channel
        self.target_o = channel << 8

    @staticmethod
    def get_rtio_channels(channel, **kwargs):
        return [(channel, None)]

    @kernel
    def set_o(self, o):
        rtio_output(self.target_o, o)

    @kernel
    def flip_led(self):
        self.set_o(0b01)

    @kernel
    def link_up(self):
        self.set_o(0b10)

    @kernel
    def flip_together(self):
        self.set_o(0b11)