예제 #1
0
def test_ops_are_consistent_with_device_graph():
    device_graph = ccr.get_linear_device_graph(3)
    qubits = cirq.LineQubit.range(3)
    circuit = cirq.Circuit(cirq.ZZ(qubits[0], qubits[2]))
    assert not ccr.ops_are_consistent_with_device_graph(
        circuit.all_operations(), device_graph)
    assert not ccr.ops_are_consistent_with_device_graph(
        [cirq.X(cirq.GridQubit(0, 0))], device_graph)
예제 #2
0
def create_circuit_and_device():
    """Construct a small circuit and a device with line connectivity
    to test the greedy router. This instance hangs router in Cirq 8.2.
    """
    num_qubits = 6
    gate_domain = {cirq.ops.CNOT: 2}
    circuit = cirq.testing.random_circuit(num_qubits,
                                          15,
                                          0.5,
                                          gate_domain,
                                          random_state=37)
    device_graph = ccr.get_linear_device_graph(num_qubits)
    return circuit, device_graph
예제 #3
0
def test_router_bad_args():
    circuit = cirq.Circuit()
    device_graph = ccr.get_linear_device_graph(5)
    with pytest.raises(ValueError):
        ccr.route_circuit(circuit, device_graph)

    algo_name = 'greedy'
    with pytest.raises(ValueError):
        ccr.route_circuit(circuit,
                          device_graph,
                          algo_name=algo_name,
                          router=ccr.ROUTERS[algo_name])

    circuit = cirq.Circuit(cirq.CCZ(*cirq.LineQubit.range(3)))
    with pytest.raises(ValueError):
        ccr.route_circuit(circuit, device_graph, algo_name=algo_name)

    circuit = cirq.Circuit(
        cirq.CZ(cirq.LineQubit(i), cirq.LineQubit(i + 1)) for i in range(5))
    with pytest.raises(ValueError):
        ccr.route_circuit(circuit, device_graph, algo_name=algo_name)
예제 #4
0
def test_get_linear_device_graph(n_qubits):
    graph = ccr.get_linear_device_graph(n_qubits)
    assert sorted(graph) == cirq.LineQubit.range(n_qubits)
    assert len(graph.edges()) == n_qubits - 1
    assert all(abs(a.x - b.x) == 1 for a, b in graph.edges())