47 lines
1.1 KiB
Makefile
47 lines
1.1 KiB
Makefile
DCK=podman
|
||
IMAGE_NAME=gowin
|
||
WORKDIR=.
|
||
|
||
DCK_VOLUMES=-v $(WORKDIR):/work
|
||
DCK_RUN=$(DCK) run $(DCK_VOLUMES) $(IMAGE_NAME)
|
||
DCK_RUN_IT=$(DCK) run $(DCK_VOLUMES) -it $(IMAGE_NAME)
|
||
|
||
RTL_DIR=RTL/
|
||
RTL_SV=$(shell find $(RTL_DIR) -name "*.sv")
|
||
RTL_SVV = $(patsubst %.sv,%.v,$(RTL_SV))
|
||
RTL_SOURCE=$(RTL_SVV) $(shell find $(RTL_DIR) -name "*.v")
|
||
|
||
DEVICE_PATH=$(shell lsusb | grep "0403:6010" | sed -E "s/Bus ([0-9]{3}) Device ([0-9]{3}).*/\/dev\/bus\/usb\/\1\/\2/g")
|
||
DCK_DEVICES=--device $(DEVICE_PATH)
|
||
|
||
.PHONY: build_image bash clean
|
||
|
||
## Build the container
|
||
build_image:
|
||
$(DCK) build -t $(IMAGE_NAME) .
|
||
|
||
## Get a bash shell inside the container
|
||
bash:
|
||
$(DCK_RUN_IT) /bin/bash
|
||
|
||
gw_sh:
|
||
$(DCK_RUN_IT) gw_sh
|
||
|
||
impl/pnr/build.fs: $(RTL_SVV) build.tcl
|
||
$(DCK_RUN) "RTL_FILES=\"$(shell find $(RTL_DIR) -name *.v)\" gw_sh build.tcl"
|
||
|
||
flash: impl/pnr/build.fs
|
||
if [ -z "$(DEVICE_PATH)" ]; then \
|
||
echo "Device not found."; \
|
||
else \
|
||
$(DCK) run --privileged --device /dev/bus/usb:/dev/bus/usb $(DCK_VOLUMES) gowin "openFPGALoader impl/pnr/build.fs"; \
|
||
fi
|
||
|
||
%.v: %.sv
|
||
$(DCK_RUN) "sv2v --write=adjacent $<"
|
||
|
||
clean:
|
||
rm -rf $(RTL_SVV)
|
||
rm -rf impl
|
||
|