| # Copyright (C) 2017-2020 The Project X-Ray Authors. | |
| # | |
| # Use of this source code is governed by a ISC-style | |
| # license that can be found in the LICENSE file or at | |
| # https://opensource.org/licenses/ISC | |
| # | |
| # SPDX-License-Identifier: ISC | |
| SHELL = bash | |
| SYNTH ?= vivado | |
| YOSYS = $(XRAY_DIR)/third_party/yosys/yosys | |
| PART = xc7a200tsbg484-1 | |
| PROJECT_NAME = sata | |
| RISCV_DIR = riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14 | |
| all: $(PROJECT_NAME).fasm | |
| clean: | |
| @rm -rf build* | |
| @rm -f *.edif | |
| @rm -f *.bit | |
| @rm -f *.bin | |
| @rm -f *.log | |
| @rm -f *.dcp | |
| @rm -f *.fasm | |
| clean_litex: | |
| @rm -rf ${VIRTUAL_ENV}/src | |
| @rm -f litex-install.ok | |
| clean_riscv: | |
| @rm -rf $(RISCV_DIR) | |
| @rm -f riscv-gcc.ok | |
| help: | |
| @echo "Usage: make all [SYNTH=<vivado/yosys>]" | |
| .PHONY: clean help | |
| $(YOSYS): | |
| cd $(XRAY_DIR)/third_party/yosys && make config-gcc && make -j$(shell nproc) | |
| litex-install.ok: | |
| pip install -r requirements.txt | |
| touch litex-install.ok | |
| riscv-gcc.ok: | |
| wget -qO- https://static.dev.sifive.com/dev-tools/$(RISCV_DIR).tar.gz | tar -xz | |
| touch riscv-gcc.ok | |
| build/build.ok: litex-install.ok riscv-gcc.ok | |
| env PATH=${PATH}:${PWD}/${RISCV_DIR}/bin ${VIRTUAL_ENV}/src/litex-boards/litex_boards/targets/nexys_video.py --with-sata --integrated-rom-size 0x10000 | |
| touch build/build.ok | |
| VERILOG_FILES = ./build/nexys_video/gateware/nexys_video.v \ | |
| ${VIRTUAL_ENV}/src/pythondata-cpu-vexriscv/pythondata_cpu_vexriscv/verilog/VexRiscv.v | |
| ifeq ($(SYNTH), yosys) | |
| $(PROJECT_NAME).edif: $(YOSYS) build/build.ok | |
| $(YOSYS) -p "read_verilog $(VERILOG_FILES); techmap -map retarget.v; synth_xilinx -flatten -nosrl -nodsp; write_edif -pvector bra -attrprop $@" -l $@.log | |
| else ifeq ($(SYNTH), vivado) | |
| $(PROJECT_NAME).edif: build/build.ok tcl/syn.tcl | |
| mkdir -p build-syn.$(basename $@) | |
| cd build-syn.$(basename $@) && env PART=$(PART) PROJECT_NAME=$(PROJECT_NAME) $(XRAY_VIVADO) -mode batch -source ../tcl/syn.tcl -nojournal -log ../$@.log | |
| rm -rf *.backup.log | |
| endif | |
| $(PROJECT_NAME).bit: $(PROJECT_NAME).edif tcl/par.tcl | |
| mkdir -p build-par.$(basename $@) | |
| cd build-par.$(basename $@) && env PART=$(PART) PROJECT_NAME=$(PROJECT_NAME) $(XRAY_VIVADO) -mode batch -source ../tcl/par.tcl -nojournal -log ../$@.log | |
| rm -rf *.backup.log | |
| $(PROJECT_NAME).fasm: $(PROJECT_NAME).bit | |
| source $(XRAY_DIR)/settings/artix7_200t.sh && env XRAY_PART=$(PART) ${XRAY_BIT2FASM} --verbose $(PROJECT_NAME).bit > $(PROJECT_NAME).fasm |