# PCells

## Gallery

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/b2619f378e415fb0867ce0aac8a043fd/cells-1.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1476dd14d426ede8b130db5ffb79228c/cells-1.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6f4b0bab6ca9024b16d895fd7b97afae/cells-1.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f0860f9023e2264c765525b43fcf7f7a/cells-1.png))

![image](_build/html/plot_directive/cells-1.svg)![image](_build/html/plot_directive/cells-1_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/b6303f3d52f960ff44fe6016c8ddb710/cells-2.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8347b76d9f74e8517d8be29220b3cc54/cells-2.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3a0f09f4cb37f278f4ad5bd7d0c78fb5/cells-2.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/44eb3a871c86b8b0355985c077dddb9a/cells-2.png))

![image](_build/html/plot_directive/cells-2.svg)![image](_build/html/plot_directive/cells-2_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f59bd5ee2c0e2da21be563a03c6a5b5b/cells-3.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/108063263c5cc41d4ab9e0d4bb13043e/cells-3.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3cec7de87369dbe5fcc0e0f0995a54b2/cells-3.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/53540cd6ee89452242d2b1cfd9d6dd58/cells-3.png))

![image](_build/html/plot_directive/cells-3.svg)![image](_build/html/plot_directive/cells-3_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/47c24c82deba2935977085d61c85ba78/cells-4.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6c2f523b20db685bdcff37ca59a6ef4a/cells-4.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8afc9fb44b2fd12fcb9b02c688cfe786/cells-4.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/36b1b1ce068f8fc1fa45de23365f7037/cells-4.png))

![image](_build/html/plot_directive/cells-4.svg)![image](_build/html/plot_directive/cells-4_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e3a791fdf85d690f0c2e8bbabfda7783/cells-5.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/0482d7d8cad8e441678e5086de9ffca5/cells-5.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/49944dd77d576d94f6e9894888186c47/cells-5.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/d13d0f06c6b7257084c0d1295b42955f/cells-5.png))

![image](_build/html/plot_directive/cells-5.svg)![image](_build/html/plot_directive/cells-5_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6432ff9a5e45e5b8772243bd9ab288f5/cells-6.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6e613e0791ceb2fa387639e1aa65e7fa/cells-6.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/b8fca41a2ba6b7abdccc0efed6181e38/cells-6.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/40cb58143e2df66527e57f7a7ec38c3b/cells-6.png))

![image](_build/html/plot_directive/cells-6.svg)![image](_build/html/plot_directive/cells-6_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/33d4615631619ccb4489ac40fadb5281/cells-7.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/deb3119924bb2244274f37b3019333e7/cells-7.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/efc491db91da9a2d083d28af0fc3e982/cells-7.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/cd77ab88dd93bb86546e3042ac3459ac/cells-7.png))

![image](_build/html/plot_directive/cells-7.svg)![image](_build/html/plot_directive/cells-7_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a210124d2b04c76d9ce097b11b70a8e2/cells-8.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/dcb56da818d554bdec86358a806f895a/cells-8.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c0545fb3e9c950427bc282357caa2a60/cells-8.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/24f0078a71f09c1a3fbb95b234dc9826/cells-8.png))

![image](_build/html/plot_directive/cells-8.svg)![image](_build/html/plot_directive/cells-8_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c7f62c175d8c8eb4448c0c8ed50c9e3f/cells-9.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c51271c39e099425507b2a9c01019b6d/cells-9.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/5f0b62305b2198edfcf25e14663b6985/cells-9.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/0029ee314a590f4edeb54674c3793f26/cells-9.png))

![image](_build/html/plot_directive/cells-9.svg)![image](_build/html/plot_directive/cells-9_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6c5d6e208bdd3ffda82ff507e1354153/cells-10.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/26707e7e1c3c7f6ac26946fbb7e7e36b/cells-10.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/d93ab7e254156b4900d554ecda858eec/cells-10.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/deacdd2daba3fda5c6c1df1739043635/cells-10.png))

![image](_build/html/plot_directive/cells-10.svg)![image](_build/html/plot_directive/cells-10_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/9e354fdb185200eec19c804395de417e/cells-11.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/2232cc8e94e42a96389bc2e61abeac1b/cells-11.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/507c14fec9f26bdb31d596bf8a2637d8/cells-11.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/414d670826a7068001c4502093b975e7/cells-11.png))

![image](_build/html/plot_directive/cells-11.svg)![image](_build/html/plot_directive/cells-11_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f567313abf4b740e74e7eb9f766488ff/cells-12.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/94b0f499b627bd1513d3443ed1b6ef14/cells-12.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4ede906ec453d6d5b44c2ca60915104a/cells-12.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/0a76b1618291c3850573723d23b6a0f7/cells-12.png))

![image](_build/html/plot_directive/cells-12.svg)![image](_build/html/plot_directive/cells-12_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/67594c9c04c48dc5a2b135795b9d1f99/cells-13.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8b0d31e69d8772d7837453d9f03b094b/cells-13.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ee8471712a912cf59d38465213d95116/cells-13.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bb6780429cd09889a5280a7f8531aebd/cells-13.png))

![image](_build/html/plot_directive/cells-13.svg)![image](_build/html/plot_directive/cells-13_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c4eef9182a07b22b2f35958702e5da2a/cells-14.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ac1908a42b06ef68650277dcebff2840/cells-14.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/648ff9e5d3ae05cde149d233bf612c15/cells-14.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c03774bc91425efb5b784fb634a2b21d/cells-14.png))

![image](_build/html/plot_directive/cells-14.svg)![image](_build/html/plot_directive/cells-14_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3258748bd1e72caa50049eadc36788ad/cells-15.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/9cea7d57cb951b48a106009f66708cfd/cells-15.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/27aef150c2272d960414a4046dc52872/cells-15.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/b2b836277412b1d71a2b57bf84242081/cells-15.png))

![image](_build/html/plot_directive/cells-15.svg)![image](_build/html/plot_directive/cells-15_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c04cbc5fc6e6a8a39e6b2f9b35ab1593/cells-16.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/36794492e8057c97d0d7823857ebbd6a/cells-16.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/70389f1306a6f312e66d9b268644e949/cells-16.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/0f5013d75b34d91813104ed4647f173f/cells-16.png))

![image](_build/html/plot_directive/cells-16.svg)![image](_build/html/plot_directive/cells-16_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/85e5c55029a518b2bcc772763bdc784a/cells-17.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e7e1c3283e2ca24769662d3f88d0752f/cells-17.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c492bb1bf20e7839e95c98e77803fe1c/cells-17.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/2723303757ca44ef66c6fcd281d3ca07/cells-17.png))

![image](_build/html/plot_directive/cells-17.svg)![image](_build/html/plot_directive/cells-17_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4bf0c0af1936e42989db70e7c4a5ed24/cells-18.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bb0d2236fbcf6251e5a1df3585bdab5e/cells-18.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/245d67e37034bc352507a6acdc47cc4b/cells-18.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4cc61de643dd5bed89585fb56bb772d9/cells-18.png))

![image](_build/html/plot_directive/cells-18.svg)![image](_build/html/plot_directive/cells-18_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/2b8b5a2bca8c3e751ddf9852349a39f9/cells-19.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6ae19982da49fd450d8506298877f858/cells-19.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e268b0f67bc1294e29af646eb05c3963/cells-19.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/2f0e6e9fc4014cde80904ef2a06de4e8/cells-19.png))

![image](_build/html/plot_directive/cells-19.svg)![image](_build/html/plot_directive/cells-19_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e6a4771dc4396e7e22bd78d0db4c6a09/cells-20.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/29aafd465c77a6c7a78af9b3a705a84d/cells-20.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f786e6b7618759a75cfaaf87f61f5bfd/cells-20.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6d218ee6a9d9aec22c1ca1a76f0353ba/cells-20.png))

![image](_build/html/plot_directive/cells-20.svg)![image](_build/html/plot_directive/cells-20_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3ab4506589244fd3e5cda38a17662a97/cells-21.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/b4dfc739b367eba24fbd256f0d6963c9/cells-21.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/9efbeedc9162db9be9f7a1dfd51e5896/cells-21.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/9a5ac8b01e08fa013cc2fc576905fa18/cells-21.png))

![image](_build/html/plot_directive/cells-21.svg)![image](_build/html/plot_directive/cells-21_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e931d7646d701f9f0054a54c3b62af91/cells-22.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4572ecd44cec8ef683bc725df9c02039/cells-22.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c469870973b74ec64cce36a2a33b6645/cells-22.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/9347e865c9428d502f7a413b9e6b85ef/cells-22.png))

![image](_build/html/plot_directive/cells-22.svg)![image](_build/html/plot_directive/cells-22_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1797254f73ff7e58fd45ae6cc6cfdbd7/cells-23.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bf637dc72041fb5d93e91f9ad99ce03b/cells-23.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/0997b260cbc0dd4d8621744a2cb7b25a/cells-23.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7147716851e49638c22807064d6dd39b/cells-23.png))

![image](_build/html/plot_directive/cells-23.svg)![image](_build/html/plot_directive/cells-23_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/0abffb7cf1d5a7a8addfc47ceafd19f0/cells-24.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1a74a3628ca1392b70df2447f408af41/cells-24.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ecafdf3f9945347b2a52c922150e9f25/cells-24.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/04c56076bdbfffdcfe45b221ba928db3/cells-24.png))

![image](_build/html/plot_directive/cells-24.svg)![image](_build/html/plot_directive/cells-24_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/35878d75b9a8ab94d4eaae1b3164c15a/cells-25.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/16bf3a414f94c811bb9ca3ed367a27d9/cells-25.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/5346224301d2a9a68882f147f506803c/cells-25.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1d0cf492399f5f9f8073b89ea2b63e01/cells-25.png))

![image](_build/html/plot_directive/cells-25.svg)![image](_build/html/plot_directive/cells-25_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f676733405b5b7a902ed7226ce3fca12/cells-26.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/d323675d82b9e3c3949842cb80b33706/cells-26.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a4cfafda6891dd354de729ae55216c4f/cells-26.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a6b72816aeb911e431092bb9bc47c3c0/cells-26.png))

![image](_build/html/plot_directive/cells-26.svg)![image](_build/html/plot_directive/cells-26_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e1c4fe3039ce203eea6de803cc7d5f8f/cells-27.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/58f17c052ba6e0568a64fe3589c70531/cells-27.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e7b7db14b745ccf39ca4d94ef9ad3230/cells-27.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/932651f3bc355530cf0b9c785920abb7/cells-27.png))

![image](_build/html/plot_directive/cells-27.svg)![image](_build/html/plot_directive/cells-27_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/b2e8d9fb4d45da61e8a78c1a9d824956/cells-28.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/011cd2ada93760cbfc1f64652fb84bf5/cells-28.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/2a39bc55b3a4cada33aae54f96dd37b9/cells-28.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f303a5fe4eac5567597dc7cd3ecee93a/cells-28.png))

![image](_build/html/plot_directive/cells-28.svg)![image](_build/html/plot_directive/cells-28_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/217dd1d60e24f3530d7a37477887ab0a/cells-29.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4fff9d6f8358b53b33e5b95d1c142f6b/cells-29.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e927362459f9ef0653178ff2d31cf48f/cells-29.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a2c63546d3a0f457a36f3ccff8354e0e/cells-29.png))

![image](_build/html/plot_directive/cells-29.svg)![image](_build/html/plot_directive/cells-29_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ff45763b71624f771a68ced98fb665e3/cells-30.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/27d482a8647841986d11c58d192a3328/cells-30.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8a5fd5388889de212ffd286f6b17f38c/cells-30.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ccf619bdc3057ec222d57fc5d45a4958/cells-30.png))

![image](_build/html/plot_directive/cells-30.svg)![image](_build/html/plot_directive/cells-30_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/33f6fe556070686bd333e58a1741eba7/cells-31.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bcbe3fe7c6d6087e9aef1887498ee303/cells-31.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7e6c82ed44ba5748ae6916a649d8cc15/cells-31.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1406a2f02b9d451496afebf39e7ee754/cells-31.png))

![image](_build/html/plot_directive/cells-31.svg)![image](_build/html/plot_directive/cells-31_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6dc4d3facca47e19c28e83a4bb98c714/cells-32.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4c2885b088b0927a1513777004574454/cells-32.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/44cb9783bfc08d614c26f7aa1ffc0575/cells-32.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/38087ca8f598728fbfecbba9b9ad4917/cells-32.png))

![image](_build/html/plot_directive/cells-32.svg)![image](_build/html/plot_directive/cells-32_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/d20a5e6f7b5d03f9c8df049180555d39/cells-33.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/aa8a98e1e16cfd97a3e32e596425fc2d/cells-33.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/93bd295d62592ff208dc60216eeb172e/cells-33.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/68a2dd556dd9b43d28e259a7b096d854/cells-33.png))

![image](_build/html/plot_directive/cells-33.svg)![image](_build/html/plot_directive/cells-33_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3d60ea2aa4891c12c3bd24614f58c16b/cells-34.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bc3fa9bedc7eba69c12f5bf8d3255a22/cells-34.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/cfa787d156056e1596220432fa514c20/cells-34.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/76b40347d1721671cca1515364f1458a/cells-34.png))

![image](_build/html/plot_directive/cells-34.svg)![image](_build/html/plot_directive/cells-34_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/57e769375c2860938be0d4739a288c4d/cells-35.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bd859d3b7ecf14473b6f8c1c9429664c/cells-35.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a8fb5b84a70bc7d0b703467ed18f18d2/cells-35.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/743614408bb0495a7a63cb396554d2c6/cells-35.png))

![image](_build/html/plot_directive/cells-35.svg)![image](_build/html/plot_directive/cells-35_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/87bbc63615467730a03ccf7885e3a2a7/cells-36.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8bff720cae278c74a4b22fba2f42a49c/cells-36.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/474856a37838476b66504d7e5999f344/cells-36.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/fbdea23d0ba07004ae4fe7d4b537b45f/cells-36.png))

![image](_build/html/plot_directive/cells-36.svg)![image](_build/html/plot_directive/cells-36_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/cac13b463d0c93813767af32d36a3513/cells-37.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3f072ccdb3b9c9289ba5c50ebf530ca6/cells-37.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/61ee7c682346f7afc33edaeeb24bcd13/cells-37.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3c37e7dfca937b89adff167f83f0071e/cells-37.png))

![image](_build/html/plot_directive/cells-37.svg)![image](_build/html/plot_directive/cells-37_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/2b4497d1fde87fb3c833c72cca013466/cells-38.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f743c883efa23a6b6e18c81ba2263c13/cells-38.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/9c78394b92a774b6a1fe5612422d8af1/cells-38.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e63021b38db48b448d0a941bf1df9451/cells-38.png))

![image](_build/html/plot_directive/cells-38.svg)![image](_build/html/plot_directive/cells-38_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/856ecfd67a0ba3cef2819cd9a9739dc9/cells-39.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a543d12f5e658b32f9b7dcf054f77b5b/cells-39.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/2d770ea2fad54853a24086ff0048f86a/cells-39.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a08b84652251c6822f3690fcc28577de/cells-39.png))

![image](_build/html/plot_directive/cells-39.svg)![image](_build/html/plot_directive/cells-39_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/395d7a1425b5d6c83d41d10d739f5465/cells-40.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bd94560d85661f62e1a937881335e8df/cells-40.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/5e47d833fec258271b4fc28b40d09fb0/cells-40.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/19734c45cb7e398fd9c47ad87d9953c7/cells-40.png))

![image](_build/html/plot_directive/cells-40.svg)![image](_build/html/plot_directive/cells-40_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/90ac6ee573ab1915179f12a185d7685a/cells-41.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/5f7ba11e7ac5bb2150d8d95c585c1180/cells-41.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/997ad12e2484baa8f52eeb12cea4d23a/cells-41.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7cb0a24838fba440fb5f028c551eeb6e/cells-41.png))

![image](_build/html/plot_directive/cells-41.svg)![image](_build/html/plot_directive/cells-41_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e23ad48c3326d55f7a1b2017216eab53/cells-42.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/fcb8f73acb3d92ff473630d1db184dde/cells-42.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/db6ab9ef11c407549b454fe4c2b87657/cells-42.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ce1f734855a97903d97bef05f1d2a42d/cells-42.png))

![image](_build/html/plot_directive/cells-42.svg)![image](_build/html/plot_directive/cells-42_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a8aa8a6deab4e422f528b8bde256642c/cells-43.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7a80f69112537a8ddb46f2ea00025cef/cells-43.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/84ebd40f4013a453f21f57d8de3074d0/cells-43.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6d7115a05b6dd2e227bb941d88dae1c6/cells-43.png))

![image](_build/html/plot_directive/cells-43.svg)![image](_build/html/plot_directive/cells-43_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/0e73a81663877fdeee954d8fb2244c32/cells-44.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/886b9a1a63968d6a1fadf0ae5d6fc42a/cells-44.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/62673a80fc8ce60e30c0fc640cfdb689/cells-44.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6f2cd255e1e31bdbe469735608091b9c/cells-44.png))

![image](_build/html/plot_directive/cells-44.svg)![image](_build/html/plot_directive/cells-44_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e964122b2105e43ae34e3ac924a8770c/cells-45.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a1951467119a5f10166408f5b05ae34d/cells-45.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/dc7fd10ed453346c521baa2fc71a27a6/cells-45.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/624639eaa39ba5d78d894d257e1f1538/cells-45.png))

![image](_build/html/plot_directive/cells-45.svg)![image](_build/html/plot_directive/cells-45_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/05924d7165f7e1d5abced19ce531a5a8/cells-46.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6ed65489c287aad7e99613d67b2dd4ad/cells-46.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bbb40378d4d24c9749bbe6bd4969603d/cells-46.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/37e3ea0bbce585a43f649cb00f262adf/cells-46.png))

![image](_build/html/plot_directive/cells-46.svg)![image](_build/html/plot_directive/cells-46_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7b9368985d486f5eb779271c406d6dec/cells-47.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ffd0c92033eadbb0e1acab100544d537/cells-47.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1b4cbf8066ddf3dce2aca2f5aa2941c7/cells-47.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3ecfe77ef07bb23129a6f92177b7ef85/cells-47.png))

![image](_build/html/plot_directive/cells-47.svg)![image](_build/html/plot_directive/cells-47_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/532390e787d27ffb42d0fe72789fa203/cells-48.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c2dd9041f274ba22e85f746a2a3d0d96/cells-48.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f1d648bbf1d48ab20b4d9bb79ddb90e8/cells-48.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bb3d855c5ccea0eb98d6dc066cc6cffe/cells-48.png))

![image](_build/html/plot_directive/cells-48.svg)![image](_build/html/plot_directive/cells-48_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8f9e165edfac1cf012c934035f3b3f7a/cells-49.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/63cb89c26ebe99976fe31dfcf8f57234/cells-49.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ddcfa00c5fc561699acfb8e7f8772b24/cells-49.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/75155909f694656ba028c1304c784150/cells-49.png))

![image](_build/html/plot_directive/cells-49.svg)![image](_build/html/plot_directive/cells-49_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/25a31132408d8bb0234d4e234688d1c0/cells-50.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f0d4c66094a794f6714d6e8bfca2d272/cells-50.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/fbd230d222a238d6cadfc77285164458/cells-50.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4233e3f5909d6035e56447de9944c91e/cells-50.png))

![image](_build/html/plot_directive/cells-50.svg)![image](_build/html/plot_directive/cells-50_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/40559d2a7e95428545d6c5e04dae3e8d/cells-51.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a835066e4f4b78f948dcd3b31c802ef9/cells-51.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8380b846fffd7ef28d4f52bcf972997f/cells-51.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8372644d050f62e27b2e9e7f44548cca/cells-51.png))

![image](_build/html/plot_directive/cells-51.svg)![image](_build/html/plot_directive/cells-51_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1811c0aae43364aa13f9e969c4567a1e/cells-52.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/3948231628c949b5605b27d229b31dcb/cells-52.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/736bcb743bc76115905899ea06a70e3f/cells-52.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/9c4a2bf48555fa1f9bffaaa36a573819/cells-52.png))

![image](_build/html/plot_directive/cells-52.svg)![image](_build/html/plot_directive/cells-52_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/be571c4710163f092b8a8a1755058df8/cells-53.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ddc2f44ef8ac51503e126e9d2bf68e50/cells-53.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/d965ac66c99968adbd56c80e976134a4/cells-53.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/5c35e3ad9152325c78b6743eb9378a19/cells-53.png))

![image](_build/html/plot_directive/cells-53.svg)![image](_build/html/plot_directive/cells-53_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/4b95ce74851aa4166c1f0950e09043e0/cells-54.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/386cde75c026e8a0d75301611e6c00ea/cells-54.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ad2633c2c0291eb516881e067bd22e04/cells-54.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8dc0c66eec15d8c52134fdbad9b4249c/cells-54.png))

![image](_build/html/plot_directive/cells-54.svg)![image](_build/html/plot_directive/cells-54_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1f41983053f23c00c379d7e39c226bc7/cells-55.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ef3994d9fe59e8133afe2efda397542f/cells-55.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/d2b28acc1c9e1b73e23d04a918ba0c5f/cells-55.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/62bb155186d62aef443dd8af6a9eb6e0/cells-55.png))

![image](_build/html/plot_directive/cells-55.svg)![image](_build/html/plot_directive/cells-55_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/20ec8ac74010eb011f7824dcc0a0a4fc/cells-56.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/ab8a46559baae49a1dbd5f542e48f4d2/cells-56.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/b6e257a21cd22cc1f4209cb4c7a0f9d8/cells-56.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/49bc65da9b4c29cd9f4ef0c3f84d33a9/cells-56.png))

![image](_build/html/plot_directive/cells-56.svg)![image](_build/html/plot_directive/cells-56_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7230325b0167b5fbdf6ea687ee37ffac/cells-57.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/a5653d60b68bf651b7308e1dc94506c8/cells-57.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8a7344a071510ed519fb72f05445b859/cells-57.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f67e1b0fc31a6cfc8d056d4116d625c5/cells-57.png))

![image](_build/html/plot_directive/cells-57.svg)![image](_build/html/plot_directive/cells-57_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/96213cdbf68a13e5305525bc31484a6a/cells-58.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6548c8e540688a431a05db394524658f/cells-58.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/1097b0de856dc80fc6310883ddde13f1/cells-58.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/c2a39e6cc8f992e08b3d2584e5519450/cells-58.png))

![image](_build/html/plot_directive/cells-58.svg)![image](_build/html/plot_directive/cells-58_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/f1d9b0e28d8c1317c91efe2401d805a6/cells-59.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6a0f545ddcf488a419076a19e437d7ea/cells-59.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/5867f14e880eb09a3d6afc9656d23d04/cells-59.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/73bbcc8f693be2cc1dd6fef9c80a89ff/cells-59.png))

![image](_build/html/plot_directive/cells-59.svg)![image](_build/html/plot_directive/cells-59_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/eb93affce9e892969a91432119d37e04/cells-60.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7e38a1a59738aa968cfe5482acb54207/cells-60.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/8981b7ddd325eaef1d858bd24fa5324a/cells-60.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/300d86d191711cf55ad417820d9fee52/cells-60.png))

![image](_build/html/plot_directive/cells-60.svg)![image](_build/html/plot_directive/cells-60_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/d5e1990dfe7668e3422f7ef8151dae6b/cells-61.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6e8b45581d63a84601fafc6e353a81ec/cells-61.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/6524ae2e3d210c7695c8842bc31b08cd/cells-61.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/e0912cf6981b1b6e7be63b4b577b0f30/cells-61.png))

![image](_build/html/plot_directive/cells-61.svg)![image](_build/html/plot_directive/cells-61_dark.svg)

([`Source code`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/39546c24d564b815a9c1f6a5466ff797/cells-62.py), [`svg`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/bf0b4945f8075f6e86fb05dc4d4cae99/cells-62.svg), [`pdf`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/7bbda7cd7879471deec59dc6221d720a/cells-62.pdf), [`png`](https://gdsfactory.github.io/quantum-rf-pdk/_downloads/703702671386e0131937220a2eb86672/cells-62.png))

![image](_build/html/plot_directive/cells-62.svg)![image](_build/html/plot_directive/cells-62_dark.svg)

## API Reference

### airbridge

### qpdk.cells.airbridge(bridge_length=30.0, bridge_width=8.0, pad_width=15.0, pad_length=12.0, bridge_layer=<LayerMapQPDK.AB_DRAW: 49>, pad_layer=<LayerMapQPDK.AB_VIA: 50>)

Generate a superconducting airbridge component.

Creates an airbridge consisting of a suspended bridge span and landing pads
on either side. The bridge allows transmission lines to cross over each other
without electrical contact, which is essential for complex quantum circuit
routing without crosstalk.

![+─────────+
│ landing │  AB_VIA
│   pad   │
+─+     +─+
  │     │
  │     │ bridge  AB_DRAW
  │     │
+─+     +─+
│ landing │  AB_VIA
│   pad   │
+─────────+](_build/html/_images/svgbob-0c09c5b0e4d9c268d7b157c60e49f04342115ffd.svg)![+─────────+
│ landing │  AB_VIA
│   pad   │
+─+     +─+
  │     │
  │     │ bridge  AB_DRAW
  │     │
+─+     +─+
│ landing │  AB_VIA
│   pad   │
+─────────+](_build/html/_images/svgbob-0c09c5b0e4d9c268d7b157c60e49f04342115ffd_dark.svg)

The bridge_layer (AB_DRAW) represents the elevated metal bridge structure,
while the pad_layer (AB_VIA) represents the contact/landing pads that connect
to the underlying circuit.

#### NOTE
To be used with `ComponentAlongPath`
the unrotated version should be *oriented for placement on a horizontal line*.

* **Parameters:**
  * **bridge_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Total length of the airbridge span in µm.
  * **bridge_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the suspended bridge in µm.
  * **pad_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the landing pads in µm.
  * **pad_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of each landing pad in µm.
  * **bridge_layer** (*LayerSpec*) – Layer for the suspended bridge metal (default: AB_DRAW).
  * **pad_layer** (*LayerSpec*) – Layer for the landing pads/contacts (default: AB_VIA).
* **Returns:**
  Component containing the airbridge geometry with appropriate ports.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![airbridge](_generated/cells/airbridge.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/airbridge.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### bend_circular

### qpdk.cells.bend_circular(angle=90.0, radius=100.0, npoints=None, cross_section=<function coplanar_waveguide>, allow_min_radius_violation=True, \*\*kwargs)

Returns circular bend.

Cross-sections have a minimum value of allowed bend radius, which is half their total width.
If the user-specified radius is smaller than this value, it is adjusted to the minimum acceptable one.

* **Parameters:**
  * **angle** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Angle of the bend in degrees.
  * **radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Radius of the bend in μm.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int) *|* *None*) – Number of points for the bend (optional, cannot be used with angular_step).
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **allow_min_radius_violation** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Allow radius smaller than cross-section radius.
  * **\*\*kwargs** – Additional arguments passed to gf.c.bend_circular (e.g., angular_step).
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![bend_circular](_generated/cells/bend_circular.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/bend_circular.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### bend_circular_all_angle

### qpdk.cells.bend_circular_all_angle(radius=100.0, angle=90.0, npoints=None, layer=None, cross_section=<function coplanar_waveguide>, allow_min_radius_violation=True)

Returns circular bend with arbitrary angle.

* **Parameters:**
  * **radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Radius of the bend in μm.
  * **angle** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Angle of the bend in degrees.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int) *|* *None*) – Number of points for the bend.
  * **layer** (*LayerSpec* *|* *None*) – Layer specification.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **allow_min_radius_violation** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Allow radius smaller than cross-section radius.
* **Return type:**
  [*ComponentAllAngle*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.ComponentAllAngle)

### Static

![bend_circular_all_angle](_generated/cells/bend_circular_all_angle.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/bend_circular_all_angle.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### bend_euler

### qpdk.cells.bend_euler(angle=90.0, p=0.5, with_arc_floorplan=True, npoints=720, cross_section=<function coplanar_waveguide>, allow_min_radius_violation=True, \*\*kwargs)

Regular degree euler bend.

* **Parameters:**
  * **angle** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Angle of the bend in degrees.
  * **p** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Fraction of the bend that is curved (0-1).
  * **with_arc_floorplan** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Include arc floorplan.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of points for the bend.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **allow_min_radius_violation** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Allow radius smaller than cross-section radius.
  * **\*\*kwargs** – Additional arguments passed to gf.c.bend_euler.
* **Returns:**
  The euler bend component.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![bend_euler](_generated/cells/bend_euler.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/bend_euler.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### bend_euler_all_angle

### qpdk.cells.bend_euler_all_angle(radius=None, angle=90.0, p=0.5, with_arc_floorplan=True, npoints=None, layer=None, cross_section=<function coplanar_waveguide>, allow_min_radius_violation=True)

Returns regular degree euler bend with arbitrary angle.

* **Parameters:**
  * **radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Radius of the bend in μm.
  * **angle** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Angle of the bend in degrees.
  * **p** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Fraction of the bend that is curved (0-1).
  * **with_arc_floorplan** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Include arc floorplan.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int) *|* *None*) – Number of points for the bend.
  * **layer** (*LayerSpec* *|* *None*) – Layer specification.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **allow_min_radius_violation** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Allow radius smaller than cross-section radius.
* **Return type:**
  [*ComponentAllAngle*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.ComponentAllAngle)

### Static

![bend_euler_all_angle](_generated/cells/bend_euler_all_angle.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/bend_euler_all_angle.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### bend_s

### qpdk.cells.bend_s(size=(20.0, 3.0), npoints=99, cross_section=<function coplanar_waveguide>, allow_min_radius_violation=True, \*\*kwargs)

Return S bend with bezier curve.

stores min_bend_radius property in self.info[‘min_bend_radius’]
min_bend_radius depends on height and length

* **Parameters:**
  * **size** (*Size*) – Tuple of (length, offset) for the S bend in μm.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of points used to discretize the Bézier curve.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **allow_min_radius_violation** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Allow radius smaller than cross-section radius.
  * **\*\*kwargs** – Additional arguments passed to gf.c.bend_s.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![bend_s](_generated/cells/bend_s.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/bend_s.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### chip_edge

### qpdk.cells.chip_edge(size=(10000.0, 10000.0), width=200.0, layer='M1_ETCH')

Returns a chip edge component with hollow rectangle frame.

Creates a rectangular frame (hollow rectangle) on an etched metal layer,
typically used to define chip edge regions for proper fabrication.

* **Parameters:**
  * **size** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (tuple) Width and height of the chip edge area.
  * **width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width/thickness of the etched frame border.
  * **layer** (*LayerSpec*) – Layer to put the etched frame on.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![chip_edge](_generated/cells/chip_edge.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/chip_edge.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### coupler_straight

### qpdk.cells.coupler_straight(length=10, gap=16, cross_section='cpw', cross_section_non_resonator=None, resonator_offset=0.0)

Return two parallel coupled waveguides.

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Coupling length in μm.
  * **gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Edge-to-edge conductor gap in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **cross_section_non_resonator** (*CrossSectionSpec* *|* *None*) – Optional cross section for the upper bus.
  * **resonator_offset** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Shift the lower trace to the right, in µm.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![coupler_straight](_generated/cells/coupler_straight.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/coupler_straight.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### double_pad_transmon

### qpdk.cells.double_pad_transmon(pad_size=(250.0, 400.0), pad_gap=15.0, junction_spec=<function squid_junction>, junction_displacement=None, layer_metal=<LayerMapQPDK.M1_DRAW: 1>)

Creates a double capacitor pad transmon qubit with Josephson junction.

A transmon qubit consists of two capacitor pads connected by a Josephson junction.
The junction creates an anharmonic oscillator that can be used as a qubit.

![+---------+         +---------+
|         |         |         |
|  pad1   |   XX    |  pad2   |
|         |   XX    |         |
+---------+ junct.  +---------+
 left_pad             right_pad](_build/html/_images/svgbob-4ef4f6e45f4919abf38632c5330ece81eee21454.svg)![+---------+         +---------+
|         |         |         |
|  pad1   |   XX    |  pad2   |
|         |   XX    |         |
+---------+ junct.  +---------+
 left_pad             right_pad](_build/html/_images/svgbob-4ef4f6e45f4919abf38632c5330ece81eee21454_dark.svg)

See [[KYG+07](#id57)] for details.

* **Parameters:**
  * **pad_size** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (width, height) of each capacitor pad in μm.
  * **pad_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the two capacitor pads in μm.
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction component.
  * **junction_displacement** (*DCplxTrans* *|* [*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Optional complex transformation, or in-place
    rotation in degrees, to apply to the junction.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pads.
* **Returns:**
  A gdsfactory component with the transmon geometry.
* **Return type:**
  Component

### Static

![double_pad_transmon](_generated/cells/double_pad_transmon.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/double_pad_transmon.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### double_pad_transmon_with_bbox

### qpdk.cells.double_pad_transmon_with_bbox(bbox_extension=200.0, pad_size=(250.0, 400.0), pad_gap=15.0, junction_spec=<function squid_junction>, junction_displacement=None, layer_metal=<LayerMapQPDK.M1_DRAW: 1>, layer_etch=<LayerMapQPDK.M1_ETCH: 47>)

Creates a double capacitor pad transmon qubit with Josephson junction and an etched bounding box.

See [`double_pad_transmon()`](#qpdk.cells.double_pad_transmon) for more details.

* **Parameters:**
  * **bbox_extension** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Extension size for the bounding box in μm.
  * **pad_size** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (width, height) of each capacitor pad in μm.
  * **pad_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the two capacitor pads in μm.
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction component.
  * **junction_displacement** (*DCplxTrans* *|* [*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Optional complex transformation, or in-place
    rotation in degrees, to apply to the junction.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pads.
  * **layer_etch** (*LayerSpec*) – Layer for the etched bounding box.
* **Returns:**
  A gdsfactory component with the transmon geometry and etched box.
* **Return type:**
  Component

### Static

![double_pad_transmon_with_bbox](_generated/cells/double_pad_transmon_with_bbox.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/double_pad_transmon_with_bbox.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### double_pad_transmon_with_resonator

### qpdk.cells.double_pad_transmon_with_resonator(\*, qubit='double_pad_transmon_with_bbox', resonator=functools.partial(functools.partial(<function resonator>, open_start=False, open_end=True, start_with_bend=True), length=4000, meanders=6), resonator_meander_start=(-900, -1200), resonator_length=5000.0, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, coupler=functools.partial(<function plate_capacitor_single>, width=20, length=394), qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0))

Returns a transmon qubit coupled to a quarter wave resonator.

* **Parameters:**
  * **qubit** (*ComponentSpec*) – Qubit component.
  * **resonator** (*ComponentSpec*) – Resonator component.
  * **resonator_meander_start** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) position of the start of the resonator meander.
  * **resonator_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in µm.
  * **resonator_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections for the resonator.
  * **resonator_bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **resonator_cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **resonator_open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **resonator_open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
  * **coupler** (*ComponentSpec*) – Coupler spec.
  * **qubit_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation angle for the qubit in degrees.
  * **coupler_port** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the qubit port to position the coupler relative to.
  * **coupler_offset** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) offset for the coupler position.
* **Return type:**
  Component

### Static

![double_pad_transmon_with_resonator](_generated/cells/double_pad_transmon_with_resonator.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/double_pad_transmon_with_resonator.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### double_pad_transmon_with_resonator_and_probeline

### qpdk.cells.double_pad_transmon_with_resonator_and_probeline(\*, qubit='double_pad_transmon_with_bbox', resonator=functools.partial(functools.partial(<function resonator>, open_start=False, open_end=True, start_with_bend=True), length=4000, meanders=6), resonator_meander_start=(-900, -1200), resonator_length=5000.0, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, coupler=functools.partial(<function plate_capacitor_single>, width=20, length=394), qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0), probeline_coupler=<function coupler_straight>, probeline_coupling_gap=16.0, probeline_coupling_length=None)

Returns a transmon qubit coupled to a quarter wave resonator and a probeline.

Uses a `coupler_straight()` to couple the
resonator to a probeline. The coupling section is inserted at the start
of the resonator meander, with one waveguide carrying the resonator signal
and the other providing ports for probeline routing.

* **Parameters:**
  * **qubit** (*ComponentSpec*) – Qubit component.
  * **resonator** (*ComponentSpec*) – Resonator component.
  * **resonator_meander_start** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) position of the start of the resonator meander.
  * **resonator_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in µm.
  * **resonator_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections for the resonator.
  * **resonator_bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **resonator_cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **resonator_open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **resonator_open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
  * **coupler** (*ComponentSpec*) – Coupler spec.
  * **qubit_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation angle for the qubit in degrees.
  * **coupler_port** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the qubit port to position the coupler relative to.
  * **coupler_offset** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) offset for the coupler position.
  * **probeline_coupler** (*ComponentSpec*) – Component spec for the probeline coupling section.
  * **probeline_coupling_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the resonator and probeline
    waveguides in the coupling section in µm.
  * **probeline_coupling_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Length of the coupling section in µm.
* **Return type:**
  Component

### Static

![double_pad_transmon_with_resonator_and_probeline](_generated/cells/double_pad_transmon_with_resonator_and_probeline.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/double_pad_transmon_with_resonator_and_probeline.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### flipmon

### qpdk.cells.flipmon(inner_circle_radius=60.0, outer_ring_radius=110.0, outer_ring_width=60.0, top_circle_radius=110.0, junction_spec=<function squid_junction_long>, junction_displacement=None, layer_metal=<LayerMapQPDK.M1_DRAW: 1>, layer_metal_top=<LayerMapQPDK.M2_DRAW: 3>, junction_position_rotation=0.0)

Creates a circular transmon qubit with flipmon geometry.

A circular variant of the transmon qubit with another circle as the inner pad.

![      .─────────.
   ,─'  .─────.  '─.
 ,'   ,'       '.   '.
;    ;    .─.    ;    :  outer ring
;    ;    │*│ XX :    :  (M1_DRAW)
;    ;    '─'    ;    :
 '.   '.       ,'   ,'  inner pad
   '─.  '─────'  ,─'   (M1_DRAW)
      '─────────'
                        * = bump (center)
                       XX = junction](_build/html/_images/svgbob-c08e4d71de81cce5a06fdda9600c20a3dd247255.svg)![      .─────────.
   ,─'  .─────.  '─.
 ,'   ,'       '.   '.
;    ;    .─.    ;    :  outer ring
;    ;    │*│ XX :    :  (M1_DRAW)
;    ;    '─'    ;    :
 '.   '.       ,'   ,'  inner pad
   '─.  '─────'  ,─'   (M1_DRAW)
      '─────────'
                        * = bump (center)
                       XX = junction](_build/html/_images/svgbob-c08e4d71de81cce5a06fdda9600c20a3dd247255_dark.svg)

See [[LWJ+25](#id62), [LZY+21](#id63)]
for details about the flipmon design.

* **Parameters:**
  * **inner_circle_radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Central radius of the inner circular capacitor pad in μm.
  * **outer_ring_radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Central radius of the outer circular capacitor pad in μm.
  * **outer_ring_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the outer circular capacitor pad in μm.
  * **top_circle_radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Central radius of the top circular capacitor pad in μm.
    There is no separate width as the filled circle is not a ring.
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction component.
  * **junction_displacement** (*DCplxTrans* *|* [*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Optional complex transformation, or in-place
    rotation in degrees, to apply to the junction.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pads.
  * **layer_metal_top** (*LayerSpec*) – Layer for the other metal layer pad for flip-chip.
  * **junction_position_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation in degrees about the ring center,
    relocating the junction around the ring.
* **Returns:**
  A gdsfactory component with the circular transmon geometry.
* **Return type:**
  Component

### Static

![flipmon](_generated/cells/flipmon.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/flipmon.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### flipmon_with_bbox

### qpdk.cells.flipmon_with_bbox(inner_circle_radius=60.0, outer_ring_radius=110.0, outer_ring_width=60.0, top_circle_radius=110.0, junction_spec=<function squid_junction_long>, junction_displacement=None, layer_metal=<LayerMapQPDK.M1_DRAW: 1>, layer_metal_top=<LayerMapQPDK.M2_DRAW: 3>, layer_etch=<LayerMapQPDK.M1_ETCH: 47>, layer_etch_top=<LayerMapQPDK.M2_ETCH: 48>, m1_etch_extension_gap=30.0, m2_etch_extension_gap=40.0, junction_position_rotation=0.0)

Creates a circular transmon qubit with flipmon geometry and a circular etched bounding box.

See [`flipmon()`](#qpdk.cells.flipmon) for more details.

* **Parameters:**
  * **inner_circle_radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Central radius of the inner circular capacitor pad in μm.
  * **outer_ring_radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Central radius of the outer circular capacitor pad in μm.
  * **outer_ring_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the outer circular capacitor pad in μm.
  * **top_circle_radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Central radius of the top circular capacitor pad in μm.
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction component.
  * **junction_displacement** (*DCplxTrans* *|* [*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Optional complex transformation, or in-place
    rotation in degrees, to apply to the junction.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pads.
  * **layer_metal_top** (*LayerSpec*) – Layer for the other metal layer pad for flip-chip.
  * **layer_etch** (*LayerSpec*) – Layer for the M1 etched bounding box.
  * **layer_etch_top** (*LayerSpec*) – Layer for the M2 etched bounding box.
  * **m1_etch_extension_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Radius extension length for the M1 etch bounding box in μm.
  * **m2_etch_extension_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Radius extension length for the M2 etch bounding box in μm.
  * **junction_position_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation in degrees about the ring center,
    relocating the junction around the ring.
* **Returns:**
  A gdsfactory component with the flipmon geometry and etched box.
* **Return type:**
  Component

### Static

![flipmon_with_bbox](_generated/cells/flipmon_with_bbox.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/flipmon_with_bbox.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### flipmon_with_resonator

### qpdk.cells.flipmon_with_resonator(\*, qubit='flipmon_with_bbox', resonator=functools.partial(functools.partial(<function resonator>, open_start=False, open_end=True, start_with_bend=True), length=4000, meanders=6), resonator_meander_start=(-900, -1200), resonator_length=5000.0, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, coupler=functools.partial(<function plate_capacitor_single>, width=10, length=58), qubit_rotation=-90, coupler_port='outer_ring_outside', coupler_offset=(-10, 0))

Returns a transmon qubit coupled to a quarter wave resonator.

* **Parameters:**
  * **qubit** (*ComponentSpec*) – Qubit component.
  * **resonator** (*ComponentSpec*) – Resonator component.
  * **resonator_meander_start** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) position of the start of the resonator meander.
  * **resonator_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in µm.
  * **resonator_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections for the resonator.
  * **resonator_bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **resonator_cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **resonator_open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **resonator_open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
  * **coupler** (*ComponentSpec*) – Coupler spec.
  * **qubit_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation angle for the qubit in degrees.
  * **coupler_port** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the qubit port to position the coupler relative to.
  * **coupler_offset** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) offset for the coupler position.
* **Return type:**
  Component

### Static

![flipmon_with_resonator](_generated/cells/flipmon_with_resonator.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/flipmon_with_resonator.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### flipmon_with_resonator_and_probeline

### qpdk.cells.flipmon_with_resonator_and_probeline(\*, qubit=functools.partial(<function flipmon_with_bbox>, junction_position_rotation=180), resonator=functools.partial(functools.partial(<function resonator>, open_start=False, open_end=True, start_with_bend=True), length=4000, meanders=6), resonator_meander_start=(-900, -1200), resonator_length=5000.0, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, coupler=functools.partial(<function plate_capacitor_single>, width=10, length=58), qubit_rotation=-90, coupler_port='outer_ring_outside', coupler_offset=(-10, 0), probeline_coupler=<function coupler_straight>, probeline_coupling_gap=16.0, probeline_coupling_length=None)

Returns a transmon qubit coupled to a quarter wave resonator and a probeline.

Uses a `coupler_straight()` to couple the
resonator to a probeline. The coupling section is inserted at the start
of the resonator meander, with one waveguide carrying the resonator signal
and the other providing ports for probeline routing.

* **Parameters:**
  * **qubit** (*ComponentSpec*) – Qubit component.
  * **resonator** (*ComponentSpec*) – Resonator component.
  * **resonator_meander_start** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) position of the start of the resonator meander.
  * **resonator_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in µm.
  * **resonator_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections for the resonator.
  * **resonator_bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **resonator_cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **resonator_open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **resonator_open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
  * **coupler** (*ComponentSpec*) – Coupler spec.
  * **qubit_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation angle for the qubit in degrees.
  * **coupler_port** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the qubit port to position the coupler relative to.
  * **coupler_offset** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) offset for the coupler position.
  * **probeline_coupler** (*ComponentSpec*) – Component spec for the probeline coupling section.
  * **probeline_coupling_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the resonator and probeline
    waveguides in the coupling section in µm.
  * **probeline_coupling_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Length of the coupling section in µm.
* **Return type:**
  Component

### Static

![flipmon_with_resonator_and_probeline](_generated/cells/flipmon_with_resonator_and_probeline.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/flipmon_with_resonator_and_probeline.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### fluxonium

### qpdk.cells.fluxonium(pad_size=(250.0, 400.0), pad_gap=25.0, junction_spec=<function josephson_junction>, junction_displacement=None, junction_margin=1.0, inductor_n_turns=155, inductor_margin_x=1.0, inductor_cross_section=<function superinductor_cross_section>, connection_wire_width=2.0, layer_metal=<LayerMapQPDK.M1_DRAW: 1>)

Creates a fluxonium qubit with capacitor pads, Josephson junction, and superinductor.

![+---------+           +---------+
|         |           |         |
|         |           |         |
|  pad1   |           |  pad2   |
|         |           |         |
|         |           |         |
+----+----+           +----+----+
     |                     |
     |      JJ             |
     +======XX=============+
     |                     |
     |      inductor       |
     +---------------------+](_build/html/_images/svgbob-3e1179fcb68bad2205893f79e98f1b7166a030b8.svg)![+---------+           +---------+
|         |           |         |
|         |           |         |
|  pad1   |           |  pad2   |
|         |           |         |
|         |           |         |
+----+----+           +----+----+
     |                     |
     |      JJ             |
     +======XX=============+
     |                     |
     |      inductor       |
     +---------------------+](_build/html/_images/svgbob-3e1179fcb68bad2205893f79e98f1b7166a030b8_dark.svg)

See [[MKGD09](#id68)] and [[NLS+19](#id74)].

* **Parameters:**
  * **pad_size** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (width, height) of each capacitor pad in µm.
  * **pad_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the two capacitor pads in µm.
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction.
  * **junction_displacement** (*DCplxTrans* *|* *None*) – Optional transformation applied to the junction.
  * **junction_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Vertical margin between the junction and capacitor pads in µm.
  * **inductor_n_turns** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of horizontal meander runs. Must be odd.
  * **inductor_margin_x** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Horizontal margin for the inductor in µm.
  * **inductor_cross_section** (*CrossSectionSpec*) – Cross-section for the meander inductor.
  * **connection_wire_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the connecting wires in µm.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pads and connection wires.
* **Returns:**
  The fluxonium component.
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If inductor_n_turns is even or if pad_gap is too small.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![fluxonium](_generated/cells/fluxonium.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/fluxonium.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### fluxonium_with_bbox

### qpdk.cells.fluxonium_with_bbox(bbox_extension=200.0, pad_size=(250.0, 400.0), pad_gap=25.0, junction_spec=<function josephson_junction>, junction_displacement=None, junction_margin=1.0, inductor_n_turns=155, inductor_margin_x=1.0, inductor_cross_section=<function superinductor_cross_section>, connection_wire_width=2.0, layer_metal=<LayerMapQPDK.M1_DRAW: 1>)

Fluxonium with an etched bounding box.

* **Parameters:**
  * **bbox_extension** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Extension of the bounding box from the fluxonium edge in µm.
  * **pad_size** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (width, height) of each capacitor pad in µm.
  * **pad_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the two capacitor pads in µm.
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction.
  * **junction_displacement** (*DCplxTrans* *|* *None*) – Optional transformation applied to the junction.
  * **junction_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Vertical margin between the junction and capacitor pads in µm.
  * **inductor_n_turns** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of horizontal meander runs. Must be odd.
  * **inductor_margin_x** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Horizontal margin for the inductor in µm.
  * **inductor_cross_section** (*CrossSectionSpec*) – Cross-section for the meander inductor.
  * **connection_wire_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the connecting wires in µm.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pads and connection wires.
* **Returns:**
  The fluxonium component with a bounding box.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![fluxonium_with_bbox](_generated/cells/fluxonium_with_bbox.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/fluxonium_with_bbox.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### half_circle_coupler

### qpdk.cells.half_circle_coupler(radius=50.0, angle=180.0, extension_length=10.0, cross_section='cpw', extra_straight_length=20.0, open_end=True)

Creates a half-circle coupler for readout.

This coupler consists of a circular bend (typically 180 degrees) that wraps
around a resonator arm for capacitive coupling.

* **Parameters:**
  * **radius** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Inner radius of the half-circle in μm.
  * **angle** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Angle of the circular arc in degrees.
  * **extension_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight sections extending from the
    ends of the half-circle in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the coupler.
  * **extra_straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight section extending from the
    bottom of the half-circle in μm.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etched gap at the ends of the extensions.
* **Returns:**
  A gdsfactory component with the half-circle coupler geometry.
* **Return type:**
  Component

### Static

![half_circle_coupler](_generated/cells/half_circle_coupler.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/half_circle_coupler.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### indium_bump

### qpdk.cells.indium_bump(diameter=15.0)

Creates an indium bump component for 3D integration.

See [[RKD+17](#id79)] for details.

* **Parameters:**
  **diameter** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Diameter of the indium bump in µm.
* **Returns:**
  A gdsfactory Component representing the indium bump.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![indium_bump](_generated/cells/indium_bump.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/indium_bump.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### interdigital_capacitor

### qpdk.cells.interdigital_capacitor(fingers=4, finger_length=20.0, finger_gap=2.0, thickness=5.0, layer_metal=<LayerMapQPDK.M1_DRAW: 1>, etch_layer='M1_ETCH', etch_bbox_margin=2.0, cross_section='cpw', half=False)

Generate an interdigital capacitor component with ports on both ends.

An interdigital capacitor consists of interleaved metal fingers that create
a distributed capacitance. This component creates a planar capacitor with
two sets of interleaved fingers extending from opposite ends.

![   ┌─┐───────┐┌─┐
   │ │───────┘│ │
   │ │ ┌──────│ │
  ┌│ │ └──────│ │┐
o1└│ │──────┐ │ │┘o2
   │ │──────┘ │ │
   │ │ ┌──────│ │
   └─┘ └──────└─┘](_build/html/_images/svgbob-8fac5bd1fb1738ce669180feceaa5c3a00621a90.svg)![   ┌─┐───────┐┌─┐
   │ │───────┘│ │
   │ │ ┌──────│ │
  ┌│ │ └──────│ │┐
o1└│ │──────┐ │ │┘o2
   │ │──────┘ │ │
   │ │ ┌──────│ │
   └─┘ └──────└─┘](_build/html/_images/svgbob-8fac5bd1fb1738ce669180feceaa5c3a00621a90_dark.svg)

See for example [[LeiZhuW00](#id60)].

#### NOTE
`finger_length=0` effectively provides a parallel plate capacitor.
The capacitance scales approximately linearly with the number of fingers
and finger length.

* **Parameters:**
  * **fingers** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Total number of fingers of the capacitor (must be >= 1).
  * **finger_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of each finger in μm.
  * **finger_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between adjacent fingers in μm.
  * **thickness** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Thickness of fingers and the base section in μm.
  * **layer_metal** (*LayerSpec*) – Layer for the metal fingers.
  * **etch_layer** (*TypeAliasForwardRef* *(* *'LayerSpec'* *)*  *|* *None*) – Optional layer for etching around the capacitor.
  * **etch_bbox_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Margin around the capacitor for the etch layer in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section for the short straight from the etch box capacitor.
  * **half** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, creates a single-sided capacitor (half of the interdigital capacitor).
* **Returns:**
  A gdsfactory component with the interdigital capacitor geometry
  : and two ports (‘o1’ and ‘o2’) on opposing sides.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If fingers is less than 1.

### Static

![interdigital_capacitor](_generated/cells/interdigital_capacitor.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/interdigital_capacitor.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### josephson_junction

### qpdk.cells.josephson_junction(junction_overlap_displacement=1.8, wide_straight_length=8.3, narrow_straight_length=0.5, taper_length=4.7, cross_section_wide=<function josephson_junction_cross_section_wide>, cross_section_narrow=<function josephson_junction_cross_section_narrow>, layer_patch=<LayerMapQPDK.JJ_PATCH: 51>, size_patch=(1.5, 1.0))

Creates a single Josephson junction component.

A Josephson junction consists of two superconducting electrodes separated
by a thin insulating barrier allowing tunnelling.

![right_wide
┌───┐          ╷ overlap
│   │━━━━────╶╶╷╶╶
└───┘          ╷
               │
               │
               ┃
               ┃
             ┌───┐
             │   │
             └───┘
             left_wide](_build/html/_images/svgbob-7ef05fc44c68a5699111c18ba3af5cb51b61dedc.svg)![right_wide
┌───┐          ╷ overlap
│   │━━━━────╶╶╷╶╶
└───┘          ╷
               │
               │
               ┃
               ┃
             ┌───┐
             │   │
             └───┘
             left_wide](_build/html/_images/svgbob-7ef05fc44c68a5699111c18ba3af5cb51b61dedc_dark.svg)
* **Parameters:**
  * **junction_overlap_displacement** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Displacement of the overlap region in µm.
    Measured from the centers of the junction ports.
  * **wide_straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the wide straight section in µm.
  * **narrow_straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the narrow straight section in µm.
  * **taper_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the taper section in µm.
  * **cross_section_wide** (*CrossSectionSpec*) – Cross-section specification for the wide section.
  * **cross_section_narrow** (*CrossSectionSpec*) – Cross-section specification for the narrow section.
  * **layer_patch** (*LayerSpec*) – Layer for the patch that creates the overlap region.
  * **size_patch** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – Size of the patch that creates the overlap region.
* **Returns:**
  The Josephson junction component.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![josephson_junction](_generated/cells/josephson_junction.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/josephson_junction.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### josephson_junction_long

### qpdk.cells.josephson_junction_long(\*\*kwargs)

Josephson junction with wide_straight_length=12.

* **Returns:**
  The Josephson junction component with long wires.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![josephson_junction_long](_generated/cells/josephson_junction_long.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/josephson_junction_long.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### launcher

### qpdk.cells.launcher(straight_length=200.0, taper_length=100.0, cross_section_big=<function launcher_cross_section_big>, cross_section_small='cpw')

Generate an RF launcher pad for wirebonding or probe testing.

Creates a launcher component consisting of a straight section with large
cross-section connected to a tapered transition down to a smaller cross-section.
This design facilitates RF signal access through probes or wirebonds while
maintaining good impedance matching.

![┌───────\
│        \
│         │ ── o1
│        /
└───────/](_build/html/_images/svgbob-fce858bdb919e9c38669031a9793a2c3189ca473.svg)![┌───────\
│        \
│         │ ── o1
│        /
└───────/](_build/html/_images/svgbob-fce858bdb919e9c38669031a9793a2c3189ca473_dark.svg)

The default dimensions are taken from [[TSK+25](#id89)].

* **Parameters:**
  * **straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight, wirebond landing area, section in µm.
  * **taper_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the taper section in µm.
  * **cross_section_big** (*CrossSectionSpec*) – Cross-section specification for the large end
    of the launcher (probe/wirebond interface).
  * **cross_section_small** (*CrossSectionSpec*) – Cross-section specification for the small end
    of the launcher (circuit interface).
* **Returns:**
  A gdsfactory component containing the complete launcher
  : geometry with one output port (“o1”) at the small end.
* **Return type:**
  Component

### Static

![launcher](_generated/cells/launcher.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/launcher.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### lumped_element_resonator

### qpdk.cells.lumped_element_resonator(fingers=20, finger_length=20.0, finger_gap=2.0, finger_thickness=5.0, n_turns=15, bus_bar_spacing=4.0, cross_section=<function meander_inductor_cross_section>, etch_bbox_margin=2.0)

Creates a lumped-element resonator combining an interdigital capacitor and a meander inductor.

The resonator consists of an interdigital capacitor section (providing
capacitance) connected in parallel with a meander inductor section
(providing inductance) via shared bus bars.  The resonance frequency is:

$$
f_\text{r} = \frac{1}{2\pi\sqrt{LC}}
$$

![+-----------+
| Capacitor |
o1 --+   (IDC)   +-- o2
|           |
| Inductor  |
| (Meander) |
+-----------+](_build/html/_images/svgbob-ca0bb4b4a8e65a8af1199c7c8583e56ee0391d97.svg)![+-----------+
| Capacitor |
o1 --+   (IDC)   +-- o2
|           |
| Inductor  |
| (Meander) |
+-----------+](_build/html/_images/svgbob-ca0bb4b4a8e65a8af1199c7c8583e56ee0391d97_dark.svg)

Similar structures are described in
[[CSD+23](#id33), [KVH+11](#id55)].

* **Parameters:**
  * **fingers** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of interdigital capacitor fingers.
  * **finger_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of each capacitor finger in µm.
  * **finger_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between adjacent capacitor fingers in µm.
  * **finger_thickness** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of each capacitor finger and bus bar in µm.
  * **n_turns** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of horizontal meander inductor runs.
  * **bus_bar_spacing** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Vertical spacing between the capacitor and inductor sections in µm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the inductor and ports.
  * **etch_bbox_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Margin around the structure for the etch region in µm.
* **Returns:**
  A gdsfactory component with the lumped-element resonator
  : geometry and two ports (‘o1’ and ‘o2’).
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If n_turns is even, bus_bar_spacing <= 0, or if the
      resultant meander run length is non-positive.

### Static

![lumped_element_resonator](_generated/cells/lumped_element_resonator.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/lumped_element_resonator.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### meander_inductor

### qpdk.cells.meander_inductor(n_turns=5, turn_length=200.0, cross_section=<function meander_inductor_cross_section>, wire_gap=None, etch_bbox_margin=2.0, add_etch=True)

Creates a meander inductor with Manhattan routing using a narrow wire.

The inductor consists of multiple horizontal runs connected by short
vertical segments at alternating ends, forming a serpentine (meander)
path.  The total inductance is dominated by kinetic inductance for
superconducting thin films.

![o1 ─────────────────────┐
                        │
┌───────────────────────┘
│
└───────────────────────┐
                        │
┌───────────────────────┘
│
└────────────────────── o2](_build/html/_images/svgbob-17251b4da60cdf4f79e59c13fd1b59f243b08304.svg)![o1 ─────────────────────┐
                        │
┌───────────────────────┘
│
└───────────────────────┐
                        │
┌───────────────────────┘
│
└────────────────────── o2](_build/html/_images/svgbob-17251b4da60cdf4f79e59c13fd1b59f243b08304_dark.svg)

Similar structures are described in
[[CSD+23](#id33), [KVH+11](#id55)].

* **Parameters:**
  * **n_turns** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of horizontal meander runs (must be >= 1).
  * **turn_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of each horizontal run in µm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the meander wire.
    The center conductor width and etch gap are derived from this
    specification. The meander’s vertical pitch is the wire width
    plus the run-to-run gap, which defaults to twice the etch gap
    so that the etched regions of adjacent runs do not overlap,
    maintaining the characteristic impedance of each run.
  * **wire_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Optional explicit gap between adjacent inductor runs in µm.
    If None (default), it’s inferred as 2x the etch gap from the
    cross-section, or the wire width if it has no etch section.
  * **etch_bbox_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Extra margin around the inductor for the etch bounding box in µm.
    This margin is added in addition to the etch region defined in the cross-section.
  * **add_etch** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Whether to add the etch bounding box. Defaults to True.
* **Returns:**
  A gdsfactory component with the meander inductor geometry
  : and two ports (‘o1’ and ‘o2’).
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If n_turns < 1, turn_length <= 0, or wire_gap is
      not positive.

### Static

![meander_inductor](_generated/cells/meander_inductor.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/meander_inductor.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### nxn

### qpdk.cells.nxn(xsize=10.0, ysize=10.0, wg_width=10.0, layer=<LayerMapQPDK.M1_DRAW: 1>, wg_margin=0.0, north=1, east=1, south=1, west=1, cross_section=<function coplanar_waveguide>)

Returns an NxN junction with ports on each side.

* **Parameters:**
  * **xsize** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Horizontal size of the junction in μm.
  * **ysize** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Vertical size of the junction in μm.
  * **wg_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the waveguides in μm.
  * **layer** (*LayerSpec*) – Layer specification.
  * **wg_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Margin from edge to waveguide in μm.
  * **north** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of ports on the north side.
  * **east** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of ports on the east side.
  * **south** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of ports on the south side.
  * **west** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of ports on the west side.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![nxn](_generated/cells/nxn.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/nxn.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### open

### qpdk.cells.open()

Return a layout-free ideal one-port open for schematic simulation.

* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![open](_generated/cells/open.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/open.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### open_2_port

### qpdk.cells.open_2_port(cross_section=<function coplanar_waveguide>)

Return an etched open end with an isolated external model port.

* **Parameters:**
  **cross_section** (*CrossSectionSpec*) – Cross section of the connected resonator trace.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![open_2_port](_generated/cells/open_2_port.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/open_2_port.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### plate_capacitor

### qpdk.cells.plate_capacitor(length=26.0, width=5.0, gap=7.0, etch_layer='M1_ETCH', etch_bbox_margin=2.0, cross_section='cpw')

Creates a plate capacitor.

A capacitive coupler consists of two metal pads separated by a small gap,
providing capacitive coupling between circuit elements like qubits and resonators.

![           ______               ______
 _________|      |             |      |________
|                |             |               |
|  o1       pad1 | ====gap==== | pad2      o2  |
|                |             |               |
|_________       |             |      _________|
          |______|             |______|](_build/html/_images/svgbob-be2a7de861f33f8056af19c50f3d883fa243324e.svg)![           ______               ______
 _________|      |             |      |________
|                |             |               |
|  o1       pad1 | ====gap==== | pad2      o2  |
|                |             |               |
|_________       |             |      _________|
          |______|             |______|](_build/html/_images/svgbob-be2a7de861f33f8056af19c50f3d883fa243324e_dark.svg)
* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length (vertical extent) of the capacitor pad in μm.
  * **width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width (horizontal extent) of the capacitor pad in μm.
  * **gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between plates in μm.
  * **etch_layer** (*TypeAliasForwardRef* *(* *'LayerSpec'* *)*  *|* *None*) – Optional layer for etching around the capacitor.
  * **etch_bbox_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Margin around the capacitor for the etch layer in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section for the short straight from the etch box capacitor.
* **Returns:**
  A gdsfactory component with the plate capacitor geometry and two ports (‘o1’ and ‘o2’) on opposing sides.
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If width or length is not positive.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![plate_capacitor](_generated/cells/plate_capacitor.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/plate_capacitor.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### plate_capacitor_single

### qpdk.cells.plate_capacitor_single(length=26.0, width=5.0, layer_metal=<LayerMapQPDK.M1_DRAW: 1>, etch_layer='M1_ETCH', etch_bbox_margin=2.0, cross_section='cpw')

Creates a single plate capacitor for coupling.

This is essentially half of a [`plate_capacitor()`](#qpdk.cells.plate_capacitor).

![           ______
 _________|      |
|                |
|  o1       pad1 |
|                |
|_________       |
          |______|](_build/html/_images/svgbob-8b821ca842426d6ec6dc51b124318736ba95cda6.svg)![           ______
 _________|      |
|                |
|  o1       pad1 |
|                |
|_________       |
          |______|](_build/html/_images/svgbob-8b821ca842426d6ec6dc51b124318736ba95cda6_dark.svg)
* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length (vertical extent) of the capacitor pad in μm.
  * **width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width (horizontal extent) of the capacitor pad in μm.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pad.
  * **etch_layer** (*TypeAliasForwardRef* *(* *'LayerSpec'* *)*  *|* *None*) – Optional layer for etching around the capacitor.
  * **etch_bbox_margin** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Margin around the capacitor for the etch layer in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section for the short straight from the etch box capacitor.
* **Returns:**
  A gdsfactory component with the plate capacitor geometry.
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If width or length is not positive.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![plate_capacitor_single](_generated/cells/plate_capacitor_single.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/plate_capacitor_single.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### quarter_wave_resonator_coupled

### qpdk.cells.quarter_wave_resonator_coupled(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=False, end_with_bend=False, cross_section_non_resonator='cpw', coupling_straight_length=200.0, coupling_gap=20.0)

Creates a quarter-wave resonator with a coupling waveguide.

Composes a straight coupler, the meander, and explicit open and short
terminations. The meander starts at the coupler output so that the trace
leaves the coupling gap at `coupling_straight_length`. Layouts with no
usable first straight section retain the unsplit coupled-resonator cell.

The terminations are fixed: the coupled end is open and the far end is
shorted. Use `resonator_coupled()` if other
terminations are needed.

![coupling_o1 ─────────────── coupling_o2
             coupling_gap
resonator_o1 ───────┐
                    │
┌───────────────────┘
│
└───────────────────┐
                    │
┌───────────────────┘
│
└──── (shorted, no port)](_build/html/_images/svgbob-a21a5d0d4debebebb0cdd15a64474ac42879efd2.svg)![coupling_o1 ─────────────── coupling_o2
             coupling_gap
resonator_o1 ───────┐
                    │
┌───────────────────┘
│
└───────────────────┐
                    │
┌───────────────────┘
│
└──── (shorted, no port)](_build/html/_images/svgbob-a21a5d0d4debebebb0cdd15a64474ac42879efd2_dark.svg)
* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **cross_section_non_resonator** (*CrossSectionSpec*) – Cross-section specification for the coupling waveguide.
  * **coupling_straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the coupling waveguide section in μm.
  * **coupling_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the resonator and coupling waveguide in μm.
* **Returns:**
  The coupled quarter-wave resonator component.
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If the requested length is too short for its meanders.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![quarter_wave_resonator_coupled](_generated/cells/quarter_wave_resonator_coupled.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/quarter_wave_resonator_coupled.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### rectangle

### qpdk.cells.rectangle(size=(4.0, 2.0), layer='M1_DRAW', centered=False, port_type='electrical', port_orientations=(180, 90, 0, -90))

Returns a rectangle.

* **Parameters:**
  * **size** (*Size*) – (tuple) Width and height of rectangle.
  * **layer** (*LayerSpec*) – Specific layer to put polygon geometry on.
  * **centered** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – True sets center to (0.0, 0.0), False sets south-west to (0.0, 0.0).
  * **port_type** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str) *|* *None*) – optical, electrical.
  * **port_orientations** (*Ints* *|* *None*) – list of port_orientations to add. None adds no ports.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![rectangle](_generated/cells/rectangle.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/rectangle.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator

### qpdk.cells.resonator(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=False, end_with_bend=False, open_start=True, open_end=False)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator](_generated/cells/resonator.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_coupled

### qpdk.cells.resonator_coupled(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=False, end_with_bend=False, open_start=True, open_end=False, cross_section_non_resonator='cpw', coupling_straight_length=200.0, coupling_gap=20.0)

Creates a meandering coplanar waveguide resonator with a coupling waveguide.

This component combines a resonator with a parallel coupling waveguide placed
at a specified gap for proximity coupling. Similar to the design described in
[[BM18](#id29)].

![coupling_o1 ─────────────── coupling_o2
             coupling_gap
resonator_o1 ───────┐
                    │
┌───────────────────┘
│
└───────────────────┐
                    │
┌───────────────────┘
│
└──── resonator_o2](_build/html/_images/svgbob-9b5233c9b199423f227ce4a466d5d7a2837d4f76.svg)![coupling_o1 ─────────────── coupling_o2
             coupling_gap
resonator_o1 ───────┐
                    │
┌───────────────────┘
│
└───────────────────┐
                    │
┌───────────────────┘
│
└──── resonator_o2](_build/html/_images/svgbob-9b5233c9b199423f227ce4a466d5d7a2837d4f76_dark.svg)
* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
  * **cross_section_non_resonator** (*CrossSectionSpec*) – Cross-section specification for the coupling waveguide.
  * **coupling_straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the coupling waveguide section in μm.
  * **coupling_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the resonator and coupling waveguide in μm.
    Measured from edges of the center conductors.
* **Returns:**
  A gdsfactory component with meandering resonator and coupling waveguide.
* **Return type:**
  Component

### Static

![resonator_coupled](_generated/cells/resonator_coupled.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_coupled.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_half_wave

### qpdk.cells.resonator_half_wave(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=False, end_with_bend=False, open_start=True, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_half_wave](_generated/cells/resonator_half_wave.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_half_wave.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_half_wave_bend_both

### qpdk.cells.resonator_half_wave_bend_both(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=True, end_with_bend=True, open_start=True, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_half_wave_bend_both](_generated/cells/resonator_half_wave_bend_both.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_half_wave_bend_both.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_half_wave_bend_end

### qpdk.cells.resonator_half_wave_bend_end(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=False, end_with_bend=True, open_start=True, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_half_wave_bend_end](_generated/cells/resonator_half_wave_bend_end.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_half_wave_bend_end.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_half_wave_bend_start

### qpdk.cells.resonator_half_wave_bend_start(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=True, end_with_bend=False, open_start=True, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_half_wave_bend_start](_generated/cells/resonator_half_wave_bend_start.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_half_wave_bend_start.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_meander

### qpdk.cells.resonator_meander(length=3700.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', end_with_bend=False)

Return the modeled CPW path from the first bend to the shorted end.

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Total path length, including bends, in µm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander bends.
  * **bend_spec** (*ComponentSpec*) – Component used for each bend.
  * **cross_section** (*CrossSectionSpec*) – Resonator cross section.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – Whether the path ends with a bend.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![resonator_meander](_generated/cells/resonator_meander.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_meander.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_quarter_wave

### qpdk.cells.resonator_quarter_wave(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=False, end_with_bend=False, open_start=False, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_quarter_wave](_generated/cells/resonator_quarter_wave.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_quarter_wave.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_quarter_wave_bend_both

### qpdk.cells.resonator_quarter_wave_bend_both(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=True, end_with_bend=True, open_start=False, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_quarter_wave_bend_both](_generated/cells/resonator_quarter_wave_bend_both.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_quarter_wave_bend_both.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_quarter_wave_bend_end

### qpdk.cells.resonator_quarter_wave_bend_end(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=False, end_with_bend=True, open_start=False, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_quarter_wave_bend_end](_generated/cells/resonator_quarter_wave_bend_end.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_quarter_wave_bend_end.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### resonator_quarter_wave_bend_start

### qpdk.cells.resonator_quarter_wave_bend_start(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', \*, start_with_bend=True, end_with_bend=False, open_start=False, open_end=True)

Creates a meandering coplanar waveguide resonator.

Changing open_start and open_end appropriately allows creating
a shorted quarter-wave resonator or an open half-wave resonator.

![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2.svg)![o1 ─────┐
        │
┌───────┘
│
└───────┐
        │
┌───────┘
│
└────── o2](_build/html/_images/svgbob-26743726fa3e793895693f8dabac646269ac88c2_dark.svg)

See [[MP12](#id64)] for details

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in μm.
  * **meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections to fit the resonator in a compact area.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **start_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, starts the resonator with a bend.
  * **end_with_bend** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, ends the resonator with a bend.
  * **open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
* **Returns:**
  A gdsfactory component with meandering resonator geometry.
* **Return type:**
  Component
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If length is too short for the requested meanders.

### Static

![resonator_quarter_wave_bend_start](_generated/cells/resonator_quarter_wave_bend_start.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/resonator_quarter_wave_bend_start.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### short

### qpdk.cells.short()

Return a layout-free ideal one-port short for schematic simulation.

* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![short](_generated/cells/short.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/short.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### single_josephson_junction_wire

### qpdk.cells.single_josephson_junction_wire(wide_straight_length=8.3, narrow_straight_length=0.5, taper_length=4.7, cross_section_wide=<function josephson_junction_cross_section_wide>, cross_section_narrow=<function josephson_junction_cross_section_narrow>, layer_patch=<LayerMapQPDK.JJ_PATCH: 51>, size_patch=(1.5, 1.0))

Creates a single wire to use in a Josephson junction.

![┌───┐
│o1 │━━━━────╶╶╶╶╶ o2
└───┘
       wide  narrow](_build/html/_images/svgbob-12d5ab4c7a0053087b42733ba4428d38aabef332.svg)![┌───┐
│o1 │━━━━────╶╶╶╶╶ o2
└───┘
       wide  narrow](_build/html/_images/svgbob-12d5ab4c7a0053087b42733ba4428d38aabef332_dark.svg)
* **Parameters:**
  * **wide_straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the wide straight section in µm.
  * **narrow_straight_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the narrow straight section in µm.
  * **taper_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the taper section in µm.
  * **cross_section_wide** (*CrossSectionSpec*) – Cross-section specification for the wide section.
  * **cross_section_narrow** (*CrossSectionSpec*) – Cross-section specification for the narrow section.
  * **layer_patch** (*LayerSpec*) – Layer for the patch that creates the overlap region.
  * **size_patch** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – Size of the patch that creates the overlap region.
* **Returns:**
  The junction wire component.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![single_josephson_junction_wire](_generated/cells/single_josephson_junction_wire.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/single_josephson_junction_wire.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### snspd

### qpdk.cells.snspd(wire_width=0.2, wire_pitch=0.6, size=(10, 8), num_squares=None, turn_ratio=4, terminals_same_side=False, layer=<LayerMapQPDK.NbTiN: 18>, port_type='electrical')

Creates an optimally-rounded SNSPD.

![e1 ─────────────────────╮
╭───────────────────────╯
╰───────────────────────╮
╭───────────────────────╯
╰───────────────────────╮
╭───────────────────────╯
╰───────────────────────╮
   e2 ──────────────────╯](_build/html/_images/svgbob-d926fce696383f40dd4b0037af1801a393a42b23.svg)![e1 ─────────────────────╮
╭───────────────────────╯
╰───────────────────────╮
╭───────────────────────╯
╰───────────────────────╮
╭───────────────────────╯
╰───────────────────────╮
   e2 ──────────────────╯](_build/html/_images/svgbob-d926fce696383f40dd4b0037af1801a393a42b23_dark.svg)
* **Parameters:**
  * **wire_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the wire.
  * **wire_pitch** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Distance between two adjacent wires. Must be greater than width.
  * **size** (*Size*) – Float2
    (width, height) of the rectangle formed by the outer boundary of the
    SNSPD.
  * **num_squares** ([*int*](https://docs.python.org/3/builtins/functions.html#int) *|* *None*) – int | None = None
    Total number of squares inside the SNSPD length. If given, overrides
    size with an approximately square SNSPD. The meander count is
    quantized to whole wire pitches, so the achieved square count
    (reported in info[“num_squares”]) is close to but not exactly the
    requested one.
  * **turn_ratio** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – float
    Specifies how much of the SNSPD width is dedicated to the 180 degree
    turn. A turn_ratio of 10 will result in 20% of the width being
    comprised of the turn.
  * **terminals_same_side** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, both ports will be located on the same side of the SNSPD.
  * **layer** (*LayerSpec*) – layer spec to put polygon geometry on.
  * **port_type** ([*Literal*](https://docs.python.org/3/library/typing.html#typing.Literal) *[* *'electrical'* *,*  *'optical'* *]*) – type of port to add to the component (“electrical” or “optical”).
* **Returns:**
  A Component containing the SNSPD geometry.
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If parameters are invalid or the SNSPD is too small for
      at least 3 meanders.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![snspd](_generated/cells/snspd.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/snspd.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### squid_junction

### qpdk.cells.squid_junction(junction_spec=<function josephson_junction>, loop_area=4)

Creates a SQUID (Superconducting Quantum Interference Device) junction component.

A SQUID consists of two Josephson junctions connected in parallel, forming a loop.

See [[CB04](#id35)] for details.

* **Parameters:**
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction component.
  * **loop_area** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Area of the SQUID loop in µm².
    This does not take into account the junction wire widths.
* **Returns:**
  The SQUID junction component.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![squid_junction](_generated/cells/squid_junction.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/squid_junction.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### squid_junction_long

### qpdk.cells.squid_junction_long(\*\*kwargs)

SQUID junction with josephson_junction_long.

* **Returns:**
  The SQUID junction component with long wires.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![squid_junction_long](_generated/cells/squid_junction_long.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/squid_junction_long.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### straight

### qpdk.cells.straight(length=10.0, cross_section=<function coplanar_waveguide>, npoints=2)

Returns a straight waveguide.

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight waveguide in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of points for the waveguide.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![straight](_generated/cells/straight.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/straight.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### straight_all_angle

### qpdk.cells.straight_all_angle(length=10.0, npoints=2, cross_section=<function coplanar_waveguide>)

Returns a Straight waveguide with offgrid ports.

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight waveguide in μm.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of points for the waveguide.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
* **Return type:**
  [*ComponentAllAngle*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.ComponentAllAngle)

```default
o1  ──────────────── o2
        length
```

### Static

![straight_all_angle](_generated/cells/straight_all_angle.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/straight_all_angle.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### straight_double_open

### qpdk.cells.straight_double_open(length=10.0, cross_section=<function coplanar_waveguide>, npoints=2)

Returns a straight waveguide with etched gaps at both ends.

#### NOTE
This may be treated as a $\lambda/2$ straight resonator in some contexts.

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight waveguide in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of points for the waveguide.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![straight_double_open](_generated/cells/straight_double_open.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/straight_double_open.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### straight_open

### qpdk.cells.straight_open(length=10.0, cross_section=<function coplanar_waveguide>, npoints=2)

Returns a straight waveguide with etched gap at one end.

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight waveguide in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of points for the waveguide.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![straight_open](_generated/cells/straight_open.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/straight_open.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### straight_shorted

### qpdk.cells.straight_shorted(length=10.0, cross_section=<function coplanar_waveguide>, npoints=2)

Return a straight waveguide whose far end is shorted.

The CPW slots stop at the far end, joining its center trace to ground.

* **Parameters:**
  * **length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight waveguide in μm.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification.
  * **npoints** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of points for the waveguide.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![straight_shorted](_generated/cells/straight_shorted.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/straight_shorted.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### tee

### qpdk.cells.tee(cross_section='cpw')

Returns a three-way tee waveguide.

* **Parameters:**
  **cross_section** (*CrossSectionSpec*) – specification (CrossSection, string or dict).
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![tee](_generated/cells/tee.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/tee.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### transmon_with_resonator

### qpdk.cells.transmon_with_resonator(qubit='double_pad_transmon_with_bbox', resonator=functools.partial(functools.partial(<function resonator>, open_start=False, open_end=True, start_with_bend=True), length=4000, meanders=6), resonator_meander_start=(-900, -1200), resonator_length=5000.0, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, coupler=functools.partial(<function plate_capacitor_single>, width=20, length=394), qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0))

Returns a transmon qubit coupled to a quarter wave resonator.

* **Parameters:**
  * **qubit** (*ComponentSpec*) – Qubit component.
  * **resonator** (*ComponentSpec*) – Resonator component.
  * **resonator_meander_start** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) position of the start of the resonator meander.
  * **resonator_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in µm.
  * **resonator_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections for the resonator.
  * **resonator_bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **resonator_cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **resonator_open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **resonator_open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
  * **coupler** (*ComponentSpec*) – Coupler spec.
  * **qubit_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation angle for the qubit in degrees.
  * **coupler_port** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the qubit port to position the coupler relative to.
  * **coupler_offset** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) offset for the coupler position.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![transmon_with_resonator](_generated/cells/transmon_with_resonator.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/transmon_with_resonator.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### transmon_with_resonator_and_probeline

### qpdk.cells.transmon_with_resonator_and_probeline(qubit='double_pad_transmon_with_bbox', resonator=functools.partial(functools.partial(<function resonator>, open_start=False, open_end=True, start_with_bend=True), length=4000, meanders=6), resonator_meander_start=(-900, -1200), resonator_length=5000.0, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, coupler=functools.partial(<function plate_capacitor_single>, width=20, length=394), qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0), probeline_coupler=<function coupler_straight>, probeline_coupling_gap=16.0, probeline_coupling_length=None)

Returns a transmon qubit coupled to a quarter wave resonator and a probeline.

Uses a `coupler_straight()` to couple the
resonator to a probeline. The coupling section is inserted at the start
of the resonator meander, with one waveguide carrying the resonator signal
and the other providing ports for probeline routing.

* **Parameters:**
  * **qubit** (*ComponentSpec*) – Qubit component.
  * **resonator** (*ComponentSpec*) – Resonator component.
  * **resonator_meander_start** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) position of the start of the resonator meander.
  * **resonator_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator in µm.
  * **resonator_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections for the resonator.
  * **resonator_bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **resonator_cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator.
  * **resonator_open_start** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the start of the resonator.
  * **resonator_open_end** ([*bool*](https://docs.python.org/3/builtins/functions.html#bool)) – If True, adds an etch section at the end of the resonator.
  * **coupler** (*ComponentSpec*) – Coupler spec.
  * **qubit_rotation** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Rotation angle for the qubit in degrees.
  * **coupler_port** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str)) – Name of the qubit port to position the coupler relative to.
  * **coupler_offset** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – (x, y) offset for the coupler position.
  * **probeline_coupler** (*ComponentSpec*) – Component spec for the probeline coupling section.
  * **probeline_coupling_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap between the resonator and probeline
    waveguides in the coupling section in µm.
  * **probeline_coupling_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Length of the coupling section in µm.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![transmon_with_resonator_and_probeline](_generated/cells/transmon_with_resonator_and_probeline.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/transmon_with_resonator_and_probeline.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### tsv

### qpdk.cells.tsv(diameter=15.0)

Creates a Through-silicon via (TSV) component for 3D integration.

See [[YSM+20](#id98)].

* **Parameters:**
  **diameter** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Diameter of the via in µm.
* **Returns:**
  A gdsfactory Component representing the TSV.
* **Return type:**
  [*Component*](https://gdsfactory.github.io/gdsfactory/api/#gdsfactory.Component)

### Static

![tsv](_generated/cells/tsv.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/tsv.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### unimon

### qpdk.cells.unimon(arm_length=3000.0, arm_meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', junction_spec=functools.partial(<function squid_junction>, junction_spec=functools.partial(<function josephson_junction>, junction_overlap_displacement=1.8, wide_straight_length=4.0, narrow_straight_length=0.5, taper_length=4)), junction_gap=10.0, junction_etch_width=22.0)

Creates a unimon qubit from two grounded $\lambda/4$ CPW resonator arms connected by a SQUID junction.

The unimon is a superconducting qubit consisting of a single Josephson
junction (or SQUID for flux tunability) embedded in the center of
a two grounded $\lambda/4$ CPW resonators, providing
a large geometric inductance that, together with the Josephson
nonlinearity, yields high anharmonicity and resilience to charge noise.

![o1 (shorted to ground)
┌──
│     :math:`\lambda/4`
└─┐    resonator arm
  │    (meandered)
┌─┘
│
└X┐  junction (SQUID)
  │
┌─┘
│     :math:`\lambda/4`
└─┐   resonator arm
  │   (meandered)
──┘
o2 (shorted to ground)](_build/html/_images/svgbob-b2a83b2150992eabd30ecd34a5594524abd1512f.svg)![o1 (shorted to ground)
┌──
│     :math:`\lambda/4`
└─┐    resonator arm
  │    (meandered)
┌─┘
│
└X┐  junction (SQUID)
  │
┌─┘
│     :math:`\lambda/4`
└─┐   resonator arm
  │   (meandered)
──┘
o2 (shorted to ground)](_build/html/_images/svgbob-b2a83b2150992eabd30ecd34a5594524abd1512f_dark.svg)

See [[HKC+22](#id52), [TVT+24](#id88)] for details.

* **Parameters:**
  * **arm_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of each $\lambda/4$ resonator arm in µm.
  * **arm_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections in each arm.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator arms.
  * **junction_spec** (*ComponentSpec*) – Component specification for the junction (SQUID) component.
  * **junction_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the etched gap on which the junction sits in µm.
  * **junction_etch_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the etched region where the junction sits in µm.
* **Returns:**
  A gdsfactory component with the unimon qubit geometry.
* **Return type:**
  Component

### Static

![unimon](_generated/cells/unimon.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/unimon.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### unimon_arm

### qpdk.cells.unimon_arm(arm_length=3000.0, arm_meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', junction_gap=6.0)

Creates a quarter-wave resonator arm for the unimon qubit.

* **Parameters:**
  * **arm_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the resonator arm in µm.
  * **arm_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meanders in the arm.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the arm.
  * **junction_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Gap for the junction in µm.
* **Returns:**
  The quarter-wave resonator arm component.
* **Return type:**
  Component

### Static

![unimon_arm](_generated/cells/unimon_arm.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/unimon_arm.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### unimon_coupled

### qpdk.cells.unimon_coupled(arm_length=3000.0, arm_meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', junction_spec=functools.partial(<function squid_junction>, junction_spec=functools.partial(<function josephson_junction>, junction_overlap_displacement=1.8, wide_straight_length=4.0, narrow_straight_length=0.5, taper_length=4)), junction_gap=6.0, junction_etch_width=22.0, coupling_gap=30.0, coupling_angle=180.0, coupling_extension_length=50.0, cross_section_non_resonator='cpw')

Creates a unimon qubit with a half-circle coupling waveguide for readout.

This component combines a [`unimon()`](#qpdk.cells.unimon) qubit with a half-circle coupler
placed at a specified gap for proximity coupling to a readout resonator.

![o1 (shorted to ground)
┌──
│
└─┐
  │
┌─┘
│ ─┐
└X┐│
  │+-- coupling_o3
┌─┘│
│ ─┘
└─┐
  │
──┘
o2 (shorted to ground)](_build/html/_images/svgbob-b3ab659e9acd641ddb5cc12789aff572cedaaeba.svg)![o1 (shorted to ground)
┌──
│
└─┐
  │
┌─┘
│ ─┐
└X┐│
  │+-- coupling_o3
┌─┘│
│ ─┘
└─┐
  │
──┘
o2 (shorted to ground)](_build/html/_images/svgbob-b3ab659e9acd641ddb5cc12789aff572cedaaeba_dark.svg)
* **Parameters:**
  * **arm_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of each $\lambda/4$ resonator arm in µm.
  * **arm_meanders** ([*int*](https://docs.python.org/3/builtins/functions.html#int)) – Number of meander sections in each arm.
  * **bend_spec** (*ComponentSpec*) – Specification for the bend component used in meanders.
  * **cross_section** (*CrossSectionSpec*) – Cross-section specification for the resonator arms.
  * **junction_spec** (*ComponentSpec*) – Component specification for the junction (SQUID) component.
  * **junction_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the etched gap on which the junction sits in µm.
  * **junction_etch_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the etched region where the junction sits in µm.
  * **coupling_gap** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Edge-to-edge gap between M1_DRAW centre conductors of the
    unimon resonator and the coupling waveguide in µm.  The coupling
    radius is automatically computed as
    `meander_radius + coupling_gap + width_resonator/2 + width_coupler/2`
    to ensure a uniform gap across the bend.
  * **coupling_angle** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Angle of the circular arc in degrees.
  * **coupling_extension_length** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Length of the straight sections extending from the
    ends of the half-circle in μm.
  * **cross_section_non_resonator** (*CrossSectionSpec*) – Cross-section for the coupling waveguide.
* **Returns:**
  A gdsfactory component with the unimon and half-circle coupler.
* **Return type:**
  Component

### Static

![unimon_coupled](_generated/cells/unimon_coupled.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/unimon_coupled.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

### xmon_transmon

### qpdk.cells.xmon_transmon(arm_width=(30.0, 20.0, 30.0, 20.0), arm_lengths=(160.0, 120.0, 160.0, 120.0), gap_width=10.0, junction_spec=<function squid_junction>, junction_displacement=None, layer_metal=<LayerMapQPDK.M1_DRAW: 1>, layer_etch=<LayerMapQPDK.M1_ETCH: 47>)

Creates an Xmon style transmon qubit with cross-shaped geometry.

An Xmon transmon consists of a cross-shaped capacitor pad with four arms
extending from a central region, connected by a Josephson junction at the center.
The design provides better control over the coupling to readout resonators
and neighboring qubits through the individual arm geometries.

![         top_arm
        ┌─────┐
        │     │
        │     │
        │     │
┌───────┘     └───────┐
│  left         right │
│  arm           arm  │
└───────┐     ┌───────┘
        │     │
        │     │
        │     │ bottom_arm
        └─────┘
          /
         x
          \
        junction](_build/html/_images/svgbob-c46af8bc797a4097d7e1fbcc341f0321f94d7bad.svg)![         top_arm
        ┌─────┐
        │     │
        │     │
        │     │
┌───────┘     └───────┐
│  left         right │
│  arm           arm  │
└───────┐     ┌───────┘
        │     │
        │     │
        │     │ bottom_arm
        └─────┘
          /
         x
          \
        junction](_build/html/_images/svgbob-c46af8bc797a4097d7e1fbcc341f0321f94d7bad_dark.svg)

See [[BKM+13](#id28)] for details about the Xmon design.

* **Parameters:**
  * **arm_width** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – Tuple of (top, right, bottom, left) arm widths in μm.
  * **arm_lengths** ([*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple) *[*[*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *,* [*float*](https://docs.python.org/3/builtins/functions.html#float) *]*) – Tuple of (top, right, bottom, left) arm lengths in μm.
    Computed from center to end of each arm.
  * **gap_width** ([*float*](https://docs.python.org/3/builtins/functions.html#float)) – Width of the etched gap around arms in μm.
  * **junction_spec** (*ComponentSpec*) – Component specification for the Josephson junction component.
  * **junction_displacement** (*DCplxTrans* *|* [*float*](https://docs.python.org/3/builtins/functions.html#float) *|* *None*) – Optional complex transformation, or in-place
    rotation in degrees, to apply to the junction.
  * **layer_metal** (*LayerSpec*) – Layer for the metal pads.
  * **layer_etch** (*LayerSpec*) – Layer for the etched regions.
* **Returns:**
  A gdsfactory component with the Xmon transmon geometry.
* **Return type:**
  Component

### Static

![xmon_transmon](_generated/cells/xmon_transmon.png)

### Dynamic

<iframe src="kwasm/viewer.html?url=gds/xmon_transmon.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

## References
