Skip to content

Commit 776f89f

Browse files
committed
feat: Validate waveform memory constraints
1 parent c2703e9 commit 776f89f

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/qibolab/_core/instruments/qblox/mock/cluster.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ def __init__(self, *args, **kwargs) -> None:
7373
def reset(self) -> None:
7474
self.resets += 1
7575

76+
def close(self) -> None:
77+
pass
78+
7679
@property
7780
def records(self) -> dict:
7881
return {

src/qibolab/_core/instruments/qblox/sequence/waveforms.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ def _pulse(event: Union[Pulse, Readout]) -> Pulse:
3030
return event.probe if isinstance(event, Readout) else event
3131

3232

33+
WAVEFORM_MEMORY = 2**14
34+
"""Maximum waveform memory available.
35+
36+
https://docs.qblox.com/en/main/cluster/q1_sequence_processor.html#waveform-memory
37+
"""
38+
WAVEFORM_NUMBER = 2**10
39+
"""Maximum number of waveforms available.
40+
41+
https://docs.qblox.com/en/main/cluster/q1_sequence_processor.html#waveform-memory
42+
"""
43+
44+
3345
def waveforms(
3446
sequence: Iterable[PulseLike],
3547
sampling_rate: float,
@@ -85,6 +97,9 @@ def _waveform(
8597
for k, v in d.items()
8698
}
8799

100+
assert sum(len(w.waveform.data) for _, w in indexless.items()) <= WAVEFORM_MEMORY
101+
assert len(indexless) <= WAVEFORM_NUMBER
102+
88103
return {
89104
k: WaveformSpec(
90105
waveform=Waveform(data=v.waveform.data, index=i), duration=v.duration

0 commit comments

Comments
 (0)