forked from M-Labs/artiq
core: add trigger_analyzer_proxy API
This commit is contained in:
parent
a26cee6ca7
commit
7a863b4f5e
|
@ -84,7 +84,10 @@ class Core:
|
||||||
"core", "ref_period", "coarse_ref_period", "ref_multiplier",
|
"core", "ref_period", "coarse_ref_period", "ref_multiplier",
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, dmgr, host, ref_period, ref_multiplier=8,
|
def __init__(self, dmgr,
|
||||||
|
host, ref_period,
|
||||||
|
analyzer_proxy=None,
|
||||||
|
ref_multiplier=8,
|
||||||
target="rv32g", satellite_cpu_targets={}):
|
target="rv32g", satellite_cpu_targets={}):
|
||||||
self.ref_period = ref_period
|
self.ref_period = ref_period
|
||||||
self.ref_multiplier = ref_multiplier
|
self.ref_multiplier = ref_multiplier
|
||||||
|
@ -95,6 +98,10 @@ class Core:
|
||||||
self.comm = CommKernelDummy()
|
self.comm = CommKernelDummy()
|
||||||
else:
|
else:
|
||||||
self.comm = CommKernel(host)
|
self.comm = CommKernel(host)
|
||||||
|
if analyzer_proxy is None:
|
||||||
|
self.analyzer_proxy = None
|
||||||
|
else:
|
||||||
|
self.analyzer_proxy = dmgr.get(analyzer_proxy)
|
||||||
|
|
||||||
self.first_run = True
|
self.first_run = True
|
||||||
self.dmgr = dmgr
|
self.dmgr = dmgr
|
||||||
|
@ -288,3 +295,20 @@ class Core:
|
||||||
min_now = rtio_get_counter() + 125000
|
min_now = rtio_get_counter() + 125000
|
||||||
if now_mu() < min_now:
|
if now_mu() < min_now:
|
||||||
at_mu(min_now)
|
at_mu(min_now)
|
||||||
|
|
||||||
|
def trigger_analyzer_proxy(self):
|
||||||
|
"""Causes the core analyzer proxy to retrieve a dump from the device,
|
||||||
|
and distribute it to all connected clients (typically dashboards).
|
||||||
|
|
||||||
|
Returns only after the dump has been retrieved from the device.
|
||||||
|
|
||||||
|
Raises IOError if no analyzer proxy has been configured, or if the
|
||||||
|
analyzer proxy fails. In the latter case, more details would be
|
||||||
|
available in the proxy log.
|
||||||
|
"""
|
||||||
|
if self.analyzer_proxy is None:
|
||||||
|
raise IOError("No analyzer proxy configured")
|
||||||
|
else:
|
||||||
|
success = self.analyzer_proxy.trigger()
|
||||||
|
if not success:
|
||||||
|
raise IOError("Analyzer proxy reported failure")
|
||||||
|
|
|
@ -7,7 +7,11 @@ device_db = {
|
||||||
"type": "local",
|
"type": "local",
|
||||||
"module": "artiq.coredevice.core",
|
"module": "artiq.coredevice.core",
|
||||||
"class": "Core",
|
"class": "Core",
|
||||||
"arguments": {"host": core_addr, "ref_period": 1e-9}
|
"arguments": {
|
||||||
|
"host": core_addr,
|
||||||
|
"ref_period": 1e-9,
|
||||||
|
"analyzer_proxy": "core_analyzer"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"core_log": {
|
"core_log": {
|
||||||
"type": "controller",
|
"type": "controller",
|
||||||
|
|
|
@ -5,7 +5,11 @@ device_db = {
|
||||||
"type": "local",
|
"type": "local",
|
||||||
"module": "artiq.coredevice.core",
|
"module": "artiq.coredevice.core",
|
||||||
"class": "Core",
|
"class": "Core",
|
||||||
"arguments": {"host": core_addr, "ref_period": 1/(8*150e6)}
|
"arguments": {
|
||||||
|
"host": core_addr,
|
||||||
|
"ref_period": 1e-9,
|
||||||
|
"analyzer_proxy": "core_analyzer"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"core_log": {
|
"core_log": {
|
||||||
"type": "controller",
|
"type": "controller",
|
||||||
|
|
|
@ -5,7 +5,11 @@ device_db = {
|
||||||
"type": "local",
|
"type": "local",
|
||||||
"module": "artiq.coredevice.core",
|
"module": "artiq.coredevice.core",
|
||||||
"class": "Core",
|
"class": "Core",
|
||||||
"arguments": {"host": core_addr, "ref_period": 1e-9}
|
"arguments": {
|
||||||
|
"host": core_addr,
|
||||||
|
"ref_period": 1e-9,
|
||||||
|
"analyzer_proxy": "core_analyzer"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"core_log": {
|
"core_log": {
|
||||||
"type": "controller",
|
"type": "controller",
|
||||||
|
|
|
@ -9,7 +9,11 @@ device_db = {
|
||||||
"type": "local",
|
"type": "local",
|
||||||
"module": "artiq.coredevice.core",
|
"module": "artiq.coredevice.core",
|
||||||
"class": "Core",
|
"class": "Core",
|
||||||
"arguments": {"host": core_addr, "ref_period": 1e-9}
|
"arguments": {
|
||||||
|
"host": core_addr,
|
||||||
|
"ref_period": 1e-9,
|
||||||
|
"analyzer_proxy": "core_analyzer"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"core_log": {
|
"core_log": {
|
||||||
"type": "controller",
|
"type": "controller",
|
||||||
|
|
|
@ -55,7 +55,13 @@ def process_header(output, description):
|
||||||
"type": "local",
|
"type": "local",
|
||||||
"module": "artiq.coredevice.core",
|
"module": "artiq.coredevice.core",
|
||||||
"class": "Core",
|
"class": "Core",
|
||||||
"arguments": {{"host": core_addr, "ref_period": {ref_period}, "target": "{cpu_target}", "satellite_cpu_targets": {{}} }},
|
"arguments": {{
|
||||||
|
"host": core_addr,
|
||||||
|
"ref_period": {ref_period},
|
||||||
|
"analyzer_proxy": "core_analyzer"
|
||||||
|
"target": "{cpu_target}",
|
||||||
|
"satellite_cpu_targets": {{}}
|
||||||
|
}},
|
||||||
}},
|
}},
|
||||||
"core_log": {{
|
"core_log": {{
|
||||||
"type": "controller",
|
"type": "controller",
|
||||||
|
|
Loading…
Reference in New Issue