[an error occurred while processing this directive]
|
Никакая критика не принимается! :)) Сможете сделать лучше - welcome!
Да, и все форматирование сейчас пропадет. :-(
Все это сейчас работает под Linux, поэтому на переменные WINE и SHUTUP_WINE можно не обращать внимания.
# -- Makefile start --
DESIGN_NAME := mydesign
# vhdl source files
SRC := ../source1.vhd \
../source2.vhd \
../source3.vhd \
../$(DESIGN_NAME).vhd
# variables to use Synplify
SYNPLIFY := synplify_pro
SYN_DIR := ../SYNWork
SYN_PRJ := $(SYN_DIR)/$(DESIGN_NAME).prj
SYN_FILES := $(SYN_DIR)/$(DESIGN_NAME).fse \
$(SYN_DIR)/$(DESIGN_NAME).ncf $(SYN_DIR)/$(DESIGN_NAME).srd \
$(SYN_DIR)/$(DESIGN_NAME).srm $(SYN_DIR)/$(DESIGN_NAME).srs \
$(SYN_DIR)/$(DESIGN_NAME).sxr $(SYN_DIR)/*.tlg
# variables to use Xilins under wine under Linux
WINE := wine --
SHUTUP_WINE := 2>/dev/null
# variables - filenames
EDF := $(SYN_DIR)/$(DESIGN_NAME).edf
UCF := $(DESIGN_NAME).ucf
NGD := $(DESIGN_NAME).ngd
NGA := $(DESIGN_NAME).nga
PCF := $(DESIGN_NAME).pcf
MAP := map.ncd
NCD := $(DESIGN_NAME).ncd
TWR := $(DESIGN_NAME).twr
BIT := $(DESIGN_NAME).bit
# variables - design options
PAR_DIR := $(DESIGN_NAME).dir
LOGS_DIR := $(DESIGN_NAME).logs
DEVICE := -p xcv812e-7-fg900
EFFORT_LEVEL := -ol 5
COVER := -cm speed -k 5
BITGEN_OPTIONS_FILE := bitgen.ut
PROG_DIR := prog
EXO := $(PROG_DIR)/$(DESIGN_NAME)00.exo $(PROG_DIR)/$(DESIGN_NAME)01.exo
.PHONY := all exo bit par map ngd edf syn sim clean clean-all
MDEPS := $(SYN_PRJ) $(SRC) $(UCF) $(NGO)
all: $(EXO)
exo $(EXO): $(BIT)
rm -f $(PROG_DIR)/*
$(WINE) promgen -p exo -x XC18V04 XC1704L -c 0xFF -w -o $(EXO) -u 0 $< $(SHUTUP_WINE)
bit $(BIT): $(MDEPS) $(BITGEN_OPTIONS_FILE) $(PCF) $(NCD)
$(WINE) trce -e 5 -skew -o $(TWR) $(NCD) $(PCF) $(SHUTUP_WINE)
$(WINE) bitgen -w $(NCD) -f $(BITGEN_OPTIONS_FILE) $@ $(PCF) $(SHUTUP_WINE)
rm -fR $(LOGS_DIR)
mkdir $(LOGS_DIR)
cp -f *.log $(LOGS_DIR)
cp -f $(SYN_DIR)/$(DESIGN_NAME).srr $(LOGS_DIR)
mv -f $(DESIGN_NAME).bld $(LOGS_DIR)
mv -f map.mrp $(LOGS_DIR)
mv -f $(DESIGN_NAME).par $(LOGS_DIR)
mv -f $(DESIGN_NAME).drc $(LOGS_DIR)
mv -f $(DESIGN_NAME).dly $(LOGS_DIR)
mv -f $(DESIGN_NAME).pad $(LOGS_DIR)
mv -f $(DESIGN_NAME).twr $(LOGS_DIR)
mv -f $(DESIGN_NAME).bgn $(LOGS_DIR)
mv -f $(DESIGN_NAME)_ngdbuild.nav $(LOGS_DIR)
par $(NCD): $(MDEPS) $(MAP) $(PCF)
rm -fr $(PAR_DIR)
$(WINE) par -w $(EFFORT_LEVEL) -n 0 -s 1 $(MAP) $(PAR_DIR) $(PCF) $(SHUTUP_WINE)
cp -f $(PAR_DIR)/*.ncd $@
cp -f $(PAR_DIR)/*.dly $(DESIGN_NAME).dly
cp -f $(PAR_DIR)/*.pad $(DESIGN_NAME).pad
cp -f $(PAR_DIR)/*.par $(DESIGN_NAME).par
cp -f $(PAR_DIR)/*.xpi $(DESIGN_NAME).xpi
map $(MAP) $(PCF): $(MDEPS) $(NGD)
$(WINE) map $(DEVICE) -pr b $(COVER) -o $(MAP) $(NGD) $(PCF) $(SHUTUP_WINE)
ngd $(NGD): $(MDEPS)
$(WINE) ngdbuild $(DEVICE) -uc $(UCF) -dd . $(EDF) $@ $(SHUTUP_WINE)
syn edf $(EDF): $(SYN_PRJ) $(SRC)
$(MAKE) clean
$(SYNPLIFY) -batch $<
sim: $(NCD)
$(WINE) ngdanno $(NCD) $(SHUTUP_WINE)
$(WINE) ngd2vhdl -aka -r -w -log $(DESIGN_NAME)_ngd.log -te $(DESIGN_NAME)_sim $(NGA) $(DESIGN_NAME)_sim.vhd $(SHUTUP_WINE)
rm -f $(NGA)
clean:
rm -f $(SYN_FILES) $(SYN_DIR)/$(DESIGN_NAME).srr
rm -f $(EDF) $(BIT)
rm -fr $(LOGS_DIR) $(PAR_DIR)
rm -f map.*
rm -f $(NGD) $(NGA) *.ncd
rm -f $(PCF)
rm -f *.pa?
rm -f *.bld
rm -f *.drc
rm -f *.dly
rm -f *.twr
rm -f *.lst
rm -f *.xpi
rm -f *_sim.* *.alf
rm -f *.log
clean-all: clean
rm -f *.ngo
rm -f $(PROG_DIR)/*
# -- Makefile end --
Сделано это, разумеется, по GNU make.
E-mail: info@telesys.ru