Files
willi_board/Makefile
2013-03-12 19:45:08 +01:00

151 lines
4.2 KiB
Makefile
Executable File

COMMON_INFILES=src/dcm_wrap.vhd src/sseg_ctrl.vhd src/toplevel.vhd
SYN_INFILES=
PSMFILES=
CORES=
PRJNAME=willi_board
NGCFILE=$(PRJNAME).ngc
XSTFILE=$(PRJNAME).xst
XCF=constr/$(PRJNAME).xcf
UCF=constr/$(PRJNAME).ucf
PCFFILE=$(PRJNAME).pcf
NGDFILE=$(PRJNAME).ngd
NCDFILE=$(PRJNAME).ncd
NCDFILE_R=$(PRJNAME)_routed.ncd
BITFILE=$(PRJNAME).bit
TWRFILE=$(PRJNAME).twr
TWXFILE=$(PRJNAME).twx
PRJFILE=$(PRJNAME).prj
PART=xc3s250e-cp132-4
XSTOPTS="-ifn $(PRJFILE) \
-ifmt mixed \
-top toplevel \
-ofn $(NGCFILE) \
-ofmt NGC \
-p $(PART) \
-opt_mode Speed \
-opt_level 1 \
-fsm_encoding auto \
-sd coregen/ \
-read_cores yes \
-rtlview no \
-iob auto \
-keep_hierarchy soft \
$(addprefix -uc ,$(XCF))"
NGDOPTS=-p $(PART) -aul -aut $(addprefix -uc ,$(UCF)) -sd coregen/
MAPOPTS=-p $(PART) -cm balanced -timing -ol high -logic_opt on -xe n
PAROPTS=-ol high -xe n
BITGENOPTS=-g LCK_cycle:4
TRACEOPTS=-v -u 10
SIM_INFILES=
SIM_INFILES_VLOG=
VLOGCOMPOPTS=
VHPCOMPOPTS=-L ieee_proposed=isim/ieee_proposed --incremental
FUSEOPTS=-L ieee_proposed=isim/ieee_proposed
SYNALLFILES=$(COMMON_INFILES) $(SYN_INFILES)
SIMALLFILES=$(SIM_INFILES) $(COMMON_INFILES)
SIMALLFILESXDB=isim/ieee_proposed/std_logic_1164_additions.vdb \
$(addprefix isim/work/,$(notdir $(SIMALLFILES:.vhd=.vdb))) \
$(addprefix isim/work/,$(notdir $(SIM_INFILES_VLOG:.v=.sdb)))
CORESVDB=$(addprefix isim/work/,$(addsuffix .vdb,$(CORES)))
CORESNGC=$(addprefix coregen/,$(addsuffix .ngc,$(CORES)))
XILPATH=
COREGEN=$(XILPATH)coregen
XST=$(XILPATH)xst
NGDBUILD=$(XILPATH)ngdbuild
MAP=$(XILPATH)map
PAR=$(XILPATH)par
BITGEN=$(XILPATH)bitgen
TRCE=$(XILPATH)trce
VHPCOMP=$(XILPATH)vhpcomp
VLOGCOMP=$(XILPATH)vlogcomp
FUSE=$(XILPATH)fuse
.SECONDARY:
all: $(BITFILE) #firmware/fw.elf
synth: $(NGCFILE)
impl: $(NCDFILE_R)
timing: $(TWRFILE)
#firmware/fw.elf:
# cd firmware && make fw.elf
#%.vhd: %.psm
# ../tools/picoasm/picoasm -t ../tools/picoasm/ROM_form.vhd -i $<
#src/wb_interconnect.vhd: src/wishbone.defines
# cd src && ../tools/wishbone.pl -nogui wishbone.defines
#
coregen/%.vhd coregen/%.ncd: coregen/%.xco coregen/coregen.cgp
$(COREGEN) -p coregen/coregen.cgp -b $< -r
$(PRJFILE): Makefile
rm -f $(PRJFILE); for i in $(SYNALLFILES); do echo "vhdl work" $$i >> $(PRJFILE); done
$(XSTFILE): Makefile
rm -f $@; echo "run $(XSTOPTS)" > $@
planahead_postsynth.tcl: Makefile
rm -f $@; echo -e "create_project -force -part $(PART) postsynth planahead\n\
set_property design_mode GateLvl [current_fileset]\n\
import_files $(NGCFILE) $(CORESNGC)\n\
import_files -fileset constrs_1 $(UCF)" > $@
planahead_postimpl.tcl: Makefile
rm -f $@; echo -e "create_project -force -part $(PART) postimpl planahead\n\
set_property design_mode GateLvl [current_fileset]\n\
add_files $(NGCFILE) $(CORESNGC)\n\
import_files -fileset constrs_1 $(UCF)\n\
import_as_run -run impl_1 -twx $(TWXFILE) $(NCDFILE_R)" > $@
planahead_postsynth: planahead_postsynth.tcl $(NGCFILE) $(UCF) $(CORESNGC)
planAhead -source planahead_postsynth.tcl
planahead_postimpl: planahead_postimpl.tcl $(NCDFILE) $(UCF) $(NCDFILE_R) $(TWXFILE) $(CORESNGC)
planAhead -source planahead_postimpl.tcl
$(NGCFILE): $(SYNALLFILES) $(PRJFILE) $(XSTFILE) $(XCF) $(CORESNGC)
$(XST) -ifn $(XSTFILE)
$(NGDFILE): $(NGCFILE) $(UCF) $(CORESNGC)
$(NGDBUILD) $(NGDOPTS) $(NGCFILE) $(NGDFILE)
$(PCFFILE) $(NCDFILE): $(NGDFILE)
$(MAP) $(MAPOPTS) -o $(NCDFILE) $(NGDFILE) $(PCFFILE)
$(NCDFILE_R): $(PCFFILE) $(NCDFILE)
$(PAR) -w $(PAROPTS) $(NCDFILE) $(NCDFILE_R) $(PCFFILE)
$(BITFILE): $(NCDFILE_R) $(PCFFILE)
$(BITGEN) -w $(BITGENOPTS) $(NCDFILE_R) $(BITFILE) $(PCFFILE)
$(TWRFILE) $(TWXFILE): $(NCDFILE_R) $(PCFFILE)
$(TRCE) $(TRACEOPTS) -o $(TWRFILE) $(NCDFILE_R) $(PCFFILE)
isim/ieee_proposed/std_logic_1164_additions.vdb: tools/std_logic_1164_additions.vhdl
$(VHPCOMP) --work ieee_proposed=isim/ieee_proposed $< $(VHPCOMPOPTS)
isim/work/%.vdb: src/%.vhd
$(VHPCOMP) $< $(VHPCOMPOPTS)
isim/work/%.vdb: tb/%.vhd
$(VHPCOMP) $< $(VHPCOMPOPTS)
isim/work/%.vdb: coregen/%.vhd
$(VHPCOMP) $< $(VHPCOMPOPTS)
%.exe: $(SIMALLFILESXDB) $(CORESVDB) isim/work/%.vdb
$(FUSE) work.$(@:.exe=) -o $@ $(FUSEOPTS)
clean:
rm -f $(NGCFILE) $(PCFFILE) $(NGDFILE) $(NCDFILE) $(NCDFILE_R) $(BITFILE) $(SIMALLFILESXDB) $(CORESVDB)
.PSEUDO=all synth impl timing clean planahead_postsynth planahead_postimpl