TOP = testbench

#PRE_SRC = $(TOP).v
#SRCS = $(TOP).new.v
SRCS = $(TOP).v host32.v
SRC2 = ../pci_common/glbl.v ../../src/pci_lc_i.v

SRC_DIR = ../../src
INC_DIR = ../../../common/src+../pci_common

SIMPRIMS = /cad/xilinx/ise9.1i/verilog/src/simprims
UNISIMS = /cad/xilinx/ise6.3i/verilog/src/unisims
COREGENLIBS = /cad/xilinx/ise9.1i/verilog/src/XilinxCoreLib

DEFINES_SRCS = ../../../common/src/defines.v

VCS_FLAGS = +v2k +libext+.v -timescale=1ns/1ns

# DUMP_CTRL may be overidden by script calling this
DUMP_CTRL=

MODELSIM_CORELIB = /cad/xilinx/ise9.1i/XilinxLibs/XilinxCoreLib

# make sure we can build under VCS and ModelSim
# simv is generated by vcs
# top is not generated but will force ModelSim's vlog to be run
all: simv top

simv: $(SRCS) $(DEFINES_SRCS) $(DUMP_CTRL) ../pci_common/host32_inc.v
	vcs $(VCS_FLAGS) -y $(SRC_DIR) -y $(COREGENLIBS) -y $(SIMPRIMS) -y $(UNISIMS) -y . +incdir+$(INC_DIR) $(DEFINES_SRCS) $(SRCS) $(SRC2) $(DUMP_CTRL)

simvfast: $(SRCS) $(DEFINES_SRCS) $(DUMP_CTRL) ../pci_common/host32_inc.v
	vcs -o simvfast +rad $(VCS_FLAGS) -y $(SRC_DIR) -y $(COREGENLIBS) -y $(SIMPRIMS) -y $(UNISIMS) -y . +incdir+$(INC_DIR) $(DEFINES_SRCS) $(SRCS) $(SRC2) $(DUMP_CTRL)

# Once vlog has built, simulate with 
# % vsim -c -L /cad/xilinx/ise9.1i/XilinxLibs/XilinxCoreLib <top_module>
top: $(SRCS) $(DEFINES_SRCS) work
	vlog -incr +incdir+$(INC_DIR) $(DEFINES_SRCS) $(SRC_DIR)/*.v $(SRCS) $(DUMP_CTRL)
	@echo To simulate: vsim -c -L /cad/xilinx/ise9.1i/XilinxLibs/XilinxCoreLib $(TOP)

work: 
	vlib work

clean:
	rm -rf work simv transcript *~

$(SRCS): $(PRE_SRC)
	replace_consts.sh
