Program compilation

Overview

The Keysight’s Quantum Control System library provides a toolkit to define compilation between abstraction layers, called Linkers. A Linkers is a configurable translator that defines how given quantum instructions should be mapped to hardware-level instructions.

A collection of linkers can be grouped together using a LinkerPass, and an Executor is used to map the instructions in a given Program into the new instructions defined by the linkers.

General purpose linkers can be defined for a given device, and are meant to be saved to file with save(), then loaded with load() and used to compile programs targeted to that device. Linkers can also be saved in a CalibrationSet along with calibration data. The calibration set also has convenience methods that allow for easy generation of a set of linkers for all qudits in the set.

There are two types of linkers:

Linker

A Linker replaces a single, explicit instance of an instruction into an explicit Program. This is useful for replacing specific operations in a Program with a sequence of one or more operations.

See Introduction to linkers for examples.

ParameterizedLinker

A ParameterizedLinker translates a family of input instructions into a family of Programs. These families can be parameterized by the values of instruction Targets and by Variables. ParameterizedLinkers provide a highly compact and flexible way to express calibrated operations.

Guides

Simple Compilation Workflow

This guide walks through the basic steps of program compilation using a calibration set with a qudit topology.

Introduction to linkers

Introduction to linkers

This guide shows how to initialize linkers in Keysight’s Quantum Control System, as well as to use a linker pass inside an executor to modify quantum programs.

Simple Compilation Workflow

Managing calibration data and linkers

This guide outlines how to use calibration data with linkers effectively.

Managing calibration data and linkers

Compiling single-qubit native gates to waveforms

This guide outlines how to use linkers to compile single-qubit native gates to waveforms.

Compiling single-qubit native gates to waveforms

Compiling multi-qubit native gates to waveforms

This guide outlines how to use linkers to compile multi-qubit native gates to waveforms.

Compiling multi-qubit native gates to waveforms

Compiling measurements to waveforms and acquisitions

This guide outlines how to use linkers to compile measurements to waveforms and acquisitions.

Compiling measurements to waveforms and acquisitions

List of examples

We provide several examples that show how to define and use linkers in experimentally relevant scenarios. In particular:

On this page