{
    "comm": {
        "type": "local",
        "module": "artiq.coredevice.comm_tcp",
        "class": "Comm",
        "arguments": {"host": "192.168.0.42"}
    },
    "core": {
        "type": "local",
        "module": "artiq.coredevice.core",
        "class": "Core",
        "arguments": {"ref_period": 1e-9}
    },

    "pmt0": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLInOut",
        "arguments": {"channel": 0}
    },
    "pmt1": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLInOut",
        "arguments": {"channel": 1}
    },

    "ttl0": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLOut",
        "arguments": {"channel": 2},
        "comment": "This is a fairly long comment to test word wrapping in GUI."
    },
    "ttl1": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLOut",
        "arguments": {"channel": 3},
        "comment": "Hello World"
    },
    "ttl2": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLOut",
        "arguments": {"channel": 4}
    },
    "ttl3": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLOut",
        "arguments": {"channel": 5}
    },
    "ttl_sma": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLInOut",
        "arguments": {"channel": 17}
    },
    "led": {
        "type": "local",
        "module": "artiq.coredevice.ttl",
        "class": "TTLOut",
        "arguments": {"channel": 18}
    },

    "dds_bus": {
        "type": "local",
        "module": "artiq.coredevice.dds",
        "class": "DDSBus",
        "arguments": {}
    },
    "dds0": {
        "type": "local",
        "module": "artiq.coredevice.dds",
        "class": "AD9858",
        "arguments": {"sysclk": 1e9, "channel": 0},
        "comment": "Comments work in DDS panel as well"
    },
    "dds1": {
        "type": "local",
        "module": "artiq.coredevice.dds",
        "class": "AD9858",
        "arguments": {"sysclk": 1e9, "channel": 1}
    },
    "dds2": {
        "type": "local",
        "module": "artiq.coredevice.dds",
        "class": "AD9858",
        "arguments": {"sysclk": 1e9, "channel": 2}
    },

    "qc_q1_0": {
        "type": "controller",
        "best_effort": false,
        "host": "::1",
        "port": 4000,
        "target_name": "pdq2",
        "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_0.bin"
    },
    "qc_q1_1": {
        "type": "controller",
        "best_effort": false,
        "host": "::1",
        "port": 4001,
        "target_name": "pdq2",
        "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_1.bin"
    },
    "qc_q1_2": {
        "type": "controller",
        "best_effort": false,
        "host": "::1",
        "port": 4002,
        "target_name": "pdq2",
        "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_2.bin"
    },
    "qc_q1_3": {
        "type": "controller",
        "best_effort": false,
        "host": "::1",
        "port": 4003,
        "target_name": "pdq2",
        "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_3.bin"
    },
    "electrodes": {
        "type": "local",
        "module": "artiq.devices.pdq2",
        "class": "CompoundPDQ2",
        "arguments": {
            "pdq2_devices": ["qc_q1_0", "qc_q1_1", "qc_q1_2", "qc_q1_3"],
            "trigger_device": "ttl3",
            "frame_devices": ["ttl0", "ttl1", "ttl2"]
        }
    },

    "lda": {
        "type": "controller",
        "best_effort": true,
        "host": "::1",
        "port": 3253,
        "target_name": "lda",
        "command": "lda_controller -p {port} --bind {bind} --simulation"
    },

    "ttl_inout": "pmt0",
    "ttl_out": "ttl0",
    "ttl_out_serdes": "ttl0",

    "pmt": "pmt0",
    "bd_dds": "dds0",
    "bd_sw": "ttl0",
    "bdd_dds": "dds1",
    "bdd_sw": "ttl1"
}