#Made by David Wentzlaff
export TOPDIR := $(shell /usr/bin/perl -e '$$ENV{"PWD"} =~ m:((.*/crudo)*):; print "$$1\n";')

export VCS_HOME = /home/cad/synopsys/vcs/6.0
export SNPSLMD_LICENSE_FILE = 1975@miris
SYNOPSYS = /home/cad/synopsys/syn/current

3RD_PARTY_VERILOG = -y $(SYNOPSYS)/dw/sim_ver \
           -y /home/cad/ibm/ibm_sa27e/current/synthesis/synopsys_dw/src_ver \
           -y /home/cad/ibm/ibm_sa27e/current/verilog  \
           +libext+.v \
           +incdir+/home/cad/ibm/ibm_sa27e/current/synthesis/synopsys_dw/src_ver

LIB_OPTS = -y $(TOPDIR)/src/components \
           -y $(TOPDIR)/ibm_sa27e/sim/ \
           -y $(TOPDIR)/sim/ \
           -y $(TOPDIR)/ibm_sa27e/verilog_wrapper \
           +incdir+$(TOPDIR)/src/components \
           $(3RD_PARTY_VERILOG)

ifeq ($(shell uname -s),Linux)
VCS_MACHINE = intel_i686_linux_2.2
endif

ifeq ($(shell uname -s),SunOS)
VCS_MACHINE = sun_sparc_solaris_5.5.1
endif

VCS_OPTS = -notice -l log +lint=all +warn2val +rad+1 +nospecify +notimingchecks +error+100

ALL_OPTS = $(LIB_OPTS) $(VCS_OPTS)

PLI_OPTS = -O3 -P value.tab value.o

FILES = test_popcount.v

comp: value.o
	$(VCS_HOME)/bin/vcs -Mupdate -ld g++ -cc gcc -cpp g++ -PP $(FILES) $(ALL_OPTS) $(PLI_OPTS)

run: 
	simv +start_val=$(SIM_START_VAL) +count=$(SIM_COUNT) $(SIM_EXTRA_PARAMS)

run_two_proc:
	nohup simv +start_val=0 +count=2147483648 > popcount.proc0.out &
	nohup simv +start_val=2147483648 +count=2147483648 > popcount.proc1.out &

display:
	$(VCS_HOME)/bin/vcs -RPP +vpdfile+vcdplus.vpd

clean:
	rm -f simv
	rm -f popcount.proc0.out
	rm -f popcount.proc1.out
	rm -rf csrc
	rm -rf simv.daidir
	rm -f value.o

value.o: value.c
	gcc -I$(VCS_HOME)/$(VCS_MACHINE)/lib -O2 -c $^

