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)