| 1 |
2 |
dgisselq |
################################################################################
|
| 2 |
|
|
#
|
| 3 |
|
|
# Filename: Makefile
|
| 4 |
|
|
#
|
| 5 |
|
|
# Project: Zip CPU -- a small, lightweight, RISC CPU soft core
|
| 6 |
|
|
#
|
| 7 |
|
|
# Purpose: This makefile builds a verilator simulation of the zipsystem.
|
| 8 |
|
|
# It does not make the system within Vivado or Quartus.
|
| 9 |
|
|
#
|
| 10 |
|
|
#
|
| 11 |
|
|
# Creator: Dan Gisselquist, Ph.D.
|
| 12 |
|
|
# Gisselquist Tecnology, LLC
|
| 13 |
|
|
#
|
| 14 |
|
|
################################################################################
|
| 15 |
|
|
#
|
| 16 |
|
|
# Copyright (C) 2015, Gisselquist Technology, LLC
|
| 17 |
|
|
#
|
| 18 |
|
|
# This program is free software (firmware): you can redistribute it and/or
|
| 19 |
|
|
# modify it under the terms of the GNU General Public License as published
|
| 20 |
|
|
# by the Free Software Foundation, either version 3 of the License, or (at
|
| 21 |
|
|
# your option) any later version.
|
| 22 |
|
|
#
|
| 23 |
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
| 24 |
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
|
| 25 |
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
| 26 |
|
|
# for more details.
|
| 27 |
|
|
#
|
| 28 |
|
|
# License: GPL, v3, as defined and found on www.gnu.org,
|
| 29 |
|
|
# http://www.gnu.org/licenses/gpl.html
|
| 30 |
|
|
#
|
| 31 |
|
|
#
|
| 32 |
|
|
################################################################################
|
| 33 |
|
|
#
|
| 34 |
|
|
.PHONY: all
|
| 35 |
38 |
dgisselq |
all: zipsystem zipbones cpudefs.h
|
| 36 |
2 |
dgisselq |
|
| 37 |
|
|
CORED:= core
|
| 38 |
|
|
PRPHD:= peripherals
|
| 39 |
|
|
AUXD := aux
|
| 40 |
|
|
VSRC := zipsystem.v \
|
| 41 |
36 |
dgisselq |
$(PRPHD)/wbdmac.v $(PRPHD)/icontrol.v \
|
| 42 |
2 |
dgisselq |
$(PRPHD)/zipcounter.v $(PRPHD)/zipjiffies.v \
|
| 43 |
|
|
$(PRPHD)/ziptimer.v $(PRPHD)/ziptrap.v \
|
| 44 |
|
|
$(CORED)/zipcpu.v $(CORED)/cpuops.v \
|
| 45 |
|
|
$(CORED)/pipefetch.v $(CORED)/prefetch.v \
|
| 46 |
38 |
dgisselq |
$(CORED)/memops.v $(CORED)/pipemem.v \
|
| 47 |
|
|
$(AUXD)/busdelay.v \
|
| 48 |
36 |
dgisselq |
$(AUXD)/wbdblpriarb.v $(AUXD)/wbpriarbiter.v
|
| 49 |
38 |
dgisselq |
VZIP := zipbones.v \
|
| 50 |
|
|
$(CORED)/zipcpu.v $(CORED)/cpuops.v \
|
| 51 |
|
|
$(CORED)/pipefetch.v $(CORED)/prefetch.v \
|
| 52 |
|
|
$(CORED)/memops.v $(CORED)/pipemem.v \
|
| 53 |
|
|
$(AUXD)/busdelay.v $(AUXD)/wbdblpriarb.v
|
| 54 |
2 |
dgisselq |
|
| 55 |
|
|
VOBJ := obj_dir
|
| 56 |
|
|
|
| 57 |
|
|
$(VOBJ)/Vzipsystem.cpp: $(VSRC)
|
| 58 |
18 |
dgisselq |
verilator -cc -y $(CORED) -y $(PRPHD) -y $(AUXD) zipsystem.v
|
| 59 |
2 |
dgisselq |
|
| 60 |
38 |
dgisselq |
$(VOBJ)/Vzipbones.cpp: $(VZIP)
|
| 61 |
|
|
verilator -cc -y $(CORED) -y $(PRPHD) -y $(AUXD) zipbones.v
|
| 62 |
|
|
|
| 63 |
2 |
dgisselq |
$(VOBJ)/Vzipsystem__ALL.a: $(VOBJ)/Vzipsystem.cpp $(VOBJ)/Vzipsystem.h
|
| 64 |
|
|
cd $(VOBJ); make -f Vzipsystem.mk
|
| 65 |
|
|
|
| 66 |
38 |
dgisselq |
$(VOBJ)/Vzipbones__ALL.a: $(VOBJ)/Vzipbones.cpp $(VOBJ)/Vzipbones.h
|
| 67 |
|
|
cd $(VOBJ); make -f Vzipbones.mk
|
| 68 |
|
|
|
| 69 |
|
|
cpudefs.h: $(CORED)/zipcpu.v
|
| 70 |
|
|
@echo "// Do not edit this file, it is automatically generated!" > $@
|
| 71 |
|
|
@grep ^.define $^ | grep OPT_ | sed -e '{ s/^.d/#d/ }' >> $@
|
| 72 |
|
|
|
| 73 |
2 |
dgisselq |
.PHONY: zipsystem
|
| 74 |
|
|
zipsystem: $(VOBJ)/Vzipsystem__ALL.a
|
| 75 |
|
|
|
| 76 |
38 |
dgisselq |
.PHONY: zipbones
|
| 77 |
|
|
zipbones: $(VOBJ)/Vzipbones__ALL.a
|
| 78 |
|
|
|
| 79 |
2 |
dgisselq |
.PHONY: clean
|
| 80 |
|
|
clean:
|
| 81 |
38 |
dgisselq |
rm -rf $(VOBJ) cpudefs.h
|