Analog (Integrated) Circuit Design
Important
All course material (source code of this document, Jupyter notebooks for calculations, Xschem circuits, etc.) is made publicly available on GitHub (follow this link) and shared under the Apache-2.0 license.
Please feel free to submit pull requests on GitHub to fix errors and omissions!
Important
The production of this document would be impossible without these (and many more) great open-source software products: VS Code, Quarto, Pandoc, TexLive, Jupyter Notebook, Python, Xschem, ngspice, CACE, pygmid, schemdraw, Numpy, Scipy, Matplotlib, Pandas, Git, Docker, Ubuntu, Linux, …
Important
Please use the IIC-OSIC-TOOLS image with tag 2026.06 or later!
Further Reading
These notes are considered to be self-contained, although some explanations are kept short and probably lack depth. To dive into details, there are many excellent textbooks on analog circuit design available. Among them, we can recommend the following ones:
Further Reading
Additionally, there are several noteworthy IEEE paper series that we recommend:
Further Reading
Finally, (Pretl and Eberlein 2021) collects fifty variations of two-transistor circuits, ranging from simple standard configurations to ingenious arrangements. It is also available as an interactive web version.
| Component | Device Name | Specifications |
|---|---|---|
| Low-voltage (LV) NMOS | sg13_lv_nmos |
operating voltage (nom.) \(V_\mathrm{DD}=1.5\,\text{V}\), \(L_\mathrm{min}=0.13\,\mu\text{m}\), \(V_\mathrm{th}\approx 0.5\,\text{V}\); isolated NMOS available |
| Low-voltage (LV) PMOS | sg13_lv_pmos |
operating voltage (nom.) \(V_\mathrm{DD}=1.5\,\text{V}\), \(L_\mathrm{min}=0.13\,\mu\text{m}\), \(V_\mathrm{th}\approx -0.47\,\text{V}\) |
| High-voltage (HV) NMOS | sg13_hv_nmos |
operating voltage (nom.) \(V_\mathrm{DD}=3.3\,\text{V}\), \(L_\mathrm{min}=0.45\,\mu\text{m}\), \(V_\mathrm{th}\approx 0.7\,\text{V}\); isolated NMOS available |
| High-voltage (HV) PMOS | sg13_hv_pmos |
operating voltage (nom.) \(V_\mathrm{DD}=3.3\,\text{V}\), \(L_\mathrm{min}=0.45\,\mu\text{m}\), \(V_\mathrm{th}\approx -0.65\,\text{V}\) |
| Silicided poly resistor | rsil |
\(R_\square=7\,\Omega \pm 10\%\), \(\text{TC}_1=3100\,\text{ppm/K}\) |
| Poly resistor | rppd |
\(R_\square=260\,\Omega \pm 10\%\), \(\text{TC}_1=170\,\text{ppm/K}\) |
| Poly resistor high | rhigh |
\(R_\square=1360\,\Omega \pm 15\%\), \(\text{TC}_1=-2300\,\text{ppm/K}\) |
| MIM capacitor | cap_cmim |
\(C'=1.5\,\text{fF}/\mu\text{m}^2 \pm 10\%\), \(\text{VC}_1=-26\,\text{ppm/V}\), \(\text{TC}_1=3.6\,\text{ppm/K}\), breakdown voltage \(>15\,\text{V}\) |
| MOM capacitor | n/a | The metal stack is well-suited for MOM capacitors due to 5 thin metal layers, but no primitive capacitor device is available at this point. |
Preparation
Please make sure to receive information about your personal VM access ahead of the course start.
Linux
In this course, we assume that students have a basic knowledge of Linux and how to operate it using the terminal (shell). If you are not yet familiar with Linux (which is basically a must when doing integrated circuit design as many tools are only available on Linux), then please check out a Linux introductory course or tutorial online, there are many resources available.
A summary of important Linux shell commands is provided in Section 19.
/foss/designs >git clone https://github.com/iic-jku/analog-circuit-design.git.designinit, which sets the PDK and certain paths. However, this must be located in /foss/designs/cp analog-circuit-design/.designinit .XSCHEM_USER_LIBRARY_PATH by opening the file in an editor e.g. nano .designinit
export XSCHEM_USER_LIBRARY_PATH=$DESIGNS/xschem to export XSCHEM_USER_LIBRARY_PATH=$DESIGNS/analog-circuit-design/xschemexitecho $PDK (you should get sg13g2 as the answer)cd analog-circuit-designxschem or directly open a specific schematic using xschem xschem/dc_lv_nmos.schcd /foss/designszip backup.zip analog-circuit-design -rcd /foss/designs/analog-circuit-designgit fetch originmain: git merge origin/mainGit Merge Conflicts
It is possible that git merge does not complete successfully. Either you are able to resolve the merge conflict manually, or it may be easier to make a fresh clone of the repository and adding your local changes manually from the backup.
Important
Please think twice before executing any git command without a backup, as this could lead to permanent loss of data!