|  | IBEX_CONFIG ?= small | 
|  |  | 
|  | FUSESOC_CONFIG_OPTS = $(shell ./util/ibex_config.py $(IBEX_CONFIG) fusesoc_opts) | 
|  |  | 
|  | all: help | 
|  |  | 
|  | .PHONY: help | 
|  | help: | 
|  | @echo "This is a short hand for running popular tasks." | 
|  | @echo "Please check the documentation on how to get started" | 
|  | @echo "or how to set-up the different environments." | 
|  |  | 
|  | # Use a parallel run (make -j N) for a faster build | 
|  | build-all: build-riscv-compliance build-simple-system build-arty-100 \ | 
|  | build-csr-test | 
|  |  | 
|  |  | 
|  | # RISC-V compliance | 
|  | .PHONY: build-riscv-compliance | 
|  | build-riscv-compliance: | 
|  | fusesoc --cores-root=. run --target=sim --setup --build \ | 
|  | lowrisc:ibex:ibex_riscv_compliance \ | 
|  | $(FUSESOC_CONFIG_OPTS) | 
|  |  | 
|  |  | 
|  | # Simple system | 
|  | # Use the following targets: | 
|  | # - "build-simple-system" | 
|  | # - "run-simple-system" | 
|  | .PHONY: build-simple-system | 
|  | build-simple-system: | 
|  | fusesoc --cores-root=. run --target=sim --setup --build \ | 
|  | lowrisc:ibex:ibex_simple_system \ | 
|  | $(FUSESOC_CONFIG_OPTS) | 
|  |  | 
|  | simple-system-program = examples/sw/simple_system/hello_test/hello_test.vmem | 
|  | sw-simple-hello: $(simple-system-program) | 
|  |  | 
|  | .PHONY: $(simple-system-program) | 
|  | $(simple-system-program): | 
|  | cd examples/sw/simple_system/hello_test && $(MAKE) | 
|  |  | 
|  | Vibex_simple_system = \ | 
|  | build/lowrisc_ibex_ibex_simple_system_0/sim-verilator/Vibex_simple_system | 
|  | $(Vibex_simple_system): | 
|  | @echo "$@ not found" | 
|  | @echo "Run \"make build-simple-system\" to create the dependency" | 
|  | @false | 
|  |  | 
|  | run-simple-system: sw-simple-hello | $(Vibex_simple_system) | 
|  | build/lowrisc_ibex_ibex_simple_system_0/sim-verilator/Vibex_simple_system \ | 
|  | --raminit=$(simple-system-program) | 
|  |  | 
|  |  | 
|  | # Arty A7 FPGA example | 
|  | # Use the following targets (depending on your hardware): | 
|  | # - "build-arty-35" | 
|  | # - "build-arty-100" | 
|  | # - "program-arty" | 
|  | arty-sw-program = examples/sw/led/led.vmem | 
|  | sw-led: $(arty-sw-program) | 
|  |  | 
|  | .PHONY: $(arty-sw-program) | 
|  | $(arty-sw-program): | 
|  | cd examples/sw/led && $(MAKE) | 
|  |  | 
|  | .PHONY: build-arty-35 | 
|  | build-arty-35: sw-led | 
|  | fusesoc --cores-root=. run --target=synth --setup --build \ | 
|  | lowrisc:ibex:top_artya7 --part xc7a35ticsg324-1L | 
|  |  | 
|  | .PHONY: build-arty-100 | 
|  | build-arty-100: sw-led | 
|  | fusesoc --cores-root=. run --target=synth --setup --build \ | 
|  | lowrisc:ibex:top_artya7 --part xc7a100tcsg324-1 | 
|  |  | 
|  | .PHONY: program-arty | 
|  | program-arty: | 
|  | fusesoc --cores-root=. run --target=synth --run \ | 
|  | lowrisc:ibex:top_artya7 | 
|  |  | 
|  |  | 
|  | # Lint check | 
|  | .PHONY: lint-core-tracing | 
|  | lint-core-tracing: | 
|  | fusesoc --cores-root . run --target=lint lowrisc:ibex:ibex_core_tracing \ | 
|  | $(FUSESOC_CONFIG_OPTS) | 
|  |  | 
|  |  | 
|  | # CS Registers testbench | 
|  | # Use the following targets: | 
|  | # - "build-csr-test" | 
|  | # - "run-csr-test" | 
|  | .PHONY: build-csr-test | 
|  | build-csr-test: | 
|  | fusesoc --cores-root=. run --target=sim --setup --build \ | 
|  | --tool=verilator lowrisc:ibex:tb_cs_registers | 
|  | Vtb_cs_registers = \ | 
|  | build/lowrisc_ibex_tb_cs_registers_0/sim-verilator/Vtb_cs_registers | 
|  | $(Vtb_cs_registers): | 
|  | @echo "$@ not found" | 
|  | @echo "Run \"make build-csr-test\" to create the dependency" | 
|  | @false | 
|  |  | 
|  | .PHONY: run-csr-test | 
|  | run-csr-test: | $(Vtb_cs_registers) | 
|  | fusesoc --cores-root=. run --target=sim --run \ | 
|  | --tool=verilator lowrisc:ibex:tb_cs_registers | 
|  |  | 
|  | # Echo the parameters passed to fusesoc for the chosen IBEX_CONFIG | 
|  | .PHONY: test-cfg | 
|  | test-cfg: | 
|  | @echo $(FUSESOC_CONFIG_OPTS) | 
|  |  | 
|  | .PHONY: python-lint | 
|  | python-lint: | 
|  | $(MAKE) -C util lint |