Hardware Distortion Corrections#
If you’re using Qblox hardware, you can take advantage of the real-time hardware predistortion features that apply predistortion to your waveform. This functionality is available in the QCM module of the Qblox Cluster.
For more information, please visit the Qblox documentation on real-time predistortion.
Interface#
The distortion correction coefficients can be specified using the distortion_corrections
key inside the hardware_options
section of the hardware_config
.
For example:
from quantify_scheduler.backends.types.qblox import QbloxHardwareDistortionCorrection
hardware_config = {
"hardware_options": {
"distortion_corrections": {
"q0:fl-cl0.baseband": QbloxHardwareDistortionCorrection(
exp1_coeffs=[2000, -0.1],
fir_coeffs=[1.025] + [0.03, 0.02] * 15 + [0],
)
}
}
}
Delay Compensation#
In order to compensate the delay caused by the filters, on other output channels that do not have filters enabled, you can set the distortion_correction_latency_compensation
flag inside the hardware configuration.
Example configuration snippet:
from quantify_scheduler.backends.qblox.enums import DistortionCorrectionLatencyEnum
hardware_compilation_cfg ={
"hardware_description": {
"cluster0": {
"instrument_type": "Cluster",
"ref": "internal",
"modules": {
"1": {
"instrument_type": "QCM",
"complex_output_0": {
"distortion_correction_latency_compensation": (
DistortionCorrectionLatencyEnum.EXP0
| DistortionCorrectionLatencyEnum.EXP1
| DistortionCorrectionLatencyEnum.EXP3
)
}
}
}
}
}
}
Each DistortionCorrectionLatencyEnum
value specifies which type of correction delay to compensate for; see possible values: DistortionCorrectionLatencyEnum
You can combine multiple flags using the bitwise OR (|) operator to enable compensation for multiple filters