Skip to content

Glob

Passes that deal with global gates. As of now, only one rewrite pass exists which converts global gates to single qubit gates.

GlobalToUOP

Bases: Pass

Pass to convert Global gates into single gates.

This pass rewrites the global unitary gate from the qasm2.glob dialect into multiple single gates in the qasm2.uop dialect, bringing the program closer to conforming to standard QASM2 syntax.

Usage Examples

# Define kernel
@qasm2.extended
def main():
    q1 = qasm2.qreg(1)
    q2 = qasm2.qreg(2)

    theta = 1.3
    phi = 1.1
    lam = 1.2

    qasm2.glob.u(theta=theta, phi=phi, lam=lam, registers=[q1, q2])

GlobalToUOP(dialects=main.dialects)(main)

# Run rewrite
GlobalToUOP(main.dialects)(main)

The qasm2.glob.u statement has been rewritten to individual gates:

qasm2.uop.u(q1[0], theta, phi, lam)
qasm2.uop.u(q1[0], theta, phi, lam)
qasm2.uop.u(q2[1], theta, phi, lam)