Hi all, I have an R script which runs well in Command line, but not from R Studio. I have used a package called, "Spectre". I installed the package from GitHub. But not sure why the problem is occurring.
I'm attaching my code, just for reference. I'm not able to come up with a reproducible error since my code deals with Spectre related files. I assume I can get insights on whether there should be any changes adopted while running it from R studio. My code is big. I'm attaching it based on file names,
simESDFET_vf_ys.R
#rm(list=ls());
source('simDev_func_v4_sblk.R');
dt = data.frame()
## USER INPUT STARTS HERE
S = list()
#S$W = c(800)*1e-6
S$W = c(400)*1e-6
S$L = rep(1.5e-6)
S$NF = c(10)
#S$NF = c(16)
#S$LDOP = rep(3.9e-6,length(S$W))
#S$LSOP = rep(0.28e-6,length(S$W))
#S$DCGS =rep(4e-6,length(S$W))
S$ModelFile[1] = 'C:/Users/sanja/Desktop/130gf/130gf/130BCDLiteGen2/Models/Spectre/130BCDLG2_wrapper.scs'
S$ModelFile[2] = 'C:/Users/sanja/Desktop/130gf/130gf/130BCDLiteGen2/Models/Spectre/130BCDLG2_wrapper.scs'
S$ModelFile[3] = 'C:/Users/sanja/Desktop/130gf/130gf/130BCDLiteGen2/Models/Spectre/130BCDLG2_wrapper.scs'
S$ModelFile[4] = 'C:/Users/sanja/Desktop/130gf/130gf/130BCDLiteGen2/Models/Spectre/130BCDLG2_wrapper.scs'
S$ModelFile[5] = 'C:/Users/sanja/Desktop/130gf/130gf/130BCDLiteGen2/Models/Spectre/design.scs'
S$Section = c('esd_typical','typical','diode_typical','res_typical','')
S$Model_sh = 'esdnsh_5p0'
#system('spectre run.scs -f psfascii +l mylog.txt >> /dev/null')
S$terminals = c('d','s','s','s')
S$values = c(0,0)
S$swp = list('d',c(0.1,15,0.1))
S$temperature = 27
simesd = 'y'
savesimdata = 'y'
CallFet = 'n'
filename = 'sim_relHP.dat'
m=1
dtemp=0
#S$devparams_fet = list(par=par,ptwell=ptwell)
#S$devparams_sh = list(esd_cadoxide=esdoxide,ldop='0.6u',lsop='0.22u',gns=gns)
S$devparams_sh = list(m=m,dtemp=dtemp)
event = c(1)
## USER INPUT ENDS HERE
event_name = c('100ns')
## Parameters are shown below
##parameters wesd=1u lesd=1u esdoxide=1 nf=1 ldop=2u lsop=0.44u gns=0
dt_big=data.frame()
if (simesd == 'y'){
cat("IDVGLIN\n")
cat("Corner:tt\n")
for(i in event){
cat(c("ESD EVENT:",i,"\n"))
cat(i)
S$esd_event=i
dt = simDev_func_v4_sblk(S)
dt['TLP']=event_name[i]
dt['TotalWidth'] = dt$W*1e6
# dt['TotalWidth'] = dt$W
dt_big=rbind.fill(dt_big, dt)
}
# dt_big['Corner'] = 'tt'
# dt_big['gns'] = gns
}
if (savesimdata == 'y'){
write.table(dt_big, file = filename, sep = ";",quote=F,row.names=F)
}
#x11(type='Xlib')
#p=qplot(data=dt_big, x=vd,y=abs(Id),geom="point")
#p=p+facet_wrap(~TotalWidth)
#print(p)
write.table(dt_big, "output.csv", sep=";")
#source("esd_data_analysis_v2.R")
source("csv1_esd_data_analysis_v2.r")
simDev_func_v4_sblk.R
simDev_func_v4_sblk<- function(L){
## The list has the following fields
## W = Widths
## L = Lengths
## NF = Number of fingers
## ModelFile
## Model
## Section
## terminals
## values
## swp
## FIRST DELETE THE FILE run.scs IF IT ALREADY EXISTS
if (file.exists('run.scs')){
system('\\rm run.scs')
}
##if (!dir.create('run.raw',showWarnings=F)){
system('\\rm -rf run.raw')
system('\\rm -rf run_data')
##}
dir.create('run_data',showWarnings=F)
## DEFINE TERMINALS AND VALUES FOR VARIOUS PURPOSES
## 4 PLACES WHERE TERMINALS AND VALUES ARE NEEDED
## - parameter STATEMENT : parameters vd=0 vg=0.1 vs=0
## 2- instantiation STATEMENT : M1(d1 g1 s1 b1)
## 3- voltage sources STATEMENT : vd1(d1 0) vsource
## 4- saving currents STATEMENT : print I(vd1),I(vg1),I(vs1),
## MAKE TERMINALS AND VALUES FOR THE PARAMETER STATEMENT
S$terminalsp = unique(S$terminals)
S$valuesp = S$values[unique(match(S$terminals,S$terminalsp))]
## MAKE TERMINALS AND VALUES FOR THE INSTANTIATION STATEMENT
## Same as original terminals
## MAKE TERMINALS AND VALUES FOR THE VOLTAGE STATEMENT
S$terminalsv = unique(S$terminals)
## MAKE TERMINALS AND VALUES FOR THE SAVING CURRENT STATEMENT
S$terminals_save = unique(S$terminals)
ipFile = 'run.scs'
fConn <- file(ipFile,open="w")
writeLines('simulator lang=spectre\n', con = fConn, sep = "")
writeLines('global 0\n', con = fConn, sep = "")
# writeLines('parameters wireopt=4222\n', con = fConn, sep = "")
# writeLines('parameters vnw=1.8\n', con = fConn, sep = "")
## PUT THE PARAMETERS STATEMENT
writeLines(c('parameters ',paste('v',S$terminalsp,'=',S$valuesp,' ',sep=''),'\n'),con=fConn,sep="")
## Make strings for W,L,NF,
tmpvar = seq(1:length(S$W))
S$Wp = paste('W_',tmpvar,sep="") ; Wp_str = paste(S$Wp,'=',S$W,' ',sep="")
S$Lp = paste('L_',tmpvar,sep="") ; Lp_str = paste(S$Lp,'=',S$L,' ',sep="")
S$NFp = paste('NF_',tmpvar,sep="") ; NFp_str = paste(S$NFp,'=',S$NF,' ',sep="")
#S$DCGSp = paste('DCGS_',tmpvar,sep="") ; DCGSp_str = paste(S$DCGSp,'=',S$DCGS,' ',sep="")
writeLines(c('parameters ',Wp_str,'\n'),con=fConn,sep="")
writeLines(c('parameters ',Lp_str,'\n'),con=fConn,sep="")
writeLines(c('parameters ',NFp_str,'\n'),con=fConn,sep="")
#writeLines(c('parameters ',DCGSp_str,'\n'),con=fConn,sep="")
## #########################################
## INCLUDE MODELFILES AND SECTIONS
## #########################################
for (cnt in seq(1,length(S$ModelFile))) {
writeLines(c('include \"', S$ModelFile[cnt], '\"'),con=fConn,sep="")
if (nchar(S$Section[cnt]) > 0){
S$Section[cnt] = gsub("(^ +)|( +$)", "",S$Section[cnt])
writeLines(c(' section=',S$Section[cnt]),con=fConn,sep="")
}
writeLines('\n',con=fConn,sep="")
}
# writeLines(c('eventalter alter param=esd_event value=', S$esd_event,'\n'), con=fConn, sep="")
# writeLines(c('exitalter alter param=esd_exit value=1\n' ), con=fConn, sep="")
## #########################################
## NOW WRITE THE INSTANTIATIONS
## #########################################
##### ESDNSH_instantiation
writeLines('\n',con=fConn,sep="")
for (cnt in seq(1,length(S$W))) {
writeLines(c('X',cnt,'('),con=fConn,sep="")
writeLines(paste(S$terminals,cnt,sep=""),con=fConn,sep=" ")
# writeLines(paste(S$terminals[1],cnt,sep=""),con=fConn,sep=" ")
# writeLines(paste(S$terminals[2],cnt,'_E',sep=""),con=fConn,sep=" ")
# writeLines(paste(S$terminals[3],cnt,sep=""),con=fConn,sep=" ")
# writeLines(paste(S$terminals[4],cnt,'_E',sep=""),con=fConn,sep=" ")
## tmp = seq(3,length(S$terminals),1)
## writeLines(paste(S$terminals[tmp],cnt,sep=""),con=fConn,sep=" ")
# writeLines(paste(S$terminals[tmp],cnt,'_E',sep=""),con=fConn,sep=" ")
writeLines(c(')',' ',S$Model_sh,' '),con=fConn,sep="")
writeLines(c('w=',S$Wp[cnt],' '),con=fConn,sep="")
# writeLines(c(' w=', S$Wp[cnt],'/',S$NFp[cnt]),con=fConn,sep="")
writeLines(c(' l=', S$Lp[cnt]),con=fConn,sep="")
writeLines(c(' nf=' ,S$NFp[cnt]),con=fConn,sep="")
#writeLines(c(' dcgs=' ,S$DCGSp[cnt]),con=fConn,sep="")
writeLines(paste(' ',names(S$devparams_sh),'=',unlist(S$devparams_sh),sep=""),con=fConn,sep="")
writeLines('\n',con=fConn,sep="")
########## BASE FET Instatiation
# writeLines('\n',con=fConn,sep="")
# for (cnt in seq(1,length(S$W))) {
if (CallFet=='y') {
writeLines(c('M',cnt,'('),con=fConn,sep="")
# writeLines(paste(S$terminals,cnt,sep=""),con=fConn,sep=" ")
writeLines(paste(S$terminals[1],cnt,sep=""),con=fConn,sep=" ")
writeLines(paste(S$terminals[2],cnt,'_E',sep=""),con=fConn,sep=" ")
writeLines(paste(S$terminals[3],cnt,sep=""),con=fConn,sep=" ")
writeLines(paste(S$terminals[4],cnt,'_E',sep=""),con=fConn,sep=" ")
# tmp = seq(3,length(S$terminals),1)
writeLines(paste('0 0'),con=fConn,sep=" ")
# writeLines(paste(S$terminals[tmp],cnt,'_E',sep=""),con=fConn,sep=" ")
writeLines(c(')',' ',S$Model_fet,' '),con=fConn,sep="")
writeLines(c('w=',S$Wp[cnt],' '),con=fConn,sep="")
# writeLines(c(' w=', S$Wp[cnt],'/',S$NFp[cnt]),con=fConn,sep="")
writeLines(c(' l=', S$Lp[cnt]),con=fConn,sep="")
writeLines(c(' nf=', S$NFp[cnt]),con=fConn,sep="")
writeLines(paste(' ',names(S$devparams_fet),'=',unlist(S$devparams_fet),sep=""),con=fConn,sep="")
writeLines('\n',con=fConn,sep="") }
## #########################################
## SBLK RESISTORS
## #########################################
# writeLines('\n',con=fConn,sep="")
# writeLines(c('RD',cnt,'(d',cnt,'_E d',cnt,' 0) sblkndres '),con=fConn,sep="")
## writeLines(c('RD',cnt,'(d',cnt,'_E d',cnt,' vnw) sblkpdres '),con=fConn,sep="")
## writeLines(c('w=',S$Wp[cnt],' '),con=fConn,sep="")
# writeLines(c(' w=', S$Wp[cnt],'*',S$NFp[cnt],' '),con=fConn,sep="")
# writeLines(c('l=',S$LDOP[cnt],' '),con=fConn,sep="")
# writeLines(c('esdoxide=',esdoxide,' '),con=fConn,sep="")
# writeLines('\n',con=fConn,sep="")
# writeLines(c('RS',cnt,'(s',cnt,'_E s',cnt,' 0) sblkndres '),con=fConn,sep="")
## writeLines(c('RS',cnt,'(s',cnt,'_E s',cnt,' vnw) sblkpdres '),con=fConn,sep="")
## writeLines(c('w=',S$Wp[cnt],' '),con=fConn,sep="")
# writeLines(c(' w=', S$Wp[cnt],'*',S$NFp[cnt],' '),con=fConn,sep="")
# writeLines(c('l=',S$LSOP[cnt],' '),con=fConn,sep="")
# writeLines(c('esdoxide=',esdoxide,' '),con=fConn,sep="")
# # writeLines(c('m=',S$NF[cnt],' '),con=fConn,sep="")
# writeLines('\n',con=fConn,sep="")
## #########################################
## VOLTAGE SOURCES
## #########################################
for (t in S$terminalsv){
if ((t %in% 'd') | (t %in% 's')) {
# writeLines(c('v',t,cnt,paste('(',t,cnt,'_E 0)',sep=""),' vsource dc=v',t,' type=dc\n'),con=fConn,sep="")
writeLines(c('v',t,cnt,paste('(',t,cnt,' 0)',sep=""),' vsource dc=v',t,' type=dc\n'),con=fConn,sep="")
}else{
writeLines(c('v',t,cnt,paste('(',t,cnt,' 0)',sep=""),' vsource dc=v',t,' type=dc\n'),con=fConn,sep="")
}
}
## #########################################
## MAKE DC SIMULATION ANALYSIS
## #########################################
writeLines(c('dc',cnt,' dc '),con=fConn,sep="")
if (!is.na(match('swp',names(S)))){
writeLines(c('param=v',S$swp[[1]],' start=',S$swp[[2]][1],' stop=',S$swp[[2]][2],' step=',S$swp[[2]][3]),con=fConn,sep="")
}
writeLines(' maxiters=150 maxsteps=10000 annotate=status\n',con=fConn,sep="")
## #########################################
## SAVE DATA TO A FILE
## #########################################
writeLines(c('print '),con=fConn,sep="")
writeLines(c(' ',S$Wp[cnt],',',S$Lp[cnt],',',S$NFp[cnt],','),con=fConn,sep="")
writeLines(c(' ',paste('v',setdiff(S$terminals_save,S$swp[1]),',',sep="")),con=fConn,sep="")
writeLines(c(paste('I(v',S$terminals_save,cnt,')',',',sep=""),'esd_event,','name=dc',cnt,' to= ','"./run_data/dc',cnt,'.txt"'),con=fConn,sep="")
writeLines('\n\n',con=fConn,sep="")
}
writeLines('\n',con=fConn,sep="")
## #########################################
## SIMULATOR OPTIONS
## #########################################
if ('temperature' %in% names(S)){
temperature = S$temperature
}else{
temperature = 27
}
writeLines(c('simulatorOptions options temp=',temperature,' reltol=1e-3 vabstol=1e-6 iabstol=1e-12 tnom=27 scalem=1.0 scale=1.0 gmin=1e-13 rforce=1 maxnotes=5 maxwarns=5 digits=5 cols=80 pivrel=1e-3\n'),con=fConn,sep="")
writeLines('\n\n',con=fConn,sep="")
writeLines('oppoint info what=oppoint where=file file="op.txt"\n',con=fConn,sep="")
writeLines('modelParameter info what=models where=file file="model.txt"\n',con=fConn,sep="")
writeLines('instParameter info what=inst where=file file="inst.txt"\n',con=fConn,sep="")
writeLines('outputParameter info what=output where=file file="output.txt"\n',con=fConn,sep="")
writeLines('designParamVals info what=parameters where=file file="design.txt"\n',con=fConn,sep="")
writeLines('primitives info what=primitives where=file file="prim.txt"\n',con=fConn,sep="")
writeLines('subckts info what=subckts where=file file="sub.txt"\n',con=fConn,sep="")
close(fConn)
## RUN SPECTRE
system('spectre run.scs -f psfascii +l mylog.txt >> /dev/null')
## NOW START PARSING THE DATA
filelist = list.files('./run_data',pattern="*.txt",full.names=T)
cnt = 0
dt = data.frame()
for (f in filelist){
d = data.frame()
d = read.table(f,skip=6,header=TRUE,sep="",blank.lines.skip=TRUE)
cnt = cnt + 1
##d['W'] = S$W[cnt]
##d['L'] = S$L[cnt]
##d['NF'] = S$NF[cnt]
## Change the column names in 3 steps
colnames(d) = gsub("^I\\.v","I",colnames(d))
colnames(d) = gsub("[0-9]+\\.$","",colnames(d))
colnames(d) = gsub("\\_[0-9]+$","",colnames(d))
##colnames(d)[seq(2,length(names(d)))] = gsub("[v . 0-9]", "", colnames(d)[seq(2,length(names(d)))])
dt = rbind(dt,d)
}
#print(dt)
dt['dim'] = paste('WxLxNF=',dt$W*1e6,'x',dt$L*1e6,'x',dt$NF,sep="")
return(dt)
}
csv1_esd_data_analysis_v2.r
#rm(list=ls());
graphics.off();
source("./diff3_func_v1.R")
####### -----> geometry parameters
#lsop= 0.32e-6
#ldop= 0.5e-6
####### -----> plot switches
## ## Data overlay
sim_plot ='y'
data_plot='y'
fit_plot='n'
plt_ron='n'
plt_vhold='n'
fit_max=20 ## Max value of Voltage axis
TLP_Type=c('100ns')
########################################################
########## The Code starts here. Do not edit below this.
########################################################
####### -----> Measured Data reading and slicing
df <- data.frame()
#fls <- list.files(path="/proj/esd_cad/users/vishal/work/180BCDLite/Data/DC/16V", pattern="*.csv",full.names=T)
fls <- list.files(path="C:\\Users\\sanja\\Desktop\\130gf\\130gf\\130BCDLiteGen2\\Extraction\\data\\DC", pattern="*.csv",full.names=T)
for (file in fls) {
dtmp <- data.frame()
dtmp <- read.csv(file,header=T,skip=1)
#dtmp <- read.table(file,header=T,sep="\t",skip=20)
names <- colsplit(file,"_",c("d","Device","L","W","NF","sn"))
dtmp[c("d","Device","L","W","NF","sn")] <- NA
dtmp$d <- gsub('/','',names[1])
dtmp$Device <- gsub('/','',names[2])
#dtmp$L <- as.numeric(gsub('L0P','0.',(gsub('L','',names[3]))))
dtmp$W <- as.numeric(gsub('W','',names[3]))
dtmp$L <- as.numeric(gsub('L','',names[4]))
dtmp$NF <- as.numeric(gsub('NF','',names[5]))
#dtmp$Dw <- as.numeric(gsub('D0P','0.',names[6]))
#dtmp['Dw1'] <- gsub('D','',names[6])
#dtmp$Dw <- as.numeric(gsub('P','.',dtmp$Dw1))
dtmp$sn <- gsub('.csv','',names[6])
#tmp$NF <- as.numeric(gsub('NF','',dtmp$NF))
#dtmp$sn <- gsub('.sbd','',names[6])
colnames(dtmp)[2] <- "V_TLP"
colnames(dtmp)[3] <- "I_TLP"
colnames(dtmp)[4] <- "I_Leak"
df <- rbind(df,dtmp)
}
#colnames(df)[1] <- 'VDD_V'
#colnames(df)[2] <- 'VDD_I'
colnames(df)[2] <- "V_TLP"
colnames(df)[3] <- "I_TLP"
colnames(df)[4] <- "I_Leak"
#df['AF'] <- df$W*df$L
#df['PF'] <- 2*(df$W+df$L)
df['TW'] <- df$FW*df$NF
df <- subset(df,df$sn==c('S1'))
#df$Area=paste(df$Area,'p',sep='')
#df$Perimeter=paste(df$Perimeter,'u',sep='')
#df['VRs']<- abs(df$I_VDD)*4
#colnames(df) <- gsub("Measurement.","",colnames(df))
#colnames(df) <- gsub(".Mean.","",colnames(df))
#df=subset(df, df$Perimeter %in% TotalWidth_array, drop=T)
#df <- subset(df,df$Area %in% c("50","100") )
#df <- subset(df,df$L==9.504 & df$W ==0.48)
####### ------> Data Ploting section
p <- ggplot()
x11(type='Xlib', width=10, height=10)
p <- p + theme_bw()
p <- p + theme(axis.title.x = element_text(face="bold", colour="#990000", size=20),
axis.title.y = element_text(face="bold", colour="#990000", size=12,angle=90),
axis.text.x = element_text(face="bold", color="black" , angle=0, hjust=0.7, size=20),
axis.text.y = element_text(face="bold", color="black" , size=20),
strip.text.x = element_text(size = 16, colour = "black", angle = 0),
legend.text = element_text(size=14),
legend.position = "top",
legend.title = element_text(size=14),
panel.grid.major = element_line(colour = 'black', linetype = 'solid',size=0.8),
panel.grid.minor = element_line(colour = NA),
panel.background = element_rect(colour = 'white'),
panel.border = element_rect(size=2,color="black"),
plot.title = element_text(size=10,face="bold")
##title = element_text(expression(dim_str))
)
p1<- p
if (data_plot=='y'){
## p1=p1+geom_point(data=df, aes(x=Vtlp, y=Itlp, color=factor(TLP)), size=1, shape=0.5)
# p1=p1+geom_point(data=subset(df, df$Perimeter %in% c("50u","100u","200u","300u","400u","500u","600u")), aes(x=Vtlp, y=Itlp, color=factor(Perimeter)), size=1, shape=0.5)
#p1=p1+geom_point(data=df, aes(x=abs(V_VDD), y=abs(I_VDD)))#, color=factor(Area),shape=factor(NF)), size=2)
#vas#p1=p1+geom_point(data=df, aes(x=abs(TLP.V.VOLTS.), y=abs(TLP.I.AMPS.), color=factor(NF),shape=factor(sn)), size=1)
#p1=p1+geom_point(data=df, aes(x=abs(V_C), y=abs(I_C), color=factor(NF),shape=factor(sn)), size=1)
#p1=p1+geom_point(data=df, aes(x=abs(VDD_V), y=abs(VDD_I), color=factor(NF),shape=factor(W)), size=2.5)
p1=p1+geom_point(data=df, aes(x=abs(V_TLP), y=abs(I_TLP)),color='red', size=1.5)
# p1=p1+geom_point(data=df, aes(x=abs(V_VDD)-VRs, y=abs(I_VDD), color=factor(sn)), size=1.5)
# p1=p1+geom_point(data=df, aes(x=voltage, y=current, color=factor(Area)), size=1.5)
# p1=ggplot(data=df, aes(x=TLP.V.VOLTS., y=TLP.I.AMPS., color=factor(Area)), size=1.0)+geom_path()+geom_point()
# p1=p1+geom_point(data=df, aes(x=Vtlp, y=Itlp, color=factor(Macro)), size=1, shape=0.5)
# p1=p1+ggtitle(df$Dev)
}
# ---> Simulation
if (sim_plot=='y'){
df_sim=read.table("sim_relHP.dat",header= TRUE,sep=";")
##df_sim=subset(df_sim, df_sim$TLP %in% c("100ns") )
df_sim['TW']=(df_sim$TotalWidth)
df_sim$L = df_sim$L*1e6
df_sim['FW']=(df_sim$TW/df_sim$NF)
# p1=p1+geom_line(data=df_sim, aes(x=abs(vd), y=abs(Id)),color="black", size=0.3)
p1=p1+geom_line(data=df_sim, aes(x=abs(vd), y=abs(Id)),color='red', size=1.5)
##p1=p1+geom_line(data=df_sim, aes(x=abs(vd), y=abs(Id),color=factor(TLP)), size=0.5)
}
#p1=p1+facet_wrap(~NF, scales="free")
#p1=p1+facet_wrap(~L, scales="free")
#p1=p1+facet_wrap(~NF, scales="free")
#p1=p1+facet_wrap(~TLP, scales="free")
#p1=p1+scale_x_continuous(limits = c(0,30))
#p1=p1+scale_y_continuous(limits = c(0,4.1))
#p1=p1+scale_y_log10()
#print(p1)
### ---> other ploting options
#postscript(file="pfet_mrg_30ns.eps",
# paper="special",
# width=5,
# height=6,
# horizontal=FALSE)
#
# plot(p)
## dev.copy(pdf,'p.pdf')
# dev.off()
### MRG settings
p1 <- p1 + scale_color_manual(name="", values=c("red","blue","black","brown","green4","magenta"))
p1 <- p1 + xlab('TLP_Voltage (V)') + ylab('TLP_Current (A)')
print(p1)
#ggsave(file="./180BCDLite_12V_mrg.png",plot=p1)
#ggsave(file="./180BCDLite_12v_mrg.eps",plot=p1)
#ggsave(file="./180BCDLite_12v_mrg.pdf",plot=p1)
diff3_func_v1.R
diff3_func_v1 <- function(x,y){
h = x[2] - x[1]
leny = length(y)
dy_dx = numeric(leny)
for (cnt in seq(1:length(y))){
if (cnt == 1){dy_dx[cnt] = (y[2] - y[1])/h; next}
# if (cnt == length(y)){dy_dx[cnt] = (y[leny] - y[leny-1])/(x[leny] - x[leny-1]); next}
if (cnt == length(y)){dy_dx[cnt] = (y[leny] - y[leny-1])/h; next}
# dy_dx[cnt] = (y[cnt+1] - y[cnt-1])/(x[cnt+1] - x[cnt-1])
dy_dx[cnt] = (y[cnt+1] - y[cnt-1])/(2*h)
}
##return(matrix(rbind(x,dy_dx),nrow=length(x),ncol=2))
return(dy_dx)
}
I'm trying to run by loading the below library packages,
library(plyr)
library(ggplot2)
library(reshape2)
library(Hmisc)
library(Spectre)
And calling the main R file,
source("./simESDFET_v3_ys.R")
The Error message that I'm getting is,
IDVGLIN
Corner:tt
ESD EVENT: 1
1Error in `[<-.data.frame`(`*tmp*`, "dim", value = "WxLxNF=xx") :
replacement has 1 row, data has 0
In addition: Warning message:
In for (i in seq_along(cenv$extra)) { :
Error in `[<-.data.frame`(`*tmp*`, "dim", value = "WxLxNF=xx") :
replacement has 1 row, data has 0
I'm not sure if the error is occurring the data frame since it is working well when I invoke R from commandline.
On Error traceback,
8.
stop(sprintf(ngettext(N, "replacement has %d row, data has %d",
"replacement has %d rows, data has %d"), N, n), domain = NA)
7.
`[<-.data.frame`(`*tmp*`, "dim", value = "WxLxNF=xx") at simDev_func_v4_sblk.R#245
6.
`[<-`(`*tmp*`, "dim", value = "WxLxNF=xx") at simDev_func_v4_sblk.R#245
5.
simDev_func_v4_sblk(S) at simESDFET_v3_ys.R#56
4.
eval(ei, envir)
3.
eval(ei, envir)
2.
withVisible(eval(ei, envir))
1.
source("./simESDFET_v3_ys.R")
I'm sorry for the bigger code and explanation.