################################################################
# $Id: Makefile 115 2010-08-13 05:18:30Z matutani $
################################################################

all:	sim

################################################################
# Verilog simulator (iverilog or ncverilog)
################################################################
VERILOG = ncverilog
#VERILOG = iverilog

################################################################
# Source files
################################################################
SRC_RTL	= ../design/define.h ${SRC_SIM} ${SRC_CUBE}
SRC_SYN	= ../design/define.h ${SRC_SIM} ../syn/cube.vnet
SRC_PR	= ../design/define.h ${SRC_SIM} ../pr/cube_out.v

SRC_SIM = test.v cube_top.v txrx.v
SRC_CUBE= ../design/cube.v ../design/core.v ../design/sbus.v ${SRC_ROUT}
SRC_ROUT= ../design/router.v ../design/inputc.v ../design/vc.v ../design/fifo.v ../design/rtcomp.v ../design/vcmux.v ../design/cb.v ../design/mux.v ../design/muxcont.v ../design/arb.v ../design/outputc.v

################################################################
# Event ROM
################################################################
event.hex:
	./rom.pl > event.hex

################################################################
# RTL simulation (make sim; make view)
################################################################
ifeq (${VERILOG},iverilog)
SIM	= vvp
VIEW	= gtkwave
EXE	= test 
DUMP	= test.vcd
SIM_XXX	= test test.vcd sim.log
sim:	${EXE}
${EXE}:	${SRC_RTL} event.hex
	${VERILOG} -D__SIM__ -o ${EXE} ${SRC_RTL} 
	${SIM} ${EXE} | tee sim.log
endif

ifeq (${VERILOG},ncverilog)
VIEW	= simvision
DUMP	= test.vcd
SIM_XXX	= INCA_libs ncverilog.log ncverilog.key sim.log *.dsn *.trn *.vcd
sim:	${DUMP}
${DUMP}:${SRC_RTL} event.hex
	${VERILOG} +define+__SIM__ +delay_mode_zero +access+r ${SRC_RTL} | tee sim.log
endif

view:	${DUMP}
	${VIEW} ${DUMP}

################################################################
# Post-synthesis simulation (make ssim)
################################################################
LIBV	= -y /home/vdec/lib/fujitsu65/cs202_sc_io_lib/verilog/CS202SZ/sim/std/ -y /home/vdec/lib/fujitsu65/cs202_sc_io_lib/verilog/common/sim/xl +libext+.v
ssim:	${SRC_SYN} event.hex
	ncverilog -u +access+r ${LIBV} ${SRC_SYN} | tee sim.log

################################################################
# Post-layout simulation (make psim)
################################################################
psim:	${SRC_PR} cube_pt.sdf event.hex
	ncverilog -u +define+__SDF__ +access+r ${LIBV} ${SRC_PR} | tee sim.log

PT	= pt_shell
PT_SCR	= scripts/convert_sdf.tcl
PT_XXX	= pt_shell_command.log pt.log cube_pt.*.X
sdf:
	${PT} -f ${PT_SCR} | tee pt.log

################################################################
# Clean (make clean; make allclean)
################################################################
clean:
	rm -rf ${SIM_XXX} ${PT_XXX}
allclean:
	rm -f cube_pt.sdf event.hex 
	make clean

################################################################
