an3ol | dfebf1d | 2021-03-24 01:53:13 +0530 | [diff] [blame] | 1 | # General Purpose Bandgap Reference Circuit - avsdbgp_3v3_sky130_v2 |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 2 | |
| 3 | A Bandgap Reference is an analog circuit, which is used to provide a constant output reference voltage being independent of Temperature, Process and Supply voltage variations. The analog IP **avsdbgp_3v3** is a General Purpose Bandgap Reference ciruit, which is designed using **Sky130nm** technology in this project. |
| 4 | |
an3ol | c9da6ff | 2021-03-23 18:39:59 +0530 | [diff] [blame] | 5 | For detailed information regarding the Bandgap Reference circuit click [here](https://github.com/vsdip/avsdbgp_3v3_sky130_v2/blob/main/Documents/General_purpose_BGR.pdf). The Design specifications provided for avsdbgp_3v3 can be found [here](https://github.com/vsdip/avsdbgp_3v3_sky130_v2/blob/main/Documents/Specifications.pdf). |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 6 | |
| 7 | <p> </p> |
| 8 | |
| 9 | # Table of Contents |
| 10 | * Performance parameters Bandgap Reference IP |
| 11 | |
| 12 | * Circuit Implementation of Bandgap Reference IP |
| 13 | |
| 14 | - Block Diagram of Bandgap Reference IP |
| 15 | - Schematic of Bandgap Reference IP |
| 16 | * Downloading the files on your System |
| 17 | * Pre-Layout Simulation of Bandgap Reference IP circuit using Ngspice |
| 18 | - Ngspice |
| 19 | - Pre-Layout Simulation plots of Bandgap Reference IP circuit |
| 20 | - Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 21 | - Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 22 | - Temperature Coefficient of Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 23 | - Voltage Coefficient of Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 24 | - Start-Up Time of Vbgp @ RL = 100M ohms plot |
| 25 | - On-Off-Current of Vbgp wrt Enable @ RL = 100M ohms plot |
| 26 | * BGR Layout |
| 27 | - Magic |
| 28 | - Layout |
| 29 | * Post-Layout Simulation of Bandgap Reference IP circuit using Ngspice |
| 30 | - Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 31 | - Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 32 | - Temperature Coefficient of Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 33 | - Voltage Coefficient of Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 34 | - Start-Up Time of Vbgp @ RL = 100M ohms plot |
| 35 | - On-Off-Current of Vbgp wrt Enable @ RL = 100M ohms plot |
| 36 | |
| 37 | |
| 38 | <p> </p> |
| 39 | |
| 40 | # Performance parameters of Bandgap Reference IP |
| 41 | <p> </p> |
| 42 | |
| 43 | | Parameter | Description | Min | Type | Max | Unit | Condition | |
| 44 | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | |
| 45 | | VBGP | Output reference voltage | 1.19490 | 1.19756 | 1.19764 | Volt | T= -40 to 140C, VDD=3.3V | |
| 46 | | VBGP | Output reference voltage | 1.11400 | 1.19756 | 1.21933 | Volt | VDD=2V to VDD=4V, T=27C | |
| 47 | | VDD | Supply Voltage | | 3.3 | | Volt | T=-40C to 125C| |
| 48 | | IDD | Supply Current | | 21.9636 | | uA | EN=1 | |
| 49 | | IDD | Supply Current | | 24.4 | | pA | EN=0 | |
| 50 | | RL | Load Resistance | | 100 | | Mohm |VDD=3.3V, T=27C| |
| 51 | <p> </p> |
| 52 | |
| 53 | # Circuit Implementation of Bandgap Reference IP |
| 54 | ## Block Diagram of Bandgap Reference IP |
an3ol | c9da6ff | 2021-03-23 18:39:59 +0530 | [diff] [blame] | 55 | ![Block diagram](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/photo/block_diagram.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 56 | |
| 57 | ## Schematic of Bandgap Reference IP |
| 58 | <p> </p> |
| 59 | |
an3ol | c9da6ff | 2021-03-23 18:39:59 +0530 | [diff] [blame] | 60 | ![Schematic](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/photo/Schematic.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 61 | <p> </p> |
| 62 | |
| 63 | # Downloading the files on your System |
| 64 | <p> </p> |
| 65 | |
| 66 | The files from this repository can be downloaded and used by the following commands :- |
| 67 | >`sudo apt install -y git` |
| 68 | |
an3ol | 3c43289 | 2021-03-24 01:56:06 +0530 | [diff] [blame] | 69 | >`git clone https://github.com/vsdip/avsdbgp_3v3_sky130_v2.git` |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 70 | <p> </p> |
| 71 | |
| 72 | # Pre-Layout Simulation of Bandgap Reference IP circuit |
| 73 | |
| 74 | The circuit implementation of Bandgap reference IP **avsdbgp_3v3** is simulated using Ngspice to analyse its performance according to the Design Specifications provided. |
| 75 | <p> </p> |
| 76 | |
| 77 | ## Ngspice |
| 78 | <p> </p> |
| 79 | Ngspice is an open source mixed-signal circuit simulator. To install Ngspice on Ubuntu, open terminal window and type :- |
| 80 | |
| 81 | >`sudo apt-get install -y ngspice` |
| 82 | |
| 83 | After successful installation, to invoke Ngspice type the following command on the terminal window. |
| 84 | >`ngspice <circuit file to be simulated>` |
| 85 | |
| 86 | <p> </p> |
| 87 | |
| 88 | |
| 89 | |
| 90 | ## Pre- Layout Simulation plots of Bandgap Reference IP circuit |
| 91 | <p> </p> |
| 92 | |
| 93 | |
| 94 | To simulate the files for Pre- Layout simulations |
| 95 | <p> </p> |
| 96 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 97 | >`cd avsdbgp_3v3_sky130_v2/Pre_Layout_Simulations/Circuits/` |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 98 | <p> </p> |
| 99 | |
| 100 | ## Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 101 | <p> </p> |
| 102 | To observe the effect of temperature on the circuit, the temperature is varied from -40C to 140C. On the terminal window, type :- |
| 103 | <p> </p> |
| 104 | |
| 105 | >`ngspice temp_avsdbgp_3v3.cir` |
| 106 | <p> </p> |
| 107 | The output plot as obtained can be seen below :- |
| 108 | |
| 109 | <p> </p> |
| 110 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 111 | ![Vbgp vs Temperature](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Pre_Layout_Simulations/Results/temp_var.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 112 | <p> </p> |
| 113 | |
| 114 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 115 | ![Vbgp Vptat Vctat vs Temperature](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Pre_Layout_Simulations/Results/temp_all.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 116 | <p> </p> |
| 117 | |
| 118 | ## Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 119 | <p> </p> |
| 120 | To observe the effect of Supply voltage on the circuit, the temperature is varied from 2V to 4V. On the terminal window, type :- |
| 121 | <p> </p> |
| 122 | |
| 123 | >`ngspice vdd_variation_avsdbgp_3v3.cir` |
| 124 | <p> </p> |
| 125 | The output plot as obtained can be seen below :- |
| 126 | <p> </p> |
| 127 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 128 | ![Voltage vs Vbgp](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Pre_Layout_Simulations/Results/vdd_var.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 129 | <p> </p> |
| 130 | |
| 131 | ## Temperature Coefficient of Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 132 | <p> </p> |
| 133 | On the terminal window, type :- |
| 134 | <p> </p> |
| 135 | |
| 136 | >`ngspice Temp_coeff_avsdbgp_3v3.cir` |
| 137 | <p> </p> |
| 138 | The output plot as obtained can be seen below :- |
| 139 | <p> </p> |
| 140 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 141 | ![Temperature coefficient of Vbgp](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Pre_Layout_Simulations/Results/temp_coeff.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 142 | <p> </p> |
| 143 | |
| 144 | ## Voltage Coefficient of Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 145 | <p> </p> |
| 146 | On the terminal window, type :- |
| 147 | <p> </p> |
| 148 | |
| 149 | >`ngspice voltage_coeff_avsdbgp_3v3.cir` |
| 150 | <p> </p> |
| 151 | The output plot as obtained can be seen below :- |
| 152 | <p> </p> |
| 153 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 154 | ![Voltage coefficient of Vbgp](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Pre_Layout_Simulations/Results/vol_coeff.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 155 | <p> </p> |
| 156 | |
| 157 | ## Start-Up Time of Vbgp @ RL = 100M ohms plot |
| 158 | <p> </p> |
| 159 | On the terminal window, type :- |
| 160 | <p> </p> |
| 161 | |
| 162 | >`ngspice Start_up_avsdbgp_3v3.cir` |
| 163 | <p> </p> |
| 164 | The output plot as obtained can be seen below :- |
| 165 | <p> </p> |
| 166 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 167 | ![Start up circuit](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Pre_Layout_Simulations/Results/Startup.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 168 | <p> </p> |
| 169 | |
| 170 | ## On-Off-Current of Vbgp wrt Enable @ RL = 100M ohms plot |
| 171 | <p> </p> |
| 172 | On the terminal window, type :- |
| 173 | <p> </p> |
| 174 | |
| 175 | >`ngspice enable_current.cir` |
| 176 | <p> </p> |
| 177 | The output plot as obtained can be seen below :- |
| 178 | <p> </p> |
| 179 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 180 | ![Enable](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Pre_Layout_Simulations/Results/enable_current.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 181 | <p> </p> |
| 182 | |
| 183 | # BGR Layout |
| 184 | <p> </p> |
| 185 | |
| 186 | ## Magic |
| 187 | |
| 188 | The Layout for the circuit was done using Magic Layout editor tool. To observe the layout, install magic using the following commands :- |
| 189 | <p> </p> |
| 190 | |
| 191 | >`sudo wget "http://opencircuitdesign.com/magic/archive/magic-8.3.122.tgz" ` |
| 192 | |
| 193 | >`tar -xvzf magic-8.3.122.tgz` |
| 194 | |
| 195 | >` cd magic-8.3.122 ` |
| 196 | |
| 197 | >`sudo ./configure` |
| 198 | |
| 199 | >`sudo make` |
| 200 | |
| 201 | >`sudo make install` |
| 202 | <p> </p> |
| 203 | |
| 204 | ## Layout |
| 205 | |
| 206 | After successful installation, type:- |
| 207 | <p> </p> |
| 208 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 209 | >`cd avsdbgp_3v3_sky130_v2/Layout/` |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 210 | |
| 211 | >` magic -T ../libs/sky130A.tech BGR.mag` |
| 212 | <p> </p> |
| 213 | |
an3ol | c9da6ff | 2021-03-23 18:39:59 +0530 | [diff] [blame] | 214 | ![Layout](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/photo/Layout.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 215 | <p> </p> |
| 216 | |
| 217 | # Post-Layout Simulation plots of Bandgap Reference IP circuit |
| 218 | <p> </p> |
| 219 | |
| 220 | To simulate the files for Post-Layout simulations using ngspice :- |
| 221 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 222 | >`cd avsdbgp_3v3_sky130_v2/Post_Layout_Simulations/Circuits/` |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 223 | <p> </p> |
| 224 | |
| 225 | ## Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 226 | <p> </p> |
| 227 | To observe the effect of temperature on the circuit, the temperature is varied from -40C to 140C. On the terminal window, type :- |
| 228 | <p> </p> |
| 229 | |
| 230 | >`ngspice temp_avsdbgp_3v3.spice` |
| 231 | <p> </p> |
| 232 | The output plot as obtained can be seen below :- |
| 233 | |
| 234 | <p> </p> |
| 235 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 236 | ![Vbgp vs Temperature](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Post_Layout_Simulations/Results/temp.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 237 | <p> </p> |
| 238 | |
| 239 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 240 | ![Vbgp Vptat Vctat vs Temperature](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Post_Layout_Simulations/Results/temp_all.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 241 | <p> </p> |
| 242 | |
| 243 | ## Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 244 | <p> </p> |
| 245 | To observe the effect of Supply voltage on the circuit, the temperature is varied from 2V to 4V. On the terminal window, type :- |
| 246 | <p> </p> |
| 247 | |
| 248 | >`ngspice vdd_variation_avsdbgp_3v3.spice` |
| 249 | <p> </p> |
| 250 | The output plot as obtained can be seen below :- |
| 251 | <p> </p> |
| 252 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 253 | ![Voltage vs Vbgp](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Post_Layout_Simulations/Results/vdd_var.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 254 | <p> </p> |
| 255 | |
| 256 | ## Temperature Coefficient of Vbgp v/s Temperature [ -40C - 140C] @ RL = 100M ohms plot |
| 257 | <p> </p> |
| 258 | On the terminal window, type :- |
| 259 | <p> </p> |
| 260 | |
| 261 | >`ngspice Temp_coeff_avsdbgp_3v3.spice` |
| 262 | <p> </p> |
| 263 | The output plot as obtained can be seen below :- |
| 264 | <p> </p> |
| 265 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 266 | ![Temperature coefficient of Vbgp](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Post_Layout_Simulations/Results/temp_coeff.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 267 | <p> </p> |
| 268 | |
| 269 | ## Voltage Coefficient of Vbgp v/s VDD [ 2V - 4V] @ RL = 100M ohms plot |
| 270 | <p> </p> |
| 271 | On the terminal window, type :- |
| 272 | <p> </p> |
| 273 | |
| 274 | >`ngspice voltage_coeff_avsdbgp_3v3.spice` |
| 275 | <p> </p> |
| 276 | The output plot as obtained can be seen below :- |
| 277 | <p> </p> |
| 278 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 279 | ![Voltage coefficient of Vbgp](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Post_Layout_Simulations/Results/vol_coeff.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 280 | <p> </p> |
| 281 | |
| 282 | ## Start-Up Time of Vbgp @ RL = 100M ohms plot |
| 283 | <p> </p> |
| 284 | On the terminal window, type :- |
| 285 | <p> </p> |
| 286 | |
| 287 | >`ngspice Start_up_avsdbgp_3v3.spice` |
| 288 | <p> </p> |
| 289 | The output plot as obtained can be seen below :- |
| 290 | <p> </p> |
| 291 | |
an3ol | 2cfb914 | 2021-03-24 01:52:25 +0530 | [diff] [blame] | 292 | ![Start up circuit](https://raw.githubusercontent.com/vsdip/avsdbgp_3v3_sky130_v2/main/Post_Layout_Simulations/Results/Startup.png) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 293 | <p> </p> |
| 294 | |
an3ol | f12df8c | 2021-03-24 02:16:06 +0530 | [diff] [blame] | 295 | # Author |
| 296 | * [Anmol Purty](https://github.com/an3ol) |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 297 | |
an3ol | b65f0eb | 2021-03-24 02:23:48 +0530 | [diff] [blame] | 298 | # Acknowledgements |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 299 | |
an3ol | f12df8c | 2021-03-24 02:16:06 +0530 | [diff] [blame] | 300 | * [Kunal Ghosh](https://github.com/kunalg123), Co-founder of VLSI System Design (VSD) Corp. Pvt. Ltd. |
| 301 | * [Tim Edwards](https://github.com/RTimothyEdwards), Senior Vice President of Analog and Design at efabless corporation. |
an3ol | 77c768c | 2021-03-23 18:32:12 +0530 | [diff] [blame] | 302 | * [Sheryl Corina Serrao](https://github.com/sherylcorina), Undergraduate Student, Mumbai University. |
| 303 | |
| 304 | # Contact Information |
| 305 | * Anmol Purty - nmlpurty@gmail.com |