From: Bernhard Urban Date: Thu, 1 Apr 2010 21:19:48 +0000 (+0200) Subject: makefile fuer behsim X-Git-Tag: review_abgabe~28 X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=hwmod.git;a=commitdiff_plain;h=a43a9c70d7848f791168a923197cb05cdaa84683 makefile fuer behsim * vsim, vcom, usw. muessen in $PATH sein (ueberlichweise ist das /opt/altera9.1/modelsim_ase/linux/). * in IFILES gehoeren alle namen der vhdl dateien rein die kompiliert werden sollen, dabei ist die reihenfolge ausschlaggebend. * "make behsim" bzw. "make" kompiliert alle dateien die noetig sind. beim ersten aufruf bzw. nach "make clean" werden libraries und mapping der libray automatisch vorgenommen. als directory wird hierfuer ~hwmod/sim/beh verwendet (und wird nicht versioniert). * "make startms" startet modelsim mit der behsim. modelsim muss aber nicht neugestartet werden falls sourcefiles aktualisiert werden, sondern es reicht ein "make behsim" bzw. "make" im ~hwmod/src verzeichnis und dann ein "restart -f" in der konsole von modelsim selbst. * im moment wird noch ein do file fuer die simulation der ALU beim aufruf von vsim uebergeben. das is leider noch nicht sehr generisch und wird zu zeiten angepasst. * das ganze duerfte auch im TILAB lauffaehig sein. --- diff --git a/.gitignore b/.gitignore index 67be4a2..adcd924 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,9 @@ spec/sm/*.pdf *~ *.ppk + +#sim +sim/ + +#modelsim +src/transcript diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..656c6f7 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,38 @@ +SHELL := bash + +MPWD := $(shell pwd) +D_BEHSIM := $(MPWD)/../sim/beh + +WORK := work + +#reihenfolge ist hier wichtig! +IFILES = gen_pkg alu alu_tb +IFILES := $(strip $(IFILES)) +#virtuelle targets: weil wir sowas wie ein objectfile von vcom nicht bekommen. bessere ideen sind willkommen +VTARGETS := $(foreach n, $(IFILES), $(D_BEHSIM)/$(WORK)/$(n)/_primary.dat) + +all: behsim + +behsim: $(D_BEHSIM)/modelsim.ini $(VTARGETS) + +$(D_BEHSIM)/modelsim.ini: + @echo " INIT for behavioural simulation" + @mkdir -p $(D_BEHSIM) + @#make fuehrt jeden befehl in einer eigenen shell aus, deswegen ein "oneliner" + @cd $(D_BEHSIM); \ + vlib work > /dev/null ; \ + vmap work work > /dev/null ; + +$(D_BEHSIM)/$(WORK)/%/_primary.dat: %.vhd + @echo " CC $<" + @cd $(D_BEHSIM); \ + vcom -work $(WORK) $(MPWD)/$< + +startms: behsim + @cd $(D_BEHSIM); \ + vsim "work.alu_tb(sim)" -f /dev/null -do $(MPWD)/alu.do + +.PHONY: clean +clean: + rm -Rf $(D_BEHSIM) + diff --git a/src/alu.do b/src/alu.do new file mode 100644 index 0000000..56ba7f9 --- /dev/null +++ b/src/alu.do @@ -0,0 +1,18 @@ +#signale hinzufuegen +add wave sys_clk +add wave sys_res_n +add wave opcode +add wave op1 +add wave op2 +add wave op3 +add wave optmp +add wave do_calc +add wave calc_done +add wave stop + +#simulation starten (100ms) +run 100 ms + +#ganz nach links scrollen +#TODO: kommando in der version nicht verfuegbar?! +#seetime wave 0 ms