  Noisy Intermediate-Scale Quantum Computing (NISQ) has dominated headlines in
recent years, with the longer-term vision of Fault-Tolerant Quantum Computation
(FTQC) offering significant potential albeit at currently intractable resource
costs and quantum error correction (QEC) overheads. For problems of interest,
FTQC will require millions of physical qubits with long coherence times,
high-fidelity gates, and compact sizes to surpass classical systems. Just as
heterogeneous specialization has offered scaling benefits in classical
computing, it is likewise gaining interest in FTQC. However, systematic use of
heterogeneity in either hardware or software elements of FTQC systems remains a
serious challenge due to the vast design space and variable physical
constraints.
  This paper meets the challenge of making heterogeneous FTQC design practical
by introducing HetArch, a toolbox for designing heterogeneous quantum systems,
and using it to explore heterogeneous design scenarios. Using a hierarchical
approach, we successively break quantum algorithms into smaller operations
(akin to classical application kernels), thus greatly simplifying the design
space and resulting tradeoffs. Specializing to superconducting systems, we then
design optimized heterogeneous hardware composed of varied superconducting
devices, abstracting physical constraints into design rules that enable devices
to be assembled into standard cells optimized for specific operations. Finally,
we provide a heterogeneous design space exploration framework which reduces the
simulation burden by a factor of 10^4 or more and allows us to characterize
optimal design points. We use these techniques to design superconducting
quantum modules for entanglement distillation, error correction, and code
teleportation, reducing error rates by 2.6x, 10.7x, and 3.0x compared to
homogeneous systems.
