  The quantum computer has become contemporary reality, with the first
two-qubit machine of mere decades ago transforming into cloud-accessible
devices with tens, hundreds, or -- in a few cases -- even thousands of qubits.
While such hardware is noisy and still relatively small, the increasing number
of operable qubits raises another challenge: how to develop the now-sizeable
quantum circuits executable on these machines. Preparing circuits manually for
specifications of any meaningful size is at best tedious and at worst
impossible, creating a need for automation. This article describes an automated
quantum-software toolkit for synthesis, compilation, and optimization, which
transforms classically-specified, irreversible functions into both
technology-independent and technology-dependent quantum circuits. We also
describe and analyze the toolkit's application to three situations -- quantum
read-only memories, quantum random number generators, and quantum oracles --
and illustrate the toolkit's start-to-finish features, from the input of
classical functions to the output of technology-dependent quantum circuits.
Furthermore, we illustrate how the toolkit enables research beyond circuit
synthesis, including comparison of synthesis and optimization methods and
deeper understanding of even well-studied quantum algorithms. As quantum
hardware continues to develop, such quantum circuit toolkits will play a
critical role in realizing its potential.
