编写AIC工艺参数计算Matlab程序(疯狂踩坑)
写编写AIC工艺参数计算Matlab程序(疯狂踩坑)
- Hello!
- 所用语言:Matlab
- 原理介绍
- 程序结构
- 踩的坑
- 1、变量定义:
- 2、定义方程组
- 3、解方程
- 整体代码如下:
Hello!
写这篇博客的目的是记录写Cadence Virtuoso IC617仿真所用工艺库参数计算程序时遇到的问题。
所用语言:Matlab
原理介绍
链接: 用Cadence Virtuoso IC617仿真工艺库参数
程序结构
程序核心为解三元二次方程组,带沟道调制系数的饱和区电流公式如下:
- 定义变量:要求的未知数有:Kn、laman、Vtn。已知的变量有:W、L、Vgs1、Vgs2、Vds1、Vds2以及其对应的Ids
- 定义方程组:将不同的变量带入方程,得到方程组
- 解方程
踩的坑
1、变量定义:
变量定义:将变量以矩阵的形式定义,方便以后的调用
%定义变量
W = 220e-6;
L = 180e-7;
Valueids = [0 0.8 1.0;1 28.62 53.72;1.5 30.35 56.21];
Vgs = [Valueids(1,2),Valueids(1,3)];
Vds = [Valueids(2,1), Valueids(3,1)];
Ids = [Valueids(2,2) Valueids(2,3);Valueids(3,2) Valueids(3,3)];
2、定义方程组
定义方程组:将变量赋值到方程中,以得到四个不同的方程,**但是在之前一定要把空矩阵中的某个元素赋值为字符类型,否则无法将方程赋值为矩阵的元素!!**你一定能感受到我的痛苦。
%定义方程组
eq = zeros(2,2);
eq = [laman 0;0 0];
for i = 1:2for o = 1:2eq(o,i) = [Ids(o,i)*10e-7 == (1/2)*Kn*(W/L)*(Vgs(i)-Vtn)^2*(1+laman*Vds(o))];end
end
eq1 = eq(1,1);
eq2 = eq(1,2);
eq3 = eq(2,1);
eq4 = eq(2,2);
3、解方程
解方程:这里注意!**slove函数解出来的变量是一个字符矩阵,数据长度及其离谱,无法直接输出,**需要用double函数转化为小数,才能进行接下来的舍解操作。
Knmax = double(max(Kn));
Knmin = double(min(Kn));
lamanmax = double(max(laman));
lamanmin = double(min(laman));
Vtnmax = double(max(Vtn));
Vtnmin = double(min(Vtn));Kn = [Knmax Knmin];
laman = [lamanmax lamanmin];
Vtn = [Vtnmax Vtnmin];
这里的逻辑不严谨,欢迎大佬指正
舍解:将每个解代入第四个方程,误差最小的那组解为答案。
counter = 0;%对遍历次数进行计数,若为最大次数或者1次则结果可能不可靠for i = 1:2for o = 1:1for p = 1:2Knfinal = Kn(1,i)lamanfinal = laman(1,1)Vtnfinal = Vtn(1,p)counter = counter + 1;t = Ids(2,2)*10e-7 - (1/2)*Knfinal*(W/L)*(Vgs(2)-Vtnfinal)^2*(1+lamanfinal*Vds(2))if (abs(Ids(2,2)*10e-7 - (1/2)*Knfinal*(W/L)*(Vgs(2)-Vtnfinal)^2*(1+lamanfinal*Vds(2))) < 0.0000001)flag = 1;break;endendif flag == 1breakendendif flag == 1breakend
end
最后输出答案
counter
Knfinal
lamanfinal
Vtnfinal
整体代码如下:
clear,clc
syms Kn laman Vtn;
W = 220e-6;
L = 180e-7;
eq = zeros(2,2);
Valueids = [0 0.8 1.0;1 28.62 53.72;1.5 30.35 56.21];
Vgs = [Valueids(1,2),Valueids(1,3)];
Vds = [Valueids(2,1), Valueids(3,1)];
Ids = [Valueids(2,2) Valueids(2,3);Valueids(3,2) Valueids(3,3)];eq = [laman 0;0 0];for i = 1:2for o = 1:2eq(o,i) = [Ids(o,i)*10e-7 == (1/2)*Kn*(W/L)*(Vgs(i)-Vtn)^2*(1+laman*Vds(o))];end
endeq1 = eq(1,1);
eq2 = eq(1,2);
eq3 = eq(2,1);
eq4 = eq(2,2);[Kn,laman,Vtn] = solve(eq1,eq2,eq3,Kn,laman,Vtn);Knmax = double(max(Kn));
Knmin = double(min(Kn));
lamanmax = double(max(laman));
lamanmin = double(min(laman));
Vtnmax = double(max(Vtn));
Vtnmin = double(min(Vtn));Kn = [Knmax Knmin];
laman = [lamanmax lamanmin];
Vtn = [Vtnmax Vtnmin];counter = 0;for i = 1:2for o = 1:1for p = 1:2Knfinal = Kn(1,i)lamanfinal = laman(1,1)Vtnfinal = Vtn(1,p)counter = counter + 1;t = Ids(2,2)*10e-7 - (1/2)*Knfinal*(W/L)*(Vgs(2)-Vtnfinal)^2*(1+lamanfinal*Vds(2))if (abs(Ids(2,2)*10e-7 - (1/2)*Knfinal*(W/L)*(Vgs(2)-Vtnfinal)^2*(1+lamanfinal*Vds(2))) < 0.0000001)flag = 1;break;endendif flag == 1breakendendif flag == 1breakend
end
counter
Knfinal
lamanfinal
Vtnfinal
编写AIC工艺参数计算Matlab程序(疯狂踩坑)相关推荐
- matlab中if语句多个_科学计算 | MATLAB程序设计基础
点击"蓝字"关注我们 科学计算 | MATLAB程序设计基础 引言 在前面的学习中,我们都是在命令行窗口逐条输入命令,然后由matlab解释执行,这种交互式的命令执行方式,操作简单 ...
- 电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法、半不变量法+级数展开
电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法.半不变量法+级数展开(Gram-Charlie,Cornish-Fisher): 考虑光伏不确定性(Beta分布),以IEEE34节点为 ...
- 基于交替迭代法的交直流混合系统潮流计算matlab程序iEEE9节点系统算例
基于交替迭代法的交直流混合系统潮流计算matlab程序iEEE9节点系统算例 由于受端负荷量持续增大,直流输电受端系统的电压稳定性能自然引起了人们的关注.目前,交直流混合电网的电压稳定分析大致分为两类 ...
- 方形平板振动克拉尼图形可视化计算MATLAB程序(Chladni Patterns)
方形平板振动克拉尼图形可视化计算MATLAB程序(Chladni Patterns) 0前言 1 数值时域求解 1.1 方程建立 1.2 数值差分方程建立 1.3 计算结果 2 简单的波动解 3 理论 ...
- 基于两相静止坐标系上的状态方程的感应电动机起动动态计算matlab程序
基于两相静止坐标系上的状态方程的感应电动机起动动态计算matlab程序 1 静止两相正交坐标系中的动态数学模型 1.1 定子绕组和转子绕组的3/2变换 对静止的定子三相绕组和旋转的转子三相绕组进行相同 ...
- 基于蒙特卡洛法的电动汽车充电负荷计算matlab程序
目录 一.充电概率分布 二.日行驶里程 三.无序充电负荷模型 四.蒙特卡洛法分析 一.充电概率分布 代码如下: us=17.6;ds=3.4; fs1=@(x)1/(ds*(2*pi)^0.5 ...
- 基于三相坐标系状态方程的感应电动机起动动态计算matlab程序
基于三相坐标系状态方程的感应电动机起动动态计算matlab程序 1 异步电动机动态数学模型的性质 电磁耦合是机电能量转换的必要条件,电流与磁通的乘积产生转矩,转速与磁通的乘积得到感应电动势.无论是直流 ...
- 天然气潮流计算matlab程序
天然气潮流计算matlab程序 1 天然气潮流计算理论 由于天然气涉及到流体的运动方程,直接计算非常复杂,因此需要提前做出一些假设来简化计算,经过研究,适当的假设对结果影响很小,因此本文对天然气系统做 ...
- 电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法
电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法.半不变量法+级数展开(Gram-Charlie,Cornish-Fisher): 考虑光伏不确定性(Beta分布),以IEEE34节点为 ...
最新文章
- 网络工程师成长日记365-IBIS西安工程回忆录
- git 本地仓库同时推送到多个远程仓库
- 最大熵模型:读书笔记
- delphi 如何判断编码格式,解决乱码问题
- 1808: FJ的字符串
- 思科AP-什么是COS AP?
- 如何判断一个程序是 32bit 还是 64bit ?
- Linux 等待进程结束 wait() 和 waitpid()
- 打印机更换感光鼓单元k_干货,激光打印机常见故障维修方法总结
- 什么是bcd码数据传输通讯_传输障碍| 数据通讯
- C语言数据类型转换详解
- c语言数据类型、运算符和表达式
- 8086寄存器的配合使用
- docker在win7下的使用
- 初中计算机网络操作题,初中信息技术中考excel操作题
- Redis HyperLogLog 是什么?这些场景使用它,让我枪出如龙,一笑破苍穹
- 1331:【例1-2】后缀表达式的值
- 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了
- matlab 常值函数,matlab常用数值函数大全
- IP地址和网络地址及广播地址解析