@@ -14,8 +14,7 @@ How to define a platform for a self-hosted QPU?
14
14
The :class: `qibolab.platform.Platform ` object holds all the information required
15
15
to execute programs, and in particular :class: `qibolab.pulses.PulseSequence ` in
16
16
a real QPU. It is comprised by different objects that contain information about
17
- the qubit characterization and connectivity, the native gates and the lab's
18
- instrumentation.
17
+ the native gates and the lab's instrumentation.
19
18
20
19
The following cell shows how to define a single qubit platform from scratch,
21
20
using different Qibolab primitives.
@@ -92,8 +91,7 @@ coded following the abstract :class:`qibolab.instruments.abstract.Instrument`
92
91
interface.
93
92
94
93
Furthermore, above we defined three channels that connect the qubit to the
95
- control instrument and we assigned two native gates to the qubit. In this
96
- example we neglected or characterization parameters associated to the qubit.
94
+ control instrument and we assigned two native gates to the qubit.
97
95
These can be passed when defining the :class: `qibolab.qubits.Qubit ` objects.
98
96
99
97
When the QPU contains more than one qubit, some of the qubits are connected so
@@ -179,7 +177,7 @@ hold the parameters of the two-qubit gates.
179
177
)
180
178
181
179
# define the pair of qubits
182
- pair = QubitPair(qubit0, qubit1)
180
+ pair = QubitPair(qubit0.name , qubit1.name )
183
181
pair.native_gates = TwoQubitNatives(
184
182
CZ=FixedSequenceFactory(
185
183
PulseSequence(
@@ -222,7 +220,7 @@ coupler but qibolab will take them into account when calling :class:`qibolab.nat
222
220
# Look above example
223
221
224
222
# define the pair of qubits
225
- pair = QubitPair(qubit0, qubit1, coupler_01 )
223
+ pair = QubitPair(qubit0.name , qubit1.name )
226
224
pair.native_gates = TwoQubitNatives(
227
225
CZ=FixedSequenceFactory(
228
226
PulseSequence(
@@ -408,22 +406,6 @@ a two-qubit system:
408
406
]
409
407
}
410
408
}
411
- },
412
- "characterization" : {
413
- "single_qubit" : {
414
- "0" : {
415
- "T1" : 0.0 ,
416
- "T2" : 0.0 ,
417
- "threshold" : 0.00028502261712637096 ,
418
- "iq_angle" : 1.283105298787488
419
- },
420
- "1" : {
421
- "T1" : 0.0 ,
422
- "T2" : 0.0 ,
423
- "threshold" : 0.0002694329123116206 ,
424
- "iq_angle" : 4.912447775569025
425
- }
426
- }
427
409
}
428
410
}
429
411
@@ -433,19 +415,6 @@ we need the following changes to the previous runcard:
433
415
.. code-block :: json
434
416
435
417
{
436
- "qubits" : [
437
- 0 ,
438
- 1
439
- ],
440
- "couplers" : [
441
- 0
442
- ],
443
- "topology" : {
444
- "0" : [
445
- 0 ,
446
- 1
447
- ]
448
- },
449
418
"components" : {
450
419
"flux_coupler_01" : {
451
420
"bias" : 0.12
@@ -497,15 +466,12 @@ we need the following changes to the previous runcard:
497
466
}
498
467
}
499
468
500
- This file contains different sections: ``qubits `` is a list with the qubit
501
- names, ``couplers `` one with the coupler names , ``settings `` defines default execution parameters, ``topology `` defines
502
- the qubit connectivity (qubit pairs), ``native_gates `` specifies the calibrated
503
- pulse parameters for implementing single and two-qubit gates and
504
- ``characterization `` provides the physical parameters associated to each qubit and coupler.
469
+ This file contains different sections: ``components `` defines the configuration of channel
470
+ parameters, while ``native_gates `` specifies the calibrated pulse parameters for implementing
471
+ single and two-qubit gates.
505
472
Note that such parameters may slightly differ depending on the QPU architecture,
506
473
however the pulses under ``native_gates `` should comply with the
507
- :class: `qibolab.pulses.Pulse ` API and the parameters under ``characterization ``
508
- should be a subset of :class: `qibolab.qubits.Qubit ` attributes.
474
+ :class: `qibolab.pulses.Pulse ` API.
509
475
510
476
Providing the above runcard is not sufficient to instantiate a
511
477
:class: `qibolab.platform.Platform `. This should still be done using a
@@ -642,7 +608,7 @@ With the following additions for coupler architectures:
642
608
couplers=couplers,
643
609
)
644
610
645
- Note that this assumes that the runcard is saved as ``<folder>/parameters.yml `` where ``<folder> ``
611
+ Note that this assumes that the runcard is saved as ``<folder>/parameters.json `` where ``<folder> ``
646
612
is the directory containing ``platform.py ``.
647
613
648
614
@@ -660,21 +626,11 @@ The runcard can contain an ``instruments`` section that provides these parameter
660
626
661
627
{
662
628
"nqubits" : 2 ,
663
- "qubits" : [
664
- 0 ,
665
- 1
666
- ],
667
629
"settings" : {
668
630
"nshots" : 1024 ,
669
631
"sampling_rate" : 1000000000 ,
670
632
"relaxation_time" : 50000
671
633
},
672
- "topology" : [
673
- [
674
- 0 ,
675
- 1
676
- ]
677
- ],
678
634
"instruments" : {
679
635
"twpa_pump" : {
680
636
"frequency" : 4600000000 ,
@@ -684,22 +640,6 @@ The runcard can contain an ``instruments`` section that provides these parameter
684
640
"native_gates" : {
685
641
"single_qubit" : {},
686
642
"two_qubit" : {}
687
- },
688
- "characterization" : {
689
- "single_qubit" : {
690
- "0" : {
691
- "T1" : 0.0 ,
692
- "T2" : 0.0 ,
693
- "threshold" : 0.00028502261712637096 ,
694
- "iq_angle" : 1.283105298787488
695
- },
696
- "1" : {
697
- "T1" : 0.0 ,
698
- "T2" : 0.0 ,
699
- "threshold" : 0.0002694329123116206 ,
700
- "iq_angle" : 4.912447775569025
701
- }
702
- }
703
643
}
704
644
}
705
645
0 commit comments