@@ -11,10 +11,13 @@ option java_multiple_files = true;
11
11
// This message specifies information that is needed when sending a
12
12
// Program message to the device.
13
13
message DeviceSpecification {
14
-
15
14
// A list of allowed gatesets for programs submitted to this processor
16
15
// Language.gate_set should be one of these values to be valid.
17
- repeated GateSet valid_gate_sets = 1 ;
16
+ repeated GateSet valid_gate_sets = 1 [deprecated = true ];
17
+
18
+ // The device gateset.
19
+ // Contains the list of gates allowed in programs submitted to this processor.
20
+ repeated GateSpecification valid_gates = 5 ;
18
21
19
22
// A list of allowed ids for qubits within the Program.
20
23
// Any programs with ids not in this list will be rejected.
@@ -30,12 +33,56 @@ message DeviceSpecification {
30
33
string developer_recommendations = 4 ;
31
34
}
32
35
36
+ // This contains information about a single device gate.
37
+ // Replaces `GateDefinition`.
38
+ message GateSpecification {
39
+ // This defines the approximate duration to run the gate on the device,
40
+ // specified as an integer number of picoseconds.
41
+ int64 gate_duration_picos = 1 ;
42
+
43
+ // Valid targets that this gate can use.
44
+ // Values in this list correspond to the name of the TargetSet
45
+ // If unset, all combinations of `DeviceSpecification.valid_qubits` are
46
+ // allowed.
47
+ repeated string valid_targets = 2 ;
48
+
49
+ // This specifies the gate type and gate parameter constraints for this
50
+ // device gate.
51
+ oneof gate {
52
+ Sycamore syc = 3 ;
53
+ SqrtISwap sqrt_iswap = 4 ;
54
+ SqrtISwapInv sqrt_iswap_inv = 5 ;
55
+ CZ cz = 6 ;
56
+ PhasedXZ phased_xz = 7 ;
57
+ VirtualZPow virtual_zpow = 8 ;
58
+ PhysicalZPow physical_zpow = 9 ;
59
+ CouplerPulse coupler_pulse = 10 ;
60
+ Measurement meas = 11 ;
61
+ Wait wait = 12 ;
62
+ }
63
+
64
+ // Gate types available to Google devices.
65
+ // Future gates may have parameter constraints that are frequently updated.
66
+ // In such cases, the gate message will contain additional fields to specify
67
+ // those constraints.
68
+ message Sycamore {}
69
+ message SqrtISwap {}
70
+ message SqrtISwapInv {}
71
+ message CZ {}
72
+ message PhasedXZ {}
73
+ message VirtualZPow {}
74
+ message PhysicalZPow {}
75
+ message CouplerPulse {}
76
+ message Measurement {}
77
+ message Wait {}
78
+ }
79
+
33
80
message GateSet {
34
- // The name of the gate set corresponding to Language.gate_set
35
- string name = 1 ;
81
+ // The name of the gate set corresponding to Language.gate_set
82
+ string name = 1 ;
36
83
37
- // A list of valid gates permitted by this gate set
38
- repeated GateDefinition valid_gates = 2 ;
84
+ // A list of valid gates permitted by this gate set
85
+ repeated GateDefinition valid_gates = 2 ;
39
86
}
40
87
41
88
message GateDefinition {
@@ -61,13 +108,12 @@ message GateDefinition {
61
108
62
109
// A description of an argument to an operation.
63
110
message ArgDefinition {
64
-
65
111
// Note: This should be kept in sync with the ArgValue proto
66
112
enum ArgType {
67
- UNSPECIFIED = 0 ;
68
- FLOAT = 1 ;
69
- REPEATED_BOOLEAN = 2 ;
70
- STRING = 3 ;
113
+ UNSPECIFIED = 0 ;
114
+ FLOAT = 1 ;
115
+ REPEATED_BOOLEAN = 2 ;
116
+ STRING = 3 ;
71
117
}
72
118
73
119
// The name of the argument
@@ -82,7 +128,7 @@ message ArgDefinition {
82
128
83
129
// This should only be populated for type FLOAT.
84
130
// If not set, all float values are allowed.
85
- repeated ArgumentRange allowed_ranges = 3 ;
131
+ repeated ArgumentRange allowed_ranges = 3 ;
86
132
}
87
133
88
134
// Minimum value is inclusive and maximum value is exclusive.
0 commit comments