makefile fuer behsim
authorBernhard Urban <lewurm@gmail.com>
Thu, 1 Apr 2010 21:19:48 +0000 (23:19 +0200)
committerBernhard Urban <lewurm@gmail.com>
Thu, 1 Apr 2010 22:44:58 +0000 (00:44 +0200)
* 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.

.gitignore
src/Makefile [new file with mode: 0644]
src/alu.do [new file with mode: 0644]

index 67be4a297d784000c08f3b38bf08a193d6464148..adcd9241f530d72261135a287ff12e56c83c4862 100644 (file)
@@ -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 (file)
index 0000000..656c6f7
--- /dev/null
@@ -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 (file)
index 0000000..56ba7f9
--- /dev/null
@@ -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