写编写AIC工艺参数计算Matlab程序(疯狂踩坑)

  • Hello!
  • 所用语言:Matlab
    • 原理介绍
    • 程序结构
    • 踩的坑
      • 1、变量定义:
      • 2、定义方程组
      • 3、解方程
    • 整体代码如下:

Hello!

写这篇博客的目的是记录写Cadence Virtuoso IC617仿真所用工艺库参数计算程序时遇到的问题。

所用语言:Matlab

原理介绍

链接: 用Cadence Virtuoso IC617仿真工艺库参数

程序结构

程序核心为解三元二次方程组,带沟道调制系数的饱和区电流公式如下:

  1. 定义变量:要求的未知数有:Kn、laman、Vtn。已知的变量有:W、L、Vgs1、Vgs2、Vds1、Vds2以及其对应的Ids
  2. 定义方程组:将不同的变量带入方程,得到方程组
  3. 解方程

踩的坑

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程序(疯狂踩坑)相关推荐

  1. matlab中if语句多个_科学计算 | MATLAB程序设计基础

    点击"蓝字"关注我们 科学计算 | MATLAB程序设计基础 引言 在前面的学习中,我们都是在命令行窗口逐条输入命令,然后由matlab解释执行,这种交互式的命令执行方式,操作简单 ...

  2. 电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法、半不变量法+级数展开

    电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法.半不变量法+级数展开(Gram-Charlie,Cornish-Fisher): 考虑光伏不确定性(Beta分布),以IEEE34节点为 ...

  3. 基于交替迭代法的交直流混合系统潮流计算matlab程序iEEE9节点系统算例

    基于交替迭代法的交直流混合系统潮流计算matlab程序iEEE9节点系统算例 由于受端负荷量持续增大,直流输电受端系统的电压稳定性能自然引起了人们的关注.目前,交直流混合电网的电压稳定分析大致分为两类 ...

  4. 方形平板振动克拉尼图形可视化计算MATLAB程序(Chladni Patterns)

    方形平板振动克拉尼图形可视化计算MATLAB程序(Chladni Patterns) 0前言 1 数值时域求解 1.1 方程建立 1.2 数值差分方程建立 1.3 计算结果 2 简单的波动解 3 理论 ...

  5. 基于两相静止坐标系上的状态方程的感应电动机起动动态计算matlab程序

    基于两相静止坐标系上的状态方程的感应电动机起动动态计算matlab程序 1 静止两相正交坐标系中的动态数学模型 1.1 定子绕组和转子绕组的3/2变换 对静止的定子三相绕组和旋转的转子三相绕组进行相同 ...

  6. 基于蒙特卡洛法的电动汽车充电负荷计算matlab程序

    目录 一.充电概率分布 二.日行驶里程 ​ 三.无序充电负荷模型 ​ 四.蒙特卡洛法分析 一.充电概率分布 代码如下: us=17.6;ds=3.4; fs1=@(x)1/(ds*(2*pi)^0.5 ...

  7. 基于三相坐标系状态方程的感应电动机起动动态计算matlab程序

    基于三相坐标系状态方程的感应电动机起动动态计算matlab程序 1 异步电动机动态数学模型的性质 电磁耦合是机电能量转换的必要条件,电流与磁通的乘积产生转矩,转速与磁通的乘积得到感应电动势.无论是直流 ...

  8. 天然气潮流计算matlab程序

    天然气潮流计算matlab程序 1 天然气潮流计算理论 由于天然气涉及到流体的运动方程,直接计算非常复杂,因此需要提前做出一些假设来简化计算,经过研究,适当的假设对结果影响很小,因此本文对天然气系统做 ...

  9. 电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法

    电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法.半不变量法+级数展开(Gram-Charlie,Cornish-Fisher): 考虑光伏不确定性(Beta分布),以IEEE34节点为 ...

最新文章

  1. 网络工程师成长日记365-IBIS西安工程回忆录
  2. git 本地仓库同时推送到多个远程仓库
  3. 最大熵模型:读书笔记
  4. delphi 如何判断编码格式,解决乱码问题
  5. 1808: FJ的字符串
  6. 思科AP-什么是COS AP?
  7. 如何判断一个程序是 32bit 还是 64bit ?
  8. Linux 等待进程结束 wait() 和 waitpid()
  9. 打印机更换感光鼓单元k_干货,激光打印机常见故障维修方法总结
  10. 什么是bcd码数据传输通讯_传输障碍| 数据通讯
  11. C语言数据类型转换详解
  12. c语言数据类型、运算符和表达式
  13. 8086寄存器的配合使用
  14. docker在win7下的使用
  15. 初中计算机网络操作题,初中信息技术中考excel操作题
  16. Redis HyperLogLog 是什么?这些场景使用它,让我枪出如龙,一笑破苍穹
  17. 1331:【例1-2】后缀表达式的值
  18. 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了
  19. matlab 常值函数,matlab常用数值函数大全
  20. IP地址和网络地址及广播地址解析

热门文章

  1. 2015年元旦百度新年大K站的情报汇总
  2. 跑跑卡丁车手游国际服服务器维护,跑跑卡丁车手游
  3. U盘安装系统实用全面教程(单系统(windows10,windows7,ubuntu),双系统(ubuntu+windows))
  4. 电子海报怎么制作?分享一个好用的技巧
  5. linux ubuntu 玩游戏
  6. 获取图片地址的最后的图片名称
  7. 前端将图表和表格导出为PDF
  8. php类图怎么画,类图怎么画?
  9. 神经网络的起源和发展,人工神经网络发展历史
  10. 微型计算机内部安徽一词占几个字节,安徽理工大学计算机题库.doc