-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
1,444 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"# Sizing for Bandgap Reference \n", | ||
"\n", | ||
"**Copyright 2025 Harald Pretl**\n", | ||
"\n", | ||
"Licensed under the Apache License, Version 2.0 (the \"License\");\n", | ||
"you may not use this file except in compliance with the License.\n", | ||
"You may obtain a copy of the License at\n", | ||
"http://www.apache.org/licenses/LICENSE-2.0" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 99, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# read table data\n", | ||
"from pygmid import Lookup as lk\n", | ||
"import numpy as np\n", | ||
"lv_nmos = lk('sg13_lv_nmos.mat')\n", | ||
"lv_pmos = lk('sg13_lv_pmos.mat')\n", | ||
"# list of parameters: VGS, VDS, VSB, L, W, NFING, ID, VT, GM, GMB, GDS, CGG, CGB, CGD, CGS, CDD, CSS, STH, SFL\n", | ||
"# if not specified, minimum L, VDS=max(vgs)/2=0.9 and VSB=0 are used " | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 100, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# define the given values\n", | ||
"id_spec = 10e-6\n", | ||
"gm_id_spec = 20\n", | ||
"L_spec = 1" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 101, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"VGS of NMOS = 0.356 V\n", | ||
"VGS of PMOS = 0.387 V\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"# get the vgs for NMOS and PMOS\n", | ||
"vgsn = lv_nmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=0.75, VSB=0.8)\n", | ||
"vgsn = lv_nmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=vgsn, VSB=0.8)\n", | ||
"\n", | ||
"vgsp = lv_pmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=0.75, VSB=0.0)\n", | ||
"vgsp = lv_pmos.look_upVGS(GM_ID=gm_id_spec, L=L_spec, VDS=vgsp, VSB=0.0)\n", | ||
"\n", | ||
"print('VGS of NMOS =', round(float(vgsn), 3), 'V')\n", | ||
"print('VGS of PMOS =', round(float(vgsp), 3), 'V')" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 102, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"NMOS W = 14.45 um, rounded W = 14.5 um\n", | ||
"PMOS W = 51.9 um, rounded W = 52.0 um\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"# find the W of the transistors\n", | ||
"idn_w = lv_nmos.lookup('ID_W', GM_ID=gm_id_spec, L=L_spec, VDS=vgsn, VSB=0)\n", | ||
"wn = id_spec / idn_w\n", | ||
"print('NMOS W =', round(wn, 2), 'um, rounded W =', round(wn*2)/2, 'um')\n", | ||
"\n", | ||
"idp_w = lv_pmos.lookup('ID_W', GM_ID=gm_id_spec, L=L_spec, VDS=vgsp, VSB=0)\n", | ||
"wp = id_spec / idp_w\n", | ||
"print('PMOS W =', round(wp, 2), 'um, rounded W =', round(wp*2)/2, 'um')" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.13.1" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
Oops, something went wrong.