m-labs / artiq

A leading-edge control system for quantum information experiments
https://m-labs.hk/artiq
GNU Lesser General Public License v3.0
415 stars 193 forks source link

I2CError on some configurations Urukul #2271

Open thomasfire opened 8 months ago

thomasfire commented 8 months ago

Bug Report

One-Line Summary

I2CError on some configurations' Urukul

Issue Details

Steps to Reproduce

  1. Build release-7 with following configuation:

    {
    "target": "kasli",
    "min_artiq_version": "7.0",
    "variant": "test",
    "hw_rev": "v2.0",
    "base": "satellite",
    "peripherals": [
    {
      "type": "urukul",
      "dds": "ad9910",
      "ports": [0, 1],
      "synchronization": true,
      "clk_sel": 2
    },
    {
      "type": "phaser",
      "ports": [2]
    },
    {
      "type": "grabber",
      "ports": [3, 4]
    },
    {
      "type": "zotino",
      "ports": [5]
    }
    ]
    }
  2. Test Urukuls with artiq_sinara_tester

Expected Behavior

Tests pass as usual.

Actual (undesired) Behavior

During calibration of inter-device synchronization:

*** Testing Urukul DDSes.
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/bin/.artiq_sinara_tester-wrapped", line 9, in <module>
    sys.exit(main())
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/frontend/artiq_sinara_tester.py", line 788, in main
    experiment.run(tests)
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/frontend/artiq_sinara_tester.py", line 739, in run
    getattr(self, f"test_{name}")()
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/frontend/artiq_sinara_tester.py", line 299, in test_urukuls
    sync_delay_seed, io_update_delay = self.calibrate_urukul(channel_dev)
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/language/core.py", line 54, in run_on_core
    return getattr(self, arg).run(run_on_core, ((self,) + k_args), k_kwargs)
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/coredevice/core.py", line 140, in run
    self._run_compiled(kernel_library, embedding_map, symbolizer, demangler)
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/coredevice/core.py", line 130, in _run_compiled
    self.comm.serve(embedding_map, symbolizer, demangler)
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/coredevice/comm_kernel.py", line 716, in serve
    self._serve_exception(embedding_map, symbolizer, demangler)
  File "/nix/store/8bzpg145r6vbqssfyva0hw8zcwpv3hiw-python3.9-artiq-7.8185.cc81464/lib/python3.9/site-packages/artiq/coredevice/comm_kernel.py", line 698, in _serve_exception
    raise python_exn
artiq.coredevice.exceptions.I2CError: failed to ack bus address

If you move Urukul ports to 8,9 it will work fine.

Your System (omit irrelevant parts)

Spaqin commented 8 months ago

Any messages about timing not being met in the build log?

thomasfire commented 8 months ago

Any messages about timing not being met in the build log?

None I could find build.log

bodokaiser commented 2 months ago

@thomasfire did you solve the problem?

bodokaiser commented 2 months ago

@Spaqin According to this forum post, the problem arises as there is aliasing for thee urukulX_eeproms when generating the device_db.py.

I believe https://github.com/m-labs/artiq/issues/2149 was created to document the bug. We can close one of the issues.