From 9994e1276580164c6a09b66026c645a50367592d Mon Sep 17 00:00:00 2001 From: Paul Selkirk Date: Thu, 12 May 2016 18:20:34 -0400 Subject: Initial commit, based on core/platform/novena[/fmc], probably doesn't work, but gives Pavel and Fredrik a place to put their stuff. --- build/Makefile | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 build/Makefile (limited to 'build/Makefile') diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..050789a --- /dev/null +++ b/build/Makefile @@ -0,0 +1,86 @@ +# Localize all the relative path awfulness in one variable. + +CORE_TREE := $(abspath ../../../..) + +# Figure out what the native word size is on the build host, because +# the XiLinx tools care for some reason. + +WORD_SIZE := $(shell python -c 'from struct import pack; print len(pack("L", 0)) * 8') + +# Parameters to xilinx.mk. + +project ?= alpha_fmc +vendor = xilinx +family = artix7 +part = xc7a200tfbg484-3 +top_module = alpha_fmc_top +isedir = /opt/Xilinx/14.7/ISE_DS +xil_env = . $(isedir)/settings$(WORD_SIZE).sh +ucf ?= ../ucf/$(project).ucf + +all: $(project).bit + +# Build the default core_selector if it doesn't already exist. + +CONFIG = $(CORE_TREE)/platform/common/config +core_selector.v core_vfiles.mk: + $(CONFIG)/config.py -c $(CONFIG)/config.cfg + +# Build some different configurations + +bare: + $(CONFIG)/config.py -c $(CONFIG)/config.cfg -s bare + $(MAKE) project=$(project)_bare ucf=$(ucf) + +trng: + $(CONFIG)/config.py -c $(CONFIG)/config.cfg -s trng + $(MAKE) project=$(project)_trng ucf=$(ucf) + +hash: + $(CONFIG)/config.py -c $(CONFIG)/config.cfg -s hash + $(MAKE) project=$(project)_hash ucf=$(ucf) + +rsa: + $(CONFIG)/config.py -c $(CONFIG)/config.cfg -s rsa + $(MAKE) project=$(project)_rsa ucf=$(ucf) + +# Verilog files that always go with builds on this platform. + +vfiles = \ + $(CORE_TREE)/platform/alpha/fmc/rtl/alpha_fmc_top.v \ + $(CORE_TREE)/platform/alpha/common/rtl/alpha_regs.v \ + $(CORE_TREE)/platform/alpha/common/rtl/alpha_clkmgr.v \ + $(CORE_TREE)/platform/alpha/common/rtl/clkmgr_dcm.v \ + ./core_selector.v \ + $(CORE_TREE)/comm/fmc/src/rtl/cdc_bus_pulse.v \ + $(CORE_TREE)/comm/fmc/src/rtl/fmc_arbiter_cdc.v \ + $(CORE_TREE)/comm/fmc/src/rtl/fmc_arbiter.v \ + $(CORE_TREE)/comm/fmc/src/rtl/fmc_d_phy.v \ + $(CORE_TREE)/comm/fmc/src/rtl/fmc_indicator.v \ + $(CORE_TREE)/comm/fmc/src/rtl/fmc_regs.v + +# Verilog files selected by the core configuration script. + +-include ./core_vfiles.mk + +include xilinx.mk + +# 'clean' target collects files by project name, and we just broke that +# by adding configurations + +junk += *.bgn *.bit *.bld *.cfi *.drc *.lso *.map *.mcs *.mrp *.ncd *.ngc \ + *.ngd *.ngm *.pcf *.post_map.twr *.post_map.twx *.prj *.prm *.psr \ + *.scr *.srp *.twr *.twx *_bd.bmm *_bitgen.xwb *_bitgen.xwbt \ + *_err.twr *_err.twx *_par.grf *_par.ncd *_par.pad *_par.par \ + *_par.ptwx *_par.unroutes *_par.xpi *_par_pad.csv *_par_pad.txt \ + *_summary.xml *_usage.xml + +distclean: clean + rm core_selector.v core_vfiles.mk + +# Fun extras for running verilator as a linter. + +VERILATOR_FLAGS = --lint-only --top-module $(top_module) -Wall -Wno-fatal -Wno-DECLFILENAME + +lint: + verilator ${VERILATOR_FLAGS} $(vfiles) $(CORE_TREE)/platform/alpha/common/rtl/lint-dummy.v -- cgit v1.2.3