拉扎维模拟CMOS集成电路python建模工程——从绘制NMOS与PMOS输出特性曲线开始

目录

拉扎维模拟CMOS集成电路python建模工程——从绘制NMOS与PMOS输出特性曲线开始

我为什么要开这个坑?

绘制NMOS与PMOS输出特性曲线

体效应与阈值电压计算

输出阻抗、本征阻抗与跨导


我为什么要开这个坑?

本项目主要参考Behzad Razavi教授撰写的《Design of Analog CMOS Integrated Circuits》,中译本名称《模拟CMOS集成电路设计》。在行业内部,该书一直被称为“模电圣经”,是每一个学习模拟电路的学子必然要精读的经典教材。但仅从书本出发理解电路,其过程往往枯燥且难以具有启发性。引用译者的话:“模拟电路设计需要直观、严密和创新,在阐述各种模拟电路的改进和新电路结构的产生时,着重观察和分析,不断地提出问题和解决问题。”如果能够用软件建模的方式对书中的各个电路结构及设计理念进行模拟与分析,其意义是多方面的。一来能为我们在学习模拟电路设计的过程中提供一个具象化的参考,当对某些电路结构的机理无法理解时,GUI化的交互方式将为我们理解参数对电路的影响提供巨大的帮助。二来软件建模的方式将为我们在解决工程中的实际问题时提供强有力的参照。因为很多时候我们遇到的工程实际问题其实在书中都有相关的分析,但因为遗忘的因素导致我们会在很长一段时间处于彷徨与疑惑的状态,在网上地毯式搜寻解决方案,而可视化的建模分析将在很大程度上加深对一些特殊电路结构的印象,保证在解决工程问题时提供不竭的灵感源泉。第三点也可能是最不重要的一点,使用模型帮助阅读这本圣经可能会为这枯燥的过程提供些许乐趣。不得不承认的是,拉扎维老哥在写这本书的时候思路是十分跳跃的,往往为了解决一个问题提出一个新的电路结构,之后又为了解决这个电路结构带来的新问题再继续搞一个新的结构出来,一个结构堆一个结构,搞的我们十分痛苦。如果本工程能为大家在阅读这本书时提供更多的乐趣,相信拉扎维老爷子是会十分支持的。

项目托管于我的github账号,运行平台为jupyter notebook。读者可以直接clone到本地进行运行和试验。链接:https://github.com/JohnsonZ-microe/D-Razavi_Analog_CMOS_python

绘制NMOS与PMOS输出特性曲线

公式如下:

BI集成python python 集成电路_输出特性

利用mpl-interactions可以轻松plot出可交互式的输出特性曲线,效果如图:

BI集成python python 集成电路_建模_02

考虑沟道电流调制效应后:

BI集成python python 集成电路_BI集成python_03

上图为考虑沟道电流调制效应PMOS的输出特性曲线,可以看到在饱和区与三极管区的交界处,输出特性曲线存在巨大的不连续性,这是Level 1模型的局限性,因为其并没有考虑进任何短沟道效应以及亚阈值导电效应,故该模型仅适用于4um以上工艺的仿真。

下面灰色方框中V_DS始终为0的原因是,其已经作为自变量参与输出特性曲线的绘制中了,故其显示的仅仅是模型初始化时候的值,在本例中没有任何意义。但在后续应用该模型的时候,有时存在V_DS变化而V_GS参与plot的情况,此时就可以直接复制这里的代码,只需将V_GS设置为自变量,观察V_DS的变化即可。

体效应与阈值电压计算

一些关键的知识点已附在notebook中:

BI集成python python 集成电路_输出特性_04

代码测试:

BI集成python python 集成电路_输出阻抗_05

当源极与衬底之间电压为1V时,由于体效应,阈值电压上升至0.89V左右。因为在沟道形成反型层之前,一部分阈值电压用于抵消因体效应而在栅氧上镜像的电荷,故MOS进入强反型状态需要更高的电压。

栅氧化层厚度对阈值电压也有较大影响,根据陈星弼《微电子器件》p211页中的讨论,栅氧化层厚度tox越大,栅氧化层电容Cox越小,体效应系数gamma的值便越大,体效应越严重。 另根据p209页讨论,在其他条件都相同时,通常tox越薄,阈电压的绝对值越小。

BI集成python python 集成电路_输出阻抗_06

值得注意的是,书中对于tox与Cox的关系描述是:

BI集成python python 集成电路_输出特性_07

我反复计算发现这一个结论可能存在数量级上的错误,故在建模时作了一些改动,改为:

BI集成python python 集成电路_输出阻抗_08

输出阻抗、本征阻抗与跨导

输出阻抗一般用于饱和区分析,而本征阻抗用于深三级管区分析,他们的公式都附在了notebook中。

输出阻抗与跨导的计算书中都给出了多个公式,本模型可以通过指定不同的equation_number的值来选择合适的公式,在notebook中选取了书上的习题2.2对模型进行验证,可以看到在equation_number=1即选择了式(2.19)进行跨导计算,成功得出了结果!

BI集成python python 集成电路_建模_09

BI集成python python 集成电路_输出特性_10