節錄自
http://www.socvista.com/bbs/archiver/?tid-2539.html
首先工作环境是linux,所有的命令都是用makefile来联系在一起的。
举个简单的例子,
如果需要运行一个vcs 命令 并带一些命令行参数。公司的做法如下。
在某个固定的地方创建一个vcs.makefile 作为通用的makefile,所有人需要用到vcs的,那么在自己项目的makefile中 include 这个vcs.makefile.
vcs.makefile
VCS_EXE = $(VCS_HOME)/bin/vcs
$(VCS_EXE) ${VCS_FLAGS} \
-l $(vcs_logfile $@) +libverbose \
-LDFLAGS "${VCS_LDFLAGS} ${VCS_LIB_PATHS} -g"
………………
拿其中的VCS_FLAGA来详细说明:
VCS_FLAGS += +define+NO_DUMPS
VCS_FLAGS += -Mupdate -Mmakep="gmake"
VCS_FLAGS += -cc $(GCC_PATH)/bin/gcc -cpp $(GCC_PATH)/bin/g++ -ld $(GCC_PATH)/bin/g++
VCS_FLAGS += $(VCS_VERSION_ARGS)
VCS_FLAGS += ${VCS_EXTRA_ARGS}
VCS_FLAGS += +define+NO_FSDB=1
这个common的 vcs.makefile可以被任意项目调用,我们自己锁需要做的事情就是创建一个自己模块的module_name.makefile 在其中include这个vcs.makefile, 然后将需要的参数传递给vcs.makefile
我们一般利用${VCS_EXTRA_ARGS} 变量,将我们需要为项目专门添加和修改的参数传递
比如,在自己模块的module_name.makefile中:
# vcs argument
VCS_EXTRA_ARGS += +notimingcheck +nospecify +udpsched +vcsevalorder $(STANDSIM_DIR)/dini_sodimm/glbl.v
VCS_EXTRA_ARGS += +define+M512+S667+X8 $(STANDSIM_DIR)/dini_sodimm/ddr2_vcs.vp
VCS_EXTRA_ARGS += +dump_multi_fsdb
VCS_EXTRA_ARGS += +dmp_siloti +dmp_top=0
这样我们就添加额外的vcs command line argument。
以后需要跑vcs的时候,只需要敲一下make就可以。
vcs.makefile把大部分需要设定的参数都会设置好,并有初始值。可以允许我们在各自模块的makefile中覆盖,用以执行自己special 的情况。当然大部分参数都会用设置好的值,在运行之前,我们甚至多数时候都不知道自己用了哪些vcs的参数,只有test跑完,看logfile的时候, 才会发现原来vcs.makefile把我们加了一大堆的参数,包括vcs的版本、路径、项目默认需要包含的很多头文件、使用v2k、使用-ssy -ssv、等等,可能有30~40个默认的参数会被添加。
如果需要使用siloti,那么我们只需要项目文件夹下执行 make siloti,那么和siloti有关的所有参数vcs.makefile都会帮我们自动配置好。 出来的波形都是经过siloti的。
沒有留言:
張貼留言