Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Pulse schedules

--emit schedule with a calibration lays the compiled program out in time: every gate starts as soon as its qubits are free, one qubit gates take the calibration’s single qubit time, CNOTs its per edge time and measurements its readout time, and phase gates like rz take no time because hardware applies them as a frame change. --emit pulse writes the same schedule as OpenQASM 3 with OpenPulse calibrations: a port and a drive frame per qubit at the frequency from a frequency q GHz line, rz as shift_phase on that frame, sx and x as DRAG pulses with the amplitude and DRAG coefficient from an optional drive q amplitude beta line, and each CNOT as a cross resonance gaussian_square pulse from the control’s port at the target’s frequency, with its amplitude from an optional cross a b amplitude line. A qubit with a resonator q GHz line, and an optional amplitude after it, gets a readout tone on a measure frame and a capture_v2 on an acquire frame as its defcal measure, lasting the calibration’s readout time; other qubits keep the device’s own measurement. Idle time becomes explicit delay statements. A single pulse per CNOT, without echo or rotary tones, is a starting point to calibrate against a device rather than a finished gate. examples/line5.cal has frequencies, so qirc bell.ll --calibration examples/line5.cal --emit pulse works as is, and the output is accepted by the reference OpenPulse parser from the OpenQASM project.