1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# cleanup
EXTENSIONS=class rbf rpt sof pin summary ttf qdf dat wlf done qws
#
# Set USB to true for an FTDI chip based board (dspio, usbmin, lego)
#
USB=false
# Assembler files
APP=test
# Altera FPGA configuration cable
#BLASTER_TYPE=ByteBlasterMV
BLASTER_TYPE=USB-Blaster
ifeq ($(WINDIR),)
USBRUNNER=./USBRunner
S=:
else
USBRUNNER=USBRunner.exe
S=\;
endif
# The VHDL project for Quartus
QPROJ=dspio
QPROJ=altde2-70
all: directories tools rom
make patmos
directories:
-mkdir -p rbf
patsim:
-mkdir -p simulator/build
cd simulator/build && cmake ..
cd simulator/build && make
-mkdir -p bin
cp simulator/build/src/pa* bin
elf2vhdl:
-mkdir -p ctools/build
cd ctools/build && cmake ..
cd ctools/build && make
-mkdir -p bin
cp ctools/build/src/elf2vhdl bin
tools:
make patsim
make elf2vhdl
-rm -rf java/classes
-rm -rf java/lib
-rm -rf java/src/patmos/asm/generated
mkdir java/classes
mkdir java/lib
mkdir java/src/patmos/asm/generated
java -classpath lib/antlr-3.3-complete.jar org.antlr.Tool \
-fo java/src/patmos/asm/generated java/src/grammar/PatGram.g
javac -classpath lib/antlr-3.3-complete.jar \
-d java/classes java/src/patmos/asm/generated/*.java \
java/src/patmos/asm/*.java
javac java/src/simulator/*.java \
-d java/classes
javac java/src/util/*.java \
-d java/classes
cd java/classes && jar cf ../lib/patmos-tools.jar *
rom:
-rm -rf vhdl/generated
mkdir vhdl/generated
-mkdir -p tmp
bin/paasm asm/$(APP).s tmp/$(APP).bin
java -cp java/lib/patmos-tools.jar \
patmos.asm.Bin2Vhdl -s tmp -d vhdl/generated $(APP).bin
crom:
-rm -rf vhdl/generated
mkdir vhdl/generated
-mkdir -p tmp
bin/elf2vhdl $(APP) tmp/$(APP).bin
java -cp java/lib/patmos-tools.jar \
patmos.asm.Bin2Vhdl -s tmp -d vhdl/generated $(APP).bin
old_rom: tools
-rm -rf vhdl/generated
mkdir vhdl/generated
java -cp java/lib/patmos-tools.jar$(S)lib/antlr-3.3-complete.jar \
patmos.asm.PatAsm -s asm -d vhdl/generated $(APP).s
# ModelSim
sim:
cd modelsim; make
bsim:
cd modelsim; make batch
old_sim:
java -cp java/lib/patmos-tools.jar \
simulator.SimPat
# High-level simulation
hsim:
bin/pasim --debug --debug-fmt=short tmp/$(APP).bin
# Testing
test:
testsuite/run.sh
.PHONY: test
# Compile Patmos and download
patmos:
make synth
make config
# configure the FPGA
config:
ifeq ($(USB),true)
make config_usb
else
ifeq ($(XFPGA),true)
make config_xilinx
else
make config_byteblaster
endif
endif
synth:
@echo $(QPROJ)
for target in $(QPROJ); do \
make qsyn -e QBT=$$target || exit; \
# cd quartus/$$target && quartus_cpf -c patmos.sof ../../rbf/$$target.rbf; \
done
#
# Quartus build process
# called by jopser, jopusb,...
#
qsyn:
echo $(QBT)
echo "building $(QBT)"
-rm -rf quartus/$(QBT)/db
-rm -f quartus/$(QBT)/patmos.sof
-rm -f jbc/$(QBT).jbc
-rm -f rbf/$(QBT).rbf
quartus_map quartus/$(QBT)/patmos
quartus_fit quartus/$(QBT)/patmos
quartus_asm quartus/$(QBT)/patmos
quartus_sta quartus/$(QBT)/patmos
config_byteblaster:
cd quartus/$(QPROJ) && quartus_pgm -c $(BLASTER_TYPE) -m JTAG patmos.cdf
config_usb:
cd rbf && ../$(USBRUNNER) $(QPROJ).rbf
# TODO: no Xilinx Makefiles available yet
config_xilinx:
cd xilinx/$(XPROJ) && make config
clean:
for ext in $(EXTENSIONS); do \
find `ls` -name \*.$$ext -print -exec rm -r -f {} \; ; \
done
-find `ls` -name patmos.pof -print -exec rm -r -f {} \;
-find `ls` -name db -print -exec rm -r -f {} \;
-find `ls` -name incremental_db -print -exec rm -r -f {} \;
-find `ls` -name patmos_description.txt -print -exec rm -r -f {} \;
-rm -rf asm/generated
-rm -f vhdl/*.vhd
-rm -rf $(TOOLS)/dist
-rm -rf $(PCTOOLS)/dist
-rm -rf $(TARGET)/dist
-rm -rf modelsim/work
-rm -rf modelsim/transcript
-rm -rf modelsim/gaisler
-rm -rf modelsim/grlib
-rm -rf modelsim/techmap