您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > synopsis-VCS-makefile编写
SYNOPSYSVCSMakefile文件编写与研究SYNOPSYSVCSMakefile文件编写与研究这个Makefile是synopsys提供的模板,看上去非常好用,你只要按部就班提供实际项目的参数就可以了。我们来看这个文件的头部说明:makefile其实完全可以用csh或其他脚本来编写,只是VCS使用的linux内置的make命令定义了一个标准的仿真脚本,make命令是专门用来做项目的源文件管理和编译控制的命令。这篇文章重点看synpsys的标准仿真脚本都做了哪些操作,然后使用其他脚本来实现。这里主要是自己写的一点东西,有些地方是猜测的或者不准确。#---------------------------------------------------------------------------------------------------------------------------#SYNOPSYSCONFIDENTIAL-Thisisanunpublished,proprietaryworkof#Synopsys,Inc.,andisfullyprotectedundercopyrightandtradesecret#laws.Youmaynotview,use,disclose,copy,ordistributethisfileor#anyinformationcontainedhereinexceptpursuanttoavalidwritten#licensefromSynopsys.#SYNOPSYS公司的版权声明,没有权限不可使用#-----------------------------------------------------------------------------------------------------------------------------#Filename:$Id:Makefile,v1.02006/07/1823:59:59vangundyExp$#Createdby:SynopsysInc.07/17/2006#$Author:vangundy$#Description:DemonstratesVerilogDUTandSVTBusingVCS#makefile文件头#---------------------------------------------------------------------------------------------------------------------------#TheMakefileworksontwoseperateflows.TheDEBUGflowisintendedtobeused#Duringdebuggingofatestcaseand/ortheDUT.TheREGRESSIONflowisused#Duringregressionrunsandcollectscoveragedata.#该makefile模版包括两部分流程,debug(查错)流程和regress(回归测试)流程,两个流程大致步骤都相同都是:Compile,SIM(urg,覆盖#率的分析和采集),debug时主要是跑一个pattern,并dumpVPD文件,SIM的同时可以打开DVE视图界面,结束后观察波形,regress主要用#于采集覆盖率,一般要跑多个pattern,这时就无需dumpVPD文件(节约时间),由于是debug后有进行的重复运行,所以叫regress(回归)。#在我们的验证平台中,若不做代码覆盖率的功能,可以不写regress,只要写debug的流程和跑多个pattern的脚本就好了。#---------------------------------------------------------------------------------------------------------------------#TheDEBUGflowturnsonVPDdumpingandturnsoffcoveragecollection.After#buildingatestcaseusingthedebugtargets,youcandebugtheTBandtheDUT#sourcecodeusingthetestbenchdebuggerandDVE.Ofcourse,youcanturnon#coveragemetricsandrunindebugmodebychangingcompileandruntimeoptions#inthemakefile.Thesechangesareindependentoftheregressionflowsothat#theregressionswillstillrunoptimallywithouttheinterferenceofVPDdumping.#debug流程打开VPD文件的dump并关闭覆盖率在build了一个包含DUT的testcase后,可以使用VCS的debugger和DVE进行debug。当#然,你也以通过改变makefile文件中的compile和runtime选项参数来开启覆盖率功能。Debug流程和regress流程是各自独立的,regression#流程一般不生成VPD。#--------------------------------------------------------------------------------------------------------------------------------#TheREGRESSIONflowturnsoffVPDdumpingandturnsonCoverageMetricsandTB#coveragecollection.Thisflowisintendedtosupportverificationengineerswho#areworkingthroughtheregressionprocessandareinterestedincoverage#collectionandurg.#REGRESSION流程关闭VPDdump并打开Coveragecollection功能,该流程是为了支持验证引擎进行“流水线验证“(跑多个testcase)和#代码覆盖率功能。??在验证平台中可以将运行多个testcase的脚本命名为regress,运行单个testcase的脚本命名为regone??,这只是#synopsys的模版,我们不必完全遵守,可以不区分debug和regress,然后将是否打开波形和coverage设置成参数。#-------------------------------------------------------------------------------------------------------------------------------#CommandLinemake命令行#-----------------#TheMakefilesupportsthefollowingcommandline#makefile支持下列命令行#%maketarget_name_*SEED=xxxDEFINES=xxxx#makefile文件放在哪?放在仿真路径。make[-fmakefile文件名][选项][宏定义][目标]#-f指定makefile若没有则make程序首先在当前目录查找名为makefile的文件,如果没有找到,它就会转而查找名为Makefile的文件。#Wheretarget_nameisthenameofatestcaselocatedinthetestdirectory.Every#testinthetestdirectoryisnamedusingtest_{test_name}.Allofthetesttargets#arelistedintheTESTTARGETSsectionofthemakefile.#target_name是test路径下的一个testcase的名字,test路径下的testcase的名字使用test_{test_name}来命名,例如test_1#所有的testtarget都在makefile文件中的TESTTARGETS部分列出#---------------------------------------------------------------------------------------------------------------------------#CompileandRunTestcases编译与运行testcase#-------------------------------#Tocompileandrunatescaseusethetest_*andregress_test_*targets.#编译与运行testcase,(test_1就是执行了下面的两个命令先编译在运行)test_1==compile_1run_1详见下面命令定义#%maketest_1//Buildsandrunstest1withVPDdumping其实就是debug的前边的流程#%makeregress_test_1//Buildsandrunstest1withcoverageturnedon#-------------------------------------------------------------------------------------------------------------------------#DebuggingTestcasesDebug实在上面命令之后在进行的#------------------------#YoucanuseDVEandthetestbenchdebuggertovisualizewaveformsandtestbench#execution.Youmustfirstbuildthetestbenchusingthemakecompile_*command.#dubug必须是在DVE(VCS的debug工具,与debussy一样的功能)下进行,因为要看波形嘛,但是debug之前必须先compile#%makecompile_1//Buildstest1fordebugging//需要重新编译一次吗?#Onceyouhavebuilttheenvironmentwiththeproperdebugswitches,youcanuseDVEandthetestbenchdebugger.##testbenchdebugger是否是指编译后的那个simv可执行文件呢?其实gui_1和上面test_1中的run_1是一样的只是增加了-gui项#即增加了打开gui界面的参数,其他雷同#%makegui_1//Debugtest1withDVE#%maketb_gui_1//Debugtest1withthetestbenchdebugger#%makeboth_guis_1//Debugusingbothguis#%makepp_1//DebugusingtheVPDfileVPD文件要在执行simv之后才有吧?#Ifyouwant,youcanturnoncoveragefortheDEBUGflowbyuncommentingthe#coverageflaginthemakefile.Ifyoudothis,youcanstilllookatcoverage.#Thismaybeusefulinhelpingthosewhoaredebuggingcoveragerelatedissues.#如果在mak
本文标题:synopsis-VCS-makefile编写
链接地址:https://www.777doc.com/doc-1568720 .html