Back to Article
Sizing for Bandgap Reference
Download Notebook

Sizing for Bandgap Reference

Copyright 2025 Harald Pretl

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

In [99]:
# read table data
from pygmid import Lookup as lk
import numpy as np
lv_nmos = lk('sg13_lv_nmos.mat')
lv_pmos = lk('sg13_lv_pmos.mat')
# list of parameters: VGS, VDS, VSB, L, W, NFING, ID, VT, GM, GMB, GDS, CGG, CGB, CGD, CGS, CDD, CSS, STH, SFL
# if not specified, minimum L, VDS=max(vgs)/2=0.9 and VSB=0 are used 
In [100]:
# define the given values
id_spec = 10e-6
gm_id_spec = 20
L_spec = 1
In [101]:
# get the vgs for NMOS and PMOS
vgsn = lv_nmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=0.75, VSB=0.8)
vgsn = lv_nmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=vgsn, VSB=0.8)

vgsp = lv_pmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=0.75, VSB=0.0)
vgsp = lv_pmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=vgsp, VSB=0.0)

print('VGS of NMOS =', round(float(vgsn), 3), 'V')
print('VGS of PMOS =', round(float(vgsp), 3), 'V')
VGS of NMOS = 0.356 V
VGS of PMOS = 0.387 V
In [102]:
# find the W of the transistors
idn_w = lv_nmos.lookup('ID_W', GM_ID=gm_id_spec, L=L_spec, VDS=vgsn, VSB=0)
wn = id_spec / idn_w
print('NMOS W =', round(wn, 2), 'um, rounded W =', round(wn*2)/2, 'um')

idp_w = lv_pmos.lookup('ID_W', GM_ID=gm_id_spec, L=L_spec, VDS=vgsp, VSB=0)
wp = id_spec / idp_w
print('PMOS W =', round(wp, 2), 'um, rounded W =', round(wp*2)/2, 'um')
NMOS W = 14.45 um, rounded W = 14.5 um
PMOS W = 51.9 um, rounded W = 52.0 um