Makefile 1.02 KB
# make

# vcs setup

VCS_HOME ?= /ecad/vcs
VCS_NAME ?= vcs
VCS ?= $(VCS_HOME)/bin/$(VCS_NAME)
VIRSIMHOME = /ecad/vcs/virsimdir
VCD2VPD = $(VCS_HOME)/virsimdir/bin/vcd2vpd

SIMCDIR = c
SIMVDIR ?= .

# paths to vendor library;

XLIB = ../xilinx
MLIB = ../micron

# vcs options;

VCSOPTS = -l $(VCS_NAME).log \
	-M -Mupdate \
	-lc -V \
	-y . \
	-y ../dbx \
	-y $(XLIB) \
	+libext+.v \
	+race=all \
	-Mdir=$(SIMVDIR)/$(SIMCDIR) \
	+notimingchecks \
	+nospecify

# all vcs dirt;

VCSDIRT = \
	$(SIMVDIR)/$(SIMCDIR) \
	$(SIMVDIR)/simv* \
	$(VCS_NAME).log \
	$(SIMVDIR)/*dump \
	$(SIMVDIR)/*.log \
	$(SIMVDIR)/*.vpd \
	$(SIMVDIR)/*.bck \
	$(SIMVDIR)/race*

# default target is to build the behavioral simulator;

default all: simv

# clean directory;

clean: _always
	rm -rf $(VCSDIRT)

# compile the behavioral simulator;

simv: vsim.v _always
	$(VCS) $(VCSOPTS) \
		+define+SEED=`date +%s` \
		-o $(SIMVDIR)/$@  \
		vsim.v $(XLIB)/glbl.v

sim: ./simv
	./simv +vcs+lic+wait > vsim.log
	$(VCD2VPD) verilog.dump vsim.vpd

# always dependency

_always: