在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 20294|回复: 14

[求助] HSPICE怎么仿真出NMOS I-V特性曲线

[复制链接]
发表于 2020-10-19 13:45:38 | 显示全部楼层 |阅读模式
100资产
新人   刚开始学   老师布置的作业是将I-V曲线彷出来,我想的是设置两个扫描,一个扫VGS,一个扫VDS,然后看波形的时候将VDS作为X-axis。但是VDS扫描的步长不能为零,然后设置VDS步长的话彷出来的结果又不对。有没有什么办法可以让VDS连续变化啊,或者有没有大佬可以给出更好的解决方法。谢谢了。这两幅图是我的节点和我的程序。
IMG_0186.JPG
D5_6M7M54P@]]5M_XQY19$S.png

最佳答案

查看完整内容

我的做法如下(单一网表输出多个结果文件) 1、固定Vgs,扫描Vds(基本扫描); 例: .param vgs=0 .DC vds 0 3 0.01 2、在网表的.end语句前加入以下语句变化Vgs(参数化扫描) .alter .protect .param vgs=0.2 .unprotect (将vgs修改为0.2,重新对运行仿真网表直到下一个alter语句到来) .alter .protect .param vgs=0.4 .unprotect (要几个Vgs的值就加几条语句) 在linux上面跑,会有几个结果,用看波形的软件同时打开这几个结果文 ...
发表于 2020-10-19 13:45:39 | 显示全部楼层
我的做法如下(单一网表输出多个结果文件)
1、固定Vgs,扫描Vds(基本扫描);
例:
.param vgs=0
.DC vds 0 3 0.01
2、在网表的.end语句前加入以下语句变化Vgs(参数化扫描)
.alter
.protect
.param vgs=0.2
.unprotect
(将vgs修改为0.2,重新对运行仿真网表直到下一个alter语句到来)
.alter
.protect
.param vgs=0.4
.unprotect
(要几个Vgs的值就加几条语句)
在linux上面跑,会有几个结果,用看波形的软件同时打开这几个结果文件就可以有你手画的效果。
发表于 2020-10-21 10:30:44 | 显示全部楼层
假设Vds的变化范围从0到Vdssafe,即0到0.3V左右,不考虑一下步长设置为1mV或者0.1mV吗?对应也有300到3000个点了。
其实可以先固定一个Vgs,单独扫描Vds,得到一条曲线;
变换Vgs,扫描Vds,得到下一条曲线;
用waveviewe将几次仿真的曲线显示在一个图里。
发表于 2020-10-21 12:46:09 | 显示全部楼层


ol0930 发表于 2020-10-21 10:30
假设Vds的变化范围从0到Vdssafe,即0到0.3V左右,不考虑一下步长设置为1mV或者0.1mV吗?对应也有300到3000 ...




m1 vd vg 0 0 n w=xx l=xx m=1

vd vd 0 vds

vg vg 0 vg

.param  vds=5 vg=5  

.dc vds 0 5 0.1   sweep vg poi 5 0.1 1 2 3 4

.probe dc i(m1)



 楼主| 发表于 2020-10-21 19:31:02 | 显示全部楼层


ol0930 发表于 2020-10-21 10:30
假设Vds的变化范围从0到Vdssafe,即0到0.3V左右,不考虑一下步长设置为1mV或者0.1mV吗?对应也有300到3000 ...


image.png 你好,感谢你的回复,这是我改变步长之后将Vds作为横坐标然后输出IDS的图,感觉不对,而且你说的单独控制VGS,然后变化VDS,得到ID,这个我可以做到,但是怎么样合在一起,是只需要一个程序合在一起,还是好几个.SP文件,每个文件都要得到一个ID,然后合在一起。最后再次表示感谢。 image.png 这是我在VMOD后面将步长改为0.01后的程序。只改一个0.01,其他没动
 楼主| 发表于 2020-10-21 19:36:29 | 显示全部楼层


andy2000a 发表于 2020-10-21 12:46
m1 vd vg 0 0 n w=xx l=xx m=1

vd vd 0 vds


你好 感谢你的回复,你写的大概意思我可以理解,定义MOS管的语句前四个我知道是四个节点的连接,后一个是N型。但是这句w=xx l=xx m=1话是什么意思不太了解。不过我之后可以跑跑你写的。或许会有新的发现。  再次感谢。
发表于 2020-10-22 14:14:11 | 显示全部楼层


周小健 发表于 2020-10-21 19:36
你好 感谢你的回复,你写的大概意思我可以理解,定义MOS管的语句前四个我知道是四个节点的连接,后一个是 ...


  
W L mos W/L, 我又不知道你要给多少 , 当然写xx ,
你用哪家工艺 w l wmaxwmin  lmax lmin 都要去看  

 楼主| 发表于 2020-10-30 17:38:47 | 显示全部楼层


andy2000a 发表于 2020-10-22 14:14
W L 是 mos 管 W/L, 我又不知道你要给多少 , 当然写xx ,
你用哪家工艺 w l 的 wmaxwmin  lmax lmin 都 ...


你好   感谢你的回复  我的问题已经解决,SWEEP两边的参数对调一下就行了   image.png
 楼主| 发表于 2020-10-30 17:43:51 | 显示全部楼层


ol0930 发表于 2020-10-22 19:52
我的做法如下(单一网表输出多个结果文件)
1、固定Vgs,扫描Vds(基本扫描);
例:


你好  我的问题已经解决  不过还是感谢你写了这么多   image.png 这是我写的,相较之前我写的错误程序,在于SWEEP两边的扫描顺序是有讲究的。   不过感觉你写的比较用心,也解释的比较清楚,就把最佳给你罢。也感谢其他人的热心支持
发表于 2020-11-4 15:44:11 | 显示全部楼层


周小健 发表于 2020-10-30 17:43
你好  我的问题已经解决  不过还是感谢你写了这么多  这是我写的,相较之前我写的错误程序,在于SWEEP两 ...


你的方式更加简洁,而且就是hspice 的command reference上介绍的形式。下附reference的例子:
Sweep or Parameterized Sweep:
  • .DC var1 START=start1 STOP=stop1 STEP=incr1

  • .DC var1 START=[param_expr1]+ STOP=[param_expr2] STEP=[param_expr3]

  • .DC var1 start1 stop1 incr1+ [SWEEP var2 type np start2 stop2]

  • .DC var1 start1 stop1 incr1 [var2 start2 stop2 incr2]

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 09:48 , Processed in 0.024407 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表