| # 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 |