mqt-qcec
mqt-qcec copied to clipboard
Segmentation fault and bus error when running qcec
Environment information
OS: MacOS MQT version: 2.6.0 Compiler: C++
Description
I'm trying to run a circuit equivalence check for two particular circuits (Steane code). There are no mid-circuit measurements, and I have I get
- segmentation fault with
qcec.verify("circ1.qasm", "circ2.qasm", transform_dynamic_circuit=True)
- bus error with
qcec.verify("circ1.qasm", "circ2.qasm")
Circ1.qasm is an actual code of Steane code circuit Circ2.qasm is a hardware aware compiled circuit for the following coupling map:
connection=[
(0, 1),
(1, 2),
(2, 3),
(2, 5),
(4, 5),
(5, 6),
(5, 8),
(7, 8),
(8, 9),
(9, 10),
(3, 11),
(7, 12),
(10, 13),
(0, 14),
],
Qubit 13 and 14 on the coupling graph are special, and cannot be used for any gates, only measuring the rest of the qubits.
circ1.qasm:
OPENQASM 2.0;
include "qelib1.inc";
qreg q[13];
creg c[3];
x q[5];
cx q[0],q[7];
cx q[2],q[7];
cx q[4],q[7];
cx q[6],q[7];
cx q[1],q[8];
cx q[2],q[8];
cx q[5],q[8];
cx q[6],q[8];
cx q[3],q[9];
cx q[4],q[9];
cx q[5],q[9];
cx q[6],q[9];
measure q[7] -> c[0];
measure q[8] -> c[1];
measure q[9] -> c[2];
circ2.qasm
OPENQASM 2.0;
include "qelib1.inc";
qreg q[15];
creg c[3];
cx q[3],q[2];
cx q[7],q[8];
cx q[9],q[8];
cx q[5],q[8];
cx q[5],q[2];
cx q[1],q[2];
cx q[2],q[1];
cx q[1],q[2];
cx q[4],q[5];
cx q[5],q[4];
cx q[4],q[5];
cx q[2],q[5];
cx q[8],q[9];
cx q[9],q[8];
cx q[8],q[9];
cx q[8],q[5];
cx q[3],q[11];
cx q[11],q[3];
cx q[3],q[11];
cx q[2],q[3];
cx q[3],q[2];
cx q[2],q[3];
rx(pi) q[2];
cx q[2],q[5];
cx q[2],q[1];
cx q[2],q[3];
cx q[3],q[2];
cx q[2],q[3];
cx q[3],q[11];
cx q[11],q[3];
cx q[3],q[11];
cx q[7],q[12];
cx q[12],q[7];
cx q[7],q[12];
cx q[7],q[8];
cx q[8],q[7];
cx q[7],q[8];
cx q[7],q[12];
cx q[8],q[9];
cx q[8],q[5];
cx q[5],q[8];
cx q[8],q[5];
cx q[5],q[8];
cx q[2],q[5];
cx q[5],q[2];
cx q[2],q[5];
cx q[2],q[1];
cx q[0],q[1];
cx q[1],q[0];
cx q[0],q[1];
cx q[2],q[5];
cx q[5],q[2];
cx q[2],q[5];
cx q[9],q[10];
cx q[10],q[9];
cx q[9],q[10];
cx q[8],q[9];
cx q[9],q[8];
cx q[8],q[9];
cx q[12],q[7];
cx q[7],q[12];
cx q[7],q[12];
cx q[12],q[7];
cx q[7],q[12];
measure q[13] -> c[0];
measure q[10] -> c[0];
cx q[9],q[10];
cx q[10],q[9];
cx q[9],q[10];
measure q[13] -> c[1];
measure q[10] -> c[1];
measure q[14] -> c[2];
measure q[0] -> c[2];
Expected behavior
Output with whether circuits are equivalent or not
How to Reproduce
from mqt import qcec
Code:
print("With transform_dynamic_circuit")
result = qcec.verify("circ1.qasm", "circ2.qasm", transform_dynamic_circuit=True)
Terminal Output:
With transform_dynamic_circuit
zsh: segmentation fault /opt/anaconda3/envs/smt_compiler/bin/python
Code:
print("Without transform_dynamic_circuit")
result = qcec.verify("circ1.qasm", "circ2.qasm")
Terminal ouput:
Without transform_dynamic_circuit
zsh: bus error /opt/anaconda3/envs/smt_compiler/bin/python