![]() |
A fake device that was created to ensure certain Device validation features are
Inherits From: Device
cirq.testing.ValidatingTestDevice(
qubits: AbstractSet[cirq.ops.Qid
],
name: str = 'ValidatingTestDevice',
allowed_gates: Tuple[type, ...] = (ops.Gate,),
allowed_qubit_types: Tuple[type, ...] = (devices.GridQubit,),
validate_locality: bool = False,
auto_decompose_gates: Tuple[type, ...] = tuple()
)
leveraged in Circuit functions. It contains the minimum set of features that tests require. Feel free to extend the features here as needed.
Args | |
---|---|
qubits
|
set of qubits on this device |
name
|
the name for repr |
allowed_gates
|
tuple of allowed gate types |
allowed_qubit_types
|
tuple of allowed qubit types |
validate_locality
|
if True, device will validate 2 qubit operations (except MeasurementGateOperations) whether the two qubits are adjacent. If True, GridQubits are assumed to be part of the allowed_qubit_types |
auto_decompose_gates
|
when set, for given gates it calls the cirq.decompose protocol |
Methods
can_add_operation_into_moment
can_add_operation_into_moment(
operation: "cirq.Operation",
moment: "cirq.Moment"
) -> bool
Determines if it's possible to add an operation into a moment.
For example, on the XmonDevice two CZs shouldn't be placed in the same moment if they are on adjacent qubits.
Args | |
---|---|
operation
|
The operation being added. |
moment
|
The moment being transformed. |
Returns | |
---|---|
Whether or not the moment will validate after adding the operation. |
decompose_operation
decompose_operation(
operation: "ops.Operation"
) -> "ops.OP_TREE"
Returns a device-valid decomposition for the given operation.
This method is used when adding operations into circuits with a device specified, to avoid spurious failures due to e.g. using a Hadamard gate that must be decomposed into native gates.
qubit_set
qubit_set() -> Optional[AbstractSet['cirq.Qid']]
Returns a set or frozenset of qubits on the device, if possible.
Returns | |
---|---|
If the device has a finite set of qubits, then a set or frozen set
of all qubits on the device is returned.
If the device has no well defined finite set of qubits (e.g.
|
validate_circuit
validate_circuit(
circuit: "cirq.Circuit"
) -> None
Raises an exception if a circuit is not valid.
Args | |
---|---|
circuit
|
The circuit to validate. |
Raises | |
---|---|
ValueError
|
The circuit isn't valid for this device. |
validate_moment
validate_moment(
moment: "cirq.Moment"
) -> None
Raises an exception if a moment is not valid.
Args | |
---|---|
moment
|
The moment to validate. |
Raises | |
---|---|
ValueError
|
The moment isn't valid for this device. |
validate_operation
validate_operation(
operation: cirq.ops.Operation
) -> None
Raises an exception if an operation is not valid.
Args | |
---|---|
operation
|
The operation to validate. |
Raises | |
---|---|
ValueError
|
The operation isn't valid for this device. |