下载

1下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 ATALANTA 2.0算法研究报告_上学年

ATALANTA 2.0算法研究报告_上学年.doc

ATALANTA 2.0算法研究报告_上学年

老偏秘书1-2
2018-04-30 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《ATALANTA 2.0算法研究报告_上学年doc》,可适用于综合领域

ATALANTA算法研究报告上学年ATALANTA算法研究报告任建国算法研究ATALANTA主要由四种算法组成包括ATPG生成算法FAN测试向量随机生成算法RPT组合电路故障模拟算法FSIM和时序电路故障模拟算法HOPE。下面我们将简要阐述各种算法的基本原理。总体算法结构ATALANTA的总体的算法结构如图随机向量生成(RPT)RPT利用初始种子生成初始向量然后利用此向量进行故障模拟如果检测到之前向量未检测到的故障那么将此向量加入测试向量列表。其算法流程如图。开始生成随机向量故障模拟N检测到新故障,Y加入测试向量表Y满足故障覆盖率要求,完成图RPT算法流程N开始计算stemY输入输出错误处理建立故障文件错误程序结束列表N计算可测性指标Y输出相关是否进入信息Debug模式唯一敏化NY是否允许输出相关冗余检查信息日志模式N生成随机测试向量Y电路模式无故障错误处理模拟是否错误程序结束N故障模拟Y电路结构错误处理是否错误程序结束故障检测N测试向量优选Y进行相关是否使用HOPE处理反相故障测试N测试向量N是否满足错误处理压缩级数要求程序结束Y结束图ATALANTA算法总体流程在ATALANTA中如果连续n个随机测试向量无法检测到新的故障那么RPT生成停止其中n由使用者其输入命令如下(默认情况N=):atalanta–rn****benchFan算法FAN算法是一种ATPG算法采用分支限界的办法来进一步减小测试搜索空间其流程如图。FAN算法采用了几项新的策略来加速测试产生:()充分蕴含。在算法执行的每一步尽可能多确定那些能被唯一决定的信号值这样可以减少盲目选择尽早发现矛盾。()唯一敏化。当D前沿集合只包含一个门时标记从该D前沿到原始输出的必经路段然后赋予必要的值敏化这些路段。测试产生过程中的这种部分敏化称为唯一敏化。()多重回溯。PODEM算法所采用的多重回溯的策略有所不同FAN算法采用了广度优先的回溯方法相比PODEM的深度优先回溯节省了大量时间。()主导线。它们是指可将电路分块的点使得通过切断成为主导线的单个连线可以将由PI驱动的逻辑锥与剩余的电路隔离开从而消除PI判决树中的一个分支而用其对于主导线的一个可能的选择值来代替。在中关于Fan算法有详尽的阐述在此不再赘述。开始设置故障信号设置回溯标志不一致立即蕴涵NO继续回溯是否有意义,设置回溯标志YESYES故障信号传至原始ymbol,"buf")==)fn=BUFFelseif(strcmp(symbol,"input")==)fn=PIelseif(strcmp(symbol,"output")==)fn=POelsefn=()return(fn)}char*spctound(buf)将空格转化为下划线,char*buf{inti=while(bufi=='')bufwhile(bufi!=''){if(bufi=='')bufi=''i}return(buf)}#definegetstring(file,string)if(fscanf(file,"s",string)<GOOD)fatalerror(CIRCUITERROR)*readcircuitReadsacircuitfileThenetlistformatisthesameasthatofISCASbenchmarknetlistsexceptthat:)Thefirstlineshouldstartwith#followedbythenameofthecircuit,and)Commentlineswhichstartswith#canbeinsertedinanypartofthecircuitnetlistConstructsbasicdatasturucturesandallocatesnecessarymemoryspacesUsersshouldprovidethefollowinginformationindexfield:identificationofgates(sameasarrayindex)fn:gatetypeninput:numberoffaninlinesinlis:listoffaninlinesnoutput:numberoffanoutlinesoutlis:listoffanoutlinesname:pointertothehashtableinputs:circuitinputfile(circuit)outputs:datastructuresNote:ThecircuitdescriptionistopologicallysortedinthelevelizedorderafterparsingLavelingorder:primaryinputstartston(ninputs)flipflopsstartsntonm(mff)gatestartsnmtonml(lgates)*intreadcircuit(circuit,name)FILE*circuitcharname{registerinti,jregistercharcregisterGATEPTRcgregisterHASHPTRhpintintnog,intnopi,intnopo,intnoffcharsymbolMAXSTRINGcharbufMAXSTRING,*bufptr*storealineoftext*intfn,nofaninnumberoffaninintnetsizeGATETYPE*pgGATEPTRpfaninMAXFINGATEPTRpogatesMAXPOintnerrs=*Thefirstlineshouldstartwith#followedbythenameofthecircuit*while((c=getc(circuit))!=EOF)if(c=='#'||c=='n')breakif(c==EOF)return(())if(c=='#'){if(!fgets(buf,MAXSTRING,circuit))fatalerror(CIRCUITERROR)bufstrlen(buf)=''bufptr=spctound(buf)strcpy(name,bufptr)}提取电路名称InitHash(symboltbl,HASHSIZE)初始化hash结构*Pass:Addsthegatesymbolstosymboltblandcounts#ofgates,pi's,po's,ff's*intnopi=intnopo=intnoff=intnog=nofanin=begnet=(GATEPTR)**下面一段while代码确定definec中GATEstruct中的*indexfnninputinlisnoutputoutlisnext*while((c=getsymbol(circuit,symbol))!=EOF){switch(c){case'=':*anewgate*hp=FindandInsertHash(symboltbl,HASHSIZE,symbol,)if((cg=hp>pnode)==){ALLOCATE(cg,GATETYPE,)hp>pnode=cgcg>symbol=hpcg>next=begnetnext的作用是将门按照输入顺序反序连接起来begnet=cg}breakcase'(':*gatetype*if((fn=gatetype(symbol))<){fprintf(stderr,"Error:Gatetypesisnotvalidn",symbol)return()}breakcase',':*faninlist*hp=FindandInsertHash(symboltbl,HASHSIZE,symbol,)if((pg=hp>pnode)==){ALLOCATE(pg,GATETYPE,)hp>pnode=pgpg>symbol=hppg>index=()对应的门排序数尚未确定pg>next=begnetbegnet=pg}pfaninnofanin=pg扇入数增加,门扇入数组即扇入连接的门breakcase')':*terminator,faninlist*hp=FindandInsertHash(symboltbl,HASHSIZE,symbol,)if((pg=hp>pnode)==){ALLOCATE(pg,GATETYPE,)hp>pnode=pgpg>symbol=hppg>index=()对应的门排序数尚未确定pg>next=begnetbegnet=pg}switch(fn){casePI:intnopi初始输入加pg>index=intnogpg>ninput=初始输入的扇入端数目为pg>inlis=(GATEPTR*)pg>fn=PI门类型为初始输入pg>noutput=pg>outlis=(GATEPTR*)breakcasePO:pogatesintnopo=pg输出门数组breakdefault:pfaninnofanin=pg扇入数增加,门扇入数组即扇入连接的门switch(fn){caseDFF:intnoffbreakflipflop数目加caseXOR:caseXNOR:if(nofanin!=){如果xor或xnor的输入数不为系统不能处理fprintf(stderr,"Error:dinputsgateisnotsupportedn",nofanin,fntostringfn)return()}}if(cg==){fprintf(stderr,"Error:Syntaxerrorinthecircuitfilen")return()}cg>index=intnog定义此门为得到的第几个门门数增加其中初始输入也包括在intnog中cg>fn=fn门类型if((cg>ninput=nofanin)==)cg>inlis=门没有扇入else{ALLOCATE(cg>inlis,GATEPTR,cg>ninput)}分配扇入门存储空间for(i=i<nofanini)cg>inlisi=pfanini确定扇入门列表cg>noutput=门扇出目前尚未确定cg>outlis=(GATEPTR*)nofanin=cg=(GATEPTR)break}}}*Pass:Constructthecircuitdatastructure*netsize=intnogintnopointnoffSPAREGATES网表大小ALLOCATE(net,GATEPTR,netsize)ALLOCATE(primaryin,int,intnopi)初始输入列表ALLOCATE(primaryout,int,intnopo)初始输出列表ALLOCATE(flipflops,int,intnoff)触发器列表#ifdefATALANTAALLOCATE(headlines,int,intnopi)#endifnog=nopi=nopo=noff=for(cg=begnetcg!=cg=cg>next){if(cg>index<){fprintf(stderr,"Error:floatingnetsn",cg>symbol>symbol)fprintf(stderr,"WorkaroundYouhavetotakeoneofthetwoactions:n")fprintf(stderr,"Removeallthefloatinginputandassociatedgates,orn")fprintf(stderr,"Makeeachfloatinginputaprimaryoutputn")return()}netcg>index=cg将neti与门的index一一对应起来nog}for(i=nogi<netsizei)neti=(GATEPTR)if(nog!=intnog){每个输入门(包括原始输入)唯一对应一个index,如果不等在读的过程中发生错误fprintf(stderr,"Errorinreadcircuitn")return()}*Pass:Computefanoutlist***以下一段for代码确定GATEstruct中的noutput和plearn*以及确定本程序需要计算的primaryinflipflop数组*for(i=i<nogi){cg=neti#ifdefLEARNFLGcg>plearn=#endiffor(j=j<cg>ninputj)cg>inlisj>noutputswitch(cg>fn){casePI:primaryinnopi=ibreakcaseDFF:flipflopsnoff=ibreak}}for(i=i<intnopoi)primaryoutnopo=pogatesi>index原始输出数组for(i=i<nogi){cg=netiif(cg>noutput>){ALLOCATE(cg>outlis,GATEPTR,cg>noutput)maxfout=MAX(maxfout,cg>noutput)cg>noutput=}}**以下for代码确定定GATEstruct中的outlis**for(i=i<nogi){cg=netifor(j=j<cg>ninputj)cg>inlisj>outlis(cg>inlisj>noutput)=cg}for(i=i<nogi){cg=netiif(cg>noutput>)continuefor(j=j<intnopoj)if(cg==pogatesj)breakif(j==intnopo){如果没有输出门列表但也不属于原始输出那么有errorfprintf(stderr,"Error:floatingoutput's'detected!n",cg>symbol>symbol)nerrs}}if(nerrs>){fprintf(stderr,"WorkaroundYouhavetotakeoneofthetwoactions:n")fprintf(stderr,"Removeallthefloatingoutputandassociatedgates,orn")fprintf(stderr,"Makeeachfloatingoutputaprimaryoutputn")return()}if(intnog==nog)return(nog)elsereturn()}、ATALANTA主程序定义*main:Mainprogramofatalanta*voidmain(argc,argv)intargc命令参数个数char*argv命令各个参数字符内容{registerinti,jintshufbooleandone=FALSEintnumberintLEVEL=intnrestoredfault,maxdetectFAULTTYPE*pcurrentfault,*fGATEPTRgut,*stemintnstemintk,n,iterationstatusstate,faultselectionmodeintnbacktrackintndetect=,nredundant=,noverbacktrack=,ntest=intntest=,ntest=,ntest=intndetect=intnarrayMAXTEST,store=inttbacktrack=intlastfaultintncomp=INFINITY,stop=ONEdoubleminutes,seconds,starttime,inittime,runtime,runtimedoublefantime,fantime,simtime,simtime,simtimeintmaxbits=BITSIZEintfaultprofileBITSIZEintnbit=,npacket=charclevelLFSRMAXPI,ranintbit=,packet=intphase,nd********************************************************************step:preprocess**inputandoutputfileinterface********************************************************************optionset(argc,argv)读取输入命令进行功能设置if((circuit=fopen(name,"r"))==){网表文件不存在fprintf(stderr,"Fatalerror:nosuchfileexistssn",name)exit()}strcpy(cctname,name)i=j=if(name==''){可以在optionset中给name赋值如果没有命名那么name空此处进行默认命名while((c=namei)!=''){if(c=='')j=elseif(c=='')breakelsenamej=c}namej=''strcat(name,"test")测试输出结果}i=j=if(name==''){while((c=namei)!=''){if(c=='')j=elseif(c=='')breakelsenamej=c}namej=''strcat(name,"log")日志文件}if((test=fopen(name,"w"))==){fprintf(stderr,"Fatalerror:sfileopenerrorn",name)exit()}if(logmode=='y')if((logfile=fopen(name,"w"))==){fprintf(stderr,"Fatalerror:sfileopenerrorn",name)exit()}#ifdefDEBUGfprintf(stderr,"##########################################################n")fprintf(stderr,"Warning:Atalantaiscompiledindebugmoden")fprintf(stderr,"Warning:Thismodemaycreateanincorrectresultorawrongoutputfilen")fprintf(stderr,"Warning:Toavoidit,pleasecommentoutDEBUGflagin"defineh",n")fprintf(stderr,"Warning:andrecompiletheprogramn")fprintf(stderr,"##########################################################n")#elseif(logmode=='y')printlogtopic(logfile,cctname)#endif#ifdefISCASNETLISTMODEif(cctmode==ISCASfaultmode=='f'){fprintf(stderr,"Fatalerrorinoptions:n")fprintf(stderr,"TheoptionfcannotcombinedwiththeoptionIn")exit()}#endifif(faultmode=='f')if((faultfile=fopen(faultname,"r"))==){fprintf(stderr,"Fatalerror:sfileopenerrorn",faultname)exit()}iseed=Seed(iseed)gettime(minutes,seconds,runtime)starttime=runtime*****************************************************************step:preprocess**constructionofdatastructures*****************************************************************if(readcircuit(circuit,cctname)<)fatalerror(CIRCUITERROR)readcctc,读入网表配置GATEstruct中的部分参数fclose(circuit)if(nog<=||nopi<=||nopo<=){如果门数或原始输入输出数为那么网表有故障fprintf(stderr,"Error:#pi=d,#po=d,#gate=dn",nopi,nopo,nog)fatalerror(CIRCUITERROR)}if(noff>){如果有flipflop存在软件无法进行测试生成fprintf(stderr,"Error:dflipflopexistsinthecircuitn",noff)fatalerror(CIRCUITERROR)}nodummy=addPO()structurecaddsaPOgateateachprimaryoutputif(cctmode==ISCAS){ALLOCATE(stacklist,GATEPTR,nog)clear(stack)#ifdefINCLUDEHOPEallocatestacks()structurec,分配堆栈**structurec,*psuedolevelsofeachgateinnetstructure,*returnsrealdepthofthecircuit,maxlevel*maxlevel=computelevel()allocateeventlist()structurec,allocateslevelizedqueueforeventlistlevelize()gatesarerenumberedandsortedinthelevelizedorderaffecteddatastructureaddsparegates()structurec,allocatesmemoryspacesforthefaultinjectionlastgate=nogi=SetFFR()stemc,IdentifiesFanoutFreeRegion(FFR)andstems,确定扇出分支j=SetDominator()stemc,Identifiesdominatorsofeachfanoutstem#elseif(levelize(net,nog,nopi,nopo,noff,stacklist)<){gatesarerenumberedandsortedinthelevelizedorderaffecteddatastructurefprintf(stderr,"Fatalerror:Invalidcircuitfilen")exit()}#endifif(noff>){fprintf(stderr,"Error:InvalidtypeDFFisdefinedn")exit()}}elsestacklist=**ioc*Setseveralcircuitparameters(ltype)ofthenetdatastructure*Computesthelevel(dpi)ofeachgate**maxlevel=setcctparameters(nog,nopi)#ifdefINCLUDEHOPELEVEL=maxlevel#elseLEVEL=maxlevel#endifif(MODESIM=='f'){*FSIM*if(!allocatedynamicbuffers(nog)){fprintf(stderr,"Fatalerror:memoryallocationerrorn")exit()}nstem=for(i=i<nogi)if(isfanout(neti)||neti>fn==PO)nstemstem=(GATEPTR*)malloc((unsigned)(sizeof(GATEPTR)*nstem))**ioc*setfanoutstem*Forfaultsimulation*Identifiesfanoutstemsandbuildsfanoutfreeregion*setfanoutstem(nog,stem,nstem)nof=(faultmode=='f')readfaults(faultfile,nog,nstem,stem):definefaultlistc,如果faultmode为f读故障列表setallfaultlist(nog,nstem,stem)definefaultlistc如果faultmode不为f创建故障列表,进行故障压缩}#ifdefINCLUDEHOPE**definefaultlistc*definesfaultlistintheorderofDFSfromprimaryoutputs*userecursiveversionDFSroutines*mainofDFSpo*else{*HOPE*if(faultmode=='d')FWDfaults()elsereadfaultshope(faultfile)readsfaultlistandconstructsfaultlistdatastructure}#endifif(nof<){fprintf(stderr,"Fatalerror:errorinsettingfaultlistn")exit()}settestability(nog)testabilitycAssigncontrollibilityandobservabilityfor(i=i<nogi){reset(neti>changed)neti>freach=nogif(neti>dpi>=PPOlevel)printf("Error:gut=sdpi=dn",neti>symbol>symbol,neti>dpi)}**ioc*setdominator*Findstheimmediatedominatorsofallfanoutstems*Inputs:circuitstructure*nog(numberofgates),maxdpi(maximumdepth)*Outputs:dominators(upath)*setdominator(nog,LEVEL)**ioc*setuniquepath*Foreveryfanoutstemwhichhasadominator,*thisroutinefindstheuniquepathandpropertyofthedominator*UsedinFAN*Shouldbecalledaftersettingdominators*setuniquepath(nog,LEVEL)printtesttopic(test,nopi,nopo,name)pioc**learnc*learn*preprocessingforstaticlearning**if(learnmode=='y')learn(nog,LEVEL)for(i=i<nofi){faultlisti>detected=UNDETECTEDfaultlisti>observe=ALL}**definefaultlistc*checkredundantfaults*Identifiesredundantfaultsinwhichmorethantwoinputsof*agateareconnectedtoonegatesimultaneouslyanddeletes*thefaultsfromthefaultlist**Input:nog,thenumberofgatesofthecircuit*Output:numberofidentifiedredundantfaults*Note:changedflagsofallgatesshouldberesetto*priortocallthisfunction**ppsfpc*pinitsimulation*Initializesnecessaryflagsandcounters*changed=,observe=ALLcleareventlist*if(MODESIM=='f'){nredundant=checkredundantfaults(nog)pinitsimulation(nog,LEVEL,nopi)}else{InitFaultSim()fsimc,Initializesflagsforthefaultsimulation}maxdetect=nofallone=ALLgettime(minutes,seconds,runtime)inittime=runtimeruntimeruntime=runtimesimtime=********************************************************************step:Randompatterntestingsession**generaterandompatterns**faultfreesimulation**faultsimulation**faultdropping********************************************************************if(israndommode(rptmode)){ndetect=randomsim(nog,nopi,nopo,LEVEL,nstem,stem,LFSR,randomlimit,maxbits,maxdetect,ntest,npacket,nbit,test)*simc*Performsrandomsimilationuntilnconsecutivepacketsof*randompatternsdonotdetectanynewfault*ntest=ntestgettime(minutes,seconds,runtime)simtime=runtimeruntimeruntime=runtime}*********************************************************************step:DeterministicTestPatternGenerationSession**(fanwithuniquepathsensitization*********************************************************************reset(phase)*:static,:dynamicuniquepathsensitization*fantime=ndetect=testgen(nog,nopi,nopo,LEVEL,maxbits,nstem,stem,maxbacktrack,simcphase,nredundant,noverbacktrack,tbacktrack,ntest,npacket,nbit,fantime,test)ntest=ntest*********************************************************************step:DeterministicTestPatternGenerationSession**Phase:Employsdynamicuniquepathsensitization*********************************************************************state=NOTESTif(maxbacktrack>nofndetectnredundant>){set(phase)for(i=i<nofi){f=faultlistiif(f>detected==PROCESSED){f>detected=UNDETECTED}}fantime=ndetect=testgen(nog,nopi,nopo,LEVEL,maxbits,nstem,stem,maxbacktrack,phase,nredundant,noverbacktrack,tbacktrack,ntest,npacket,nbit,fantime,test)fantime=fantime}ntest=ntestgettime(minutes,seconds,runtime)simtime=runtimefantimeruntimeruntime=runtime***********************************************************************step:Testcompactionsession**bitreversefaultsimulation**shufflingcompaction***********************************************************************if(ntest==){ntest=ndetect=}elseif(compact=='n'){ntest=ntestndetect=ndetect}else{if(maxcompact==)compact='r'ntest=simccompacttest(nog,nopi,nopo,LEVEL,nstem,stem,nof,shuf,ndetect,npacket,nbit,maxbits,test)if(ndetect!=ndetect){printf("Errorintestcompaction:ndetect=d,ndetect=dn",ndetect,ndetect)exit()}}gettime(minutes,seconds,runtime)simtime=runtimeruntimeruntime=runtimemsize=(int)sbrk()*printouttheresults*printatpghead(stdout)printc输出测试结果开头printatpgresult(stdout,cctname,nog,nopi,nopo,LEVEL,printc输出测试结果maxbacktrack,maxbacktrack,phase,ntest,ntest,nof,ndetect,nredundant,tbacktrack,shuf,inittime,simtimesimtimesimtime,fantime,runtimestarttime,'n',msize)#ifndefDEBUGif(logmode=='y'){fprintf(logfile,"nEndoftestpatterngenerationnn")printatpghead(logfile)printatpgresult(logfile,cctname,nog,nopi,nopo,LEVEL,maxbacktrack,maxbacktrack,phase,ntest,ntest,nof,ndetect,nredundant,tbacktrack,shuf,inittime,simtimesimtimesimtime,fantime,runtimestarttime,'y',msize)}#endifif(ufaultmode=='y'){if((rfaultmode=='y'ndetect<nof)||(rfaultmode=='n'ndetectnredundant<nof)){i=j=if(nameufaults==''){while((c=namei)!=''){if(c=='')j=elseif(c=='')breakelsenameufaultsj=c}nameufaultsj=''strcat(nameufaults,"ufaults")}if((ufaultfile=fopen(nameufaults,"r"))!=){fprintf(stderr,"Warning:sfilealreadyexistsintherundirectoryn",nameufaults)fprintf(stderr,"Warning:Theundetectedfaultlistfileisnotcreatedn")}else{if((ufaultfile=fopen(nameufaults,"w"))==){fprintf(stderr,"Fatalerror:sfileopenerrorn",nameufaults)exit()}printundetectedfaults(ufaultfile,'s',rfaultmode,)printc输出未检测到的故障}fclose(ufaultfile)}}fclose(test)if(logmode=='y')fclose(logfile)}intreadoption(option,array,i,n)charoption,*arrayinti,n{if(i>=n)return(())switch(option){case'd':inputmode='d'break#ifdefISCASNETLISTMODEcase'I':cctmode=ISCASbreak#endifcase'r':sscanf(arrayi,"d",randomlimit)if(randomlimit==)rptmode='n'breakcase's':sscanf(arrayi,"d",iseed)breakcase'N':compact='n'maxcompact=breakcase'c':sscanf(arrayi,"d",maxcompact)breakcase'b':sscanf(arrayi,"d",maxbacktrack)breakcase'B':sscanf(arrayi,"d",maxbacktrack)breakcase't':strcpy(name,arrayi)breakcase'l':logmode='y'strcpy(name,arrayi)breakcase'n':strcpy(name,arrayi)breakcase'h':helpmode=*(arrayi)breakcase'L':learnmode='y'breakcase'f':faultmode='f'strcpy(faultname,arrayi)breakcase'H':MODESIM='h'breakcase'':fillmode=''breakcase'':fillmode=''breakcase'X':fillmode='x'breakcase'R':fillmode='r'breakcase'A':genallpat='y'breakcase'D':sscanf(arrayi,"d",ntesteachlimit)genallpat='y'breakcase'Z':nofaultsim='y'breakcase'u':ufaultmode='y'breakcase'U':ufaultmode='y'strcpy(nameufaults,arrayi)breakcase'v':ufaultmode='y'rfaultmode='y'breakdefault:i=()}return(i)}intoptionset(argc,argv)intargcchar*argv{intiif(argc==){如果只有一个参数那么采用默认配置helpmode='d'}elsefor(i=i<argci){if(argvi==''){‘’说明是参数if((i=readoption(argvi,argv,i,argc))<)<说明参数赋值结束,提取每个参数内容赋值给相应得内部参数{helpmode='d'break}}elsestrcpy(name,argvi)没有‘’说明输入的是网表文件}if(helpmode!='q'){help(helpmode)exit()}if(fillmode=='x')MODESIM='h'if(genallpat=='y'){如果在genallpat和nofaultsim模式中在readoption中定义的某些参数需要重新赋值randomlimit=rptmode='n'maxbacktrack=fillmode='x'compact='n'maxcompact=MODESIM='h'nofaultsim='y'}if(nofaultsim=='y'){randomlimit=rptmode='n'fillmode='x'compact='n'maxcompact=MODESIM='h'}}、测试结果待测电路#c#inputs#outputs#inverter#gates(NANDs)INPUT()INPUT()INPUT()INPUT()INPUT()OUTPUT()OUTPUT()=NAND(,)=NAND(,)=NAND(,)=NAND(,)=NAND(,)=NAND(,)测试结果普通模式命令:atalanta–x–llogcbench>temp输出结果:*Logfileforthecircuitcbench*Numberoffaultsdetectedbyeachtestpattern:test:faultsdetectedtest:faultsdetectedtest:faultsdetectedtest:faultsdetectedtest:faultsdetectedEndoftestpatterngeneration**********************************************************Welcometoatalanta(version)****DongSHa(havtedu)**Web:**VirginiaPolytechnicInstituteStateUniversity****************************************************************SUMMARYOFTESTPATTERNGENERATIONRESULTS******CircuitstructureNameofthecircuit:cNumberofprimaryinputs:Numberofprimaryoutputs:Numberofgates:Levelofthecircuit:ATPGparametersTestpatterngenerationmode:RPTDTPGTCLimitofrandompatterns(packets):Backtracklimit:Initialrandomnumbergeneratorseed:Testpatterncompactionmode:REVERSESHUFFLELimitofsufflingcompaction:Numberofshuffles:TestpatterngenerationresultsNumberoftestpatternsbeforecompaction:Numberoftestpatternsaftercompaction:Faultcoverage:Numberofcollapsedfaults:Numberofidentifiedredundantfaults:Numberofabortedfaults:Totalnumberofbacktrackings:Memoryused:KbytesCPUtimeInitialization:secsFaultsimulation:secsFAN:secsTotal:secs诊断模式命令:atalanta–A–llogcbench>temp输出结果:*Logfileforthecircuitcbench*Numberoffaultsdetectedbyeachtestpattern::xx>:xxx>:xx:x:xxx:xx:xx:xx:xx:xx:xxxx:xx:xxx:xx:xx:::xx>:xxx:x:xxxx:xx:::xx:xx:xxx>:xxx:xxxx:x:xxx:x::x:xxx:xx:xxx::xxx:xxx:xxx>:xxx>:xx:x:xx:xxxx:xx:xx:x:xxx:x:xxxx:x:xxxEndoftestpatterngeneration**********************************************************Welcometoatalanta(version)****DongSHa(havtedu)**Web:**VirginiaPolytechnicInstituteStateUniversity****************************************************************SUMMARYOFTESTPATTERNGENERATIONRESULTS******CircuitstructureNameofthecircuit:cNumberofprimaryinputs:Numberofprimaryoutputs:Numberofgates:Levelofthecircuit:ATPGparametersTestpatterngenerationmode:DTPGTCBacktracklimit:Initialrandomnumbergeneratorseed:Testpatterncompactionmode:NONETestpatterngenerationresultsNumberoftestpatterns:Faultcoverage:Numberofcollapsedfaults:Numberofidentifiedredundantfaults:Numberofabortedfaults:Totalnumberofbacktrackings:Memoryused:KbytesCPUtimeInitialization:secsFaultsimulation:secsFAN:secsTotal:secs、算法修改在Fsim的算法中(图)如果将第二个用铅笔圈处改为:ifCD(s)*D(st)()。其原因是:图Fsim算法修改参考文献:MichaelLBushnell和VishwaniDAgrawal著蒋安平冯建华等译“超大规模集成电路测试”p电子工业出版社HyungKiLeeDongSamHa,ANEFFICIENT,FORWARDFAULTSIMULATIONALGORITHMBASEDONTHEPARALLELPATTERNSINGLEFAULTPROPAGAT,TestConference,,Proceedings,International,HyungKiLeeDongSamHaHOPE:anefficientparallelfaultsimulatorforsynchronoussequentialcircuitsComputerAidedDesignofIntegratedCircuitsandSystems,IEEETransactionsonVolume,Issue,SeptPage(s):–HKLeeandDSHa,"OntheGenerationofTestPatternsforCombinationalCircuits

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/57

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利