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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5350|回复: 7

[原创] 求助前辈,用Cadence仿真的图形,怎么导出用Matlab重新画

[复制链接]
发表于 2020-10-27 14:01:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
要写论文,论文要求仿真图不能是Cadence 那种仿真图。
求助前辈们,这种模拟的仿真图要怎么从Cadence 导出(截图不算),有什么教程可以在Matlab里面重新画一遍?或者其他软件?谢谢大家了
发表于 2020-10-27 14:37:04 | 显示全部楼层
导出CSV应该就可以用Excel、origin、matlab了吧
发表于 2020-10-27 16:04:03 来自手机 | 显示全部楼层
直接打印成PDF也可以用啊
发表于 2020-10-27 17:05:55 | 显示全部楼层
我之前的论文是cadence仿真图上取点,导出点的数据,在matlab中写几行简单的绘图代码重新画出来的。
发表于 2020-10-27 18:51:20 | 显示全部楼层
Try a Matlab code to access the Spectre result directly
=====
% There are two methods to access the Spectre simulation dataset
% method 1: select all the plotted trace in Wavescan and save to *.csv
% method 2: use the Cadence-Matlab toolbox function call to read the dataset directly
% edit by wjlee 2013/11
clear;
close all;
w=2e-6; % MOS channel width 2um
l=0.5-6; % MOS channel length 0.5um

%%%%%%%%%%%%
%% method 1(work for PC/workstation)
%%%%%%%%%%%%
%n18=importdata('n18.csv'); % import the csv file with header
%nums=length(n18.textdata); % count for plotted traces
%for i= 2:2:nums,
%y=cell2mat(n18.textdata(i)); % get variable name from header
%y = y(1:end-2);
%eval([y ' = n18.data(:,i);']);
%end
%%%%%%%%%%%%

%%%%%%%%%%%%%
%%% method 2(work for workstation with mmsim1310.066)
%%%%%%%%%%%%%
resdir='/data63/abc/simulation/t_rdp/spectre/schematic/psf'
y=cds_srr(resdir,'dcOpInfo-info','MN:id');
idn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:id');
idp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:vth');
vthn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:vth');
vthp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:gm');
gmn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:gm');
gmp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:gmbs');
gmbsn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:gmbs');
gmbsp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:gds');
gdsn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:gds');
gdsp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:cgg');
cggn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:cgg');
cggp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:cgs');
cgsn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:cgs');
cgsp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:cgd');
cgdn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:cgd');
cgdp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:cgb');
cgbn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:cgb');
cgbp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:cdd');
cddn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:cdd');
cddp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:css');
cssn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:css');
cssp=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MN:vgs');
vgsn=y.bsim3v3;
y=cds_srr(resdir,'dcOpInfo-info','MP:vgs');
vgsp=y.bsim3v3;
%%%%%%%%%%%%%
vovn=vgsn-vthn;
vovp=-1*(vgsp-vthp);
xaxn=vgsn; xlbl='Vgs';   % x axis as Vgs
xaxp=-1*(vgsp); xlbl='Vgs';   % x axis as Vgs
%xaxn=vovn; xlbl='Vov';   % x axis as Vov
%xaxp=vovp; xlbl='Vov';   % x axis as Vov
ftn=gmn./(6.28*cggn);
ftp=gmp./(6.28*cggp);
% The id/vgs/vth in PMOS is negative value, we run abs() over it to match with NMOS

%% Plot and process the collected dataset
subplot(321);
plot(xaxn,ftn,'r-');
hold on
plot(xaxp,ftp,'b-');
title(strcat('ft vs. ', xlbl)); xlabel(xlbl); grid on;
subplot(323);
plot(xaxn,gmn./idn,'r-');
hold on;
plot(xaxp,gmp./abs(idp),'b-');
title(strcat('gm/Id vs. ', xlbl)); xlabel(xlbl); grid on;
subplot(325);
plot(xaxn,idn/w,'r-');
hold on;
plot(xaxp,abs(idp)/w,'b-');
title(strcat('Id/W vs. ', xlbl)); xlabel(xlbl); grid on;
subplot(322)
plot(xaxn,ftn.*gmn./idn,'r-')
hold on;
plot(xaxp,ftp.*gmp./abs(idp),'b-')
title(strcat('ft*gm/Id vs. ', xlbl)); xlabel(xlbl);; grid on;
subplot(324)
plot(idn/w, gmn./idn,'r-')
hold on;
plot(abs(idp)/w, gmp./abs(idp),'b-')
title('gm/Id vs. Id/W'); xlabel('Id/W'); grid on;
subplot(326)
plot(ftn, gmn./idn,'r-')
hold on;
plot(ftp, gmp./abs(idp),'b-')
title('gm/Id vs. ft'); xlabel('ft'); grid on;

%save device parameter to matlab file
%save sdp
=====
发表于 2020-10-28 12:44:16 | 显示全部楼层
用ocnPrint把曲线打印出来,读取到matlab做处理
具体用法在论坛里搜oceanref这个pdf
 楼主| 发表于 2020-10-28 14:58:27 | 显示全部楼层


老尤皮 发表于 2020-10-28 12:44
用ocnPrint把曲线打印出来,读取到matlab做处理
具体用法在论坛里搜oceanref这个pdf ...


好的谢谢
发表于 2023-4-26 10:57:26 | 显示全部楼层


rfjungle 发表于 2020-10-27 18:51
Try a Matlab code to access the Spectre result directly
=====
% There are two methods to access the  ...


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

本版积分规则

关闭

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

X

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

GMT+8, 2025-5-31 07:16 , Processed in 0.020554 second(s), 6 queries , Gzip On, MemCached On.

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