Hello,

I am a postdoctoral researcher in the Quantum Control Lab at the University of Sydney. I am quite new to Artiq and am having some trouble, which my colleagues and I have been unable to resolve.

We are currently trying to operate a Kasli-SoC (hardware v 1.0)system as a master to a Kasli satellite on Artiq 8. However, I am not able to operate the system in master mode.

I have created a binary file following the instructions in the documentation, using the below JSON file. In particular, I am sharing here the minimal working example, with no peripherals.

{
"target": "kasli_soc",
"min_artiq_version": "8.0",
"variant": "sydney3",
"hw_rev": "v1.0",
"base": "master",
"core_addr": "10.66.54.252",
"peripherals": [
]
}

I can build a binary using this, and I flash it by copying to the SD card manually. I monitor the logs and see that the system hangs at “NAR3/Zynq7000 starting…”. I can't ping it or otherwise address it over the network.

However, if I simply change “master” to “standalone” then the system will boot properly, and I can address it by the network.

Additionally, if I take my original master binary, I can plug it onto a spare Kasli-SoC (hardware v 1.1.1) and I get similar results to the standalone.

Can anyone explain this behaviour, and help me to operate my Kasli-SoC as a master?

Thank you,

Cameron

Hi Cameron, your issue might be connected to our question: Can we boot Kasli SoC master without having connected peripherals or satellites?

Unrelated:

  • Beware that you might have to re-compile boot.bin if you change the Kasli SoC hw_rev from v1.0 to v1.1.
  • You probably know this, but others might not (at least it's wasn't obvious to me): One can always construct a correct system description file from artiq/coredevice/coredevice_generic.schema.json (release-8). (For other people: checkout the correct branch for your version of Artiq.)

    Hi dtsevas , I'm working with Cameron on the same lab. We have tested changing the hw_rev variable before posting the issue (and re-generating the binaries as well). The problem is probably not the JSON file, since it works for Artiq 7 (and release 7 of Artiq-zync), and boots succesfully.

    Something has changed between release 7 to 8, but I wasn't able to find it in the git source code.

    Thank you for your answer, though. I am open for more suggestions.
    Gustavo

      guscafe In your post, you write:

      Additionally, if I take my original master binary, I can plug it onto a spare Kasli-SoC (hardware v 1.1.1) and I get similar results to the standalone.

      Are you saying that compiling with "base" : "master" with Artiq 7 makes the Kasli SoC boot, but with Artiq 8 does not?

      If yes, please edit your post to make that clear. I thought that "base": "master" didn't work no matter the Artiq version.

        Could you please describe how do you build the firmware - the commands, instructions?

        The command is the same specified in the documentation for booting through SD card, with the json described above and the flake from the downloaded repository path.

        nix build --print-build-logs --impure --expr 'let fl = builtins.getFlake "path_to_artiq-zync_folder-flake"; in (fl.makeArtiqZynqPackage {target="kasli_soc"; variant="master"; json=<path/to/description.json>;}).kasli_soc-master-sd'

        After generating the boot.bin I insert back the SD in the board slot, and monitor the boot from the UART log. Outputs above. As stated above, using the downloaded repository for Artiq 7 it works fine, but does not complete boot for 8.

        We have two different installations of artiq and artiq-zync, on two PCs. One uses the path as above, and the other uses the git address ( as in the documentation) in the command above. Both of them end up with the same behaviour.