RISCV/Makefile

75 lines
2.2 KiB
Makefile

# Makefile for the different parts of the RISC-V COntroller
# Project by
# Yannick Reiß
# Variable section
PARTS = ram regs alu decoder pc cpu
CHDL = ghdl
FLAGS = --std=08
REGSSRC = src/riscv_types.vhd src/registers.vhd tb/tb_reg.vhd
ALUSRC = src/riscv_types.vhd src/alu.vhd tb/tb_alu.vhd
RAMSRC = src/riscv_types.vhd src/ram_block.vhd src/imem.vhd src/ram.vhd tb/tb_ram.vhd
PCSRC = src/riscv_types.vhd src/pc.vhd tb/tb_pc.vhd
DECSRC = src/riscv_types.vhd src/decoder.vhd tb/tb_decoder.vhd
CPUSRC = src/riscv_types.vhd src/ram_block.vhd src/branch.vhd src/imem.vhd src/ram.vhd src/registers.vhd src/alu.vhd src/pc.vhd src/decoder.vhd src/imm.vhd src/cpu.vhd tb/tb_cpu.vhd
ENTITY = regs_tb
ALUENTITY = alu_tb
PCENTITY = pc_tb
STOP = 100ns
TBENCH = alu_tb regs_tb
# Build all
all: $(PARTS)
# ram testbench
ram: $(RAMSRC)
$(CHDL) -a $(FLAGS) $(RAMSRC)
$(CHDL) -e $(FLAGS) ram_tb
$(CHDL) -r $(FLAGS) ram_tb --wave=ram_tb.ghw --stop-time=$(STOP)
# registerbank testbench
regs: $(REGSSRC)
$(CHDL) -a $(FLAGS) $(REGSSRC)
$(CHDL) -e $(FLAGS) $(ENTITY)
$(CHDL) -r $(FLAGS) $(ENTITY) --wave=$(ENTITY).ghw --stop-time=$(STOP)
# alu testbench
alu : $(ALUSRC)
$(CHDL) -a $(FLAGS) $(ALUSRC)
$(CHDL) -e $(FLAGS) $(ALUENTITY)
$(CHDL) -r $(FLAGS) $(ALUENTITY) --wave=$(ALUENTITY).ghw --stop-time=$(STOP)
# pc testbench
pc : $(PCSRC)
$(CHDL) -a $(FLAGS) $(PCSRC)
$(CHDL) -e $(FLAGS) $(PCENTITY)
$(CHDL) -r $(FLAGS) $(PCENTITY) --wave=$(PCENTITY).ghw --stop-time=$(STOP)
# decoder compilecheck
decoder: $(DECSRC)
$(CHDL) -a $(FLAGS) $(DECSRC)
$(CHDL) -e $(FLAGS) decoder_tb
$(CHDL) -r $(FLAGS) decoder_tb --wave=decode.ghw --stop-time=600ns
# cpu compilecheck
cpu: $(CPUSRC)
$(CHDL) -a $(FLAGS) $(CPUSRC)
$(CHDL) -e $(FLAGS) cpu_tb
$(CHDL) -r $(FLAGS) cpu_tb --wave=cpu.ghw --stop-time=60000ns
# imm compilecheck
imm: src/imm.vhd
$(CHDL) -a $(FLAGS) src/riscv_types.vhd src/imm.vhd tb/tb_imm.vhd
$(CHDL) -e $(FLAGS) imm_tb
$(CHDL) -r $(FLAGS) imm_tb --wave=imm.ghw --stop-time=600ns
# project rules
clean:
find . -name '*.o' -exec rm -r {} \;
find . -name '*.cf' -exec rm -r {} \;
find . -name '*.ghw' -exec rm -r {} \;
find . -name '*_tb' -exec rm -r {} \;
rm alu_tb regs_tb decoder_tb ram_tb pc_tb
.PHONY: ram all regs cpu clean