diff --git a/common/Makefile b/common/Makefile new file mode 100644 index 0000000..9f519ec --- /dev/null +++ b/common/Makefile @@ -0,0 +1,71 @@ +BUILDDIR := ${current_dir}/build +BOARD_BUILDDIR := ${BUILDDIR}/${TARGET} + +# Set board properties based on TARGET variable +ifeq ($(TARGET),arty_35) + DEVICE := xc7a50t_test + BITSTREAM_DEVICE := artix7 + PARTNAME := xc7a35tcsg324-1 +else ifeq ($(TARGET),arty_100) + DEVICE := xc7a100t_test + BITSTREAM_DEVICE := artix7 + PARTNAME := xc7a100tcsg324-1 +else ifeq ($(TARGET),nexys4ddr) + DEVICE := xc7a100t_test + BITSTREAM_DEVICE := artix7 + PARTNAME := xc7a100tcsg324-1 +else ifeq ($(TARGET),zybo) + DEVICE := xc7z010_test + BITSTREAM_DEVICE := zynq7 + PARTNAME := xc7z010clg400-1 +else ifeq ($(TARGET),nexys_video) + DEVICE := xc7a200t_test + BITSTREAM_DEVICE := artix7 + PARTNAME := xc7a200tsbg484-1 +else ifeq ($(TARGET),basys3) + DEVICE := xc7a50t_test + BITSTREAM_DEVICE := artix7 + PARTNAME := xc7a35tcpg236-1 +else + $(error Unsupported board type) +endif + +# Determine the type of constraint being used +ifneq (${XDC},) + XDC_CMD := -x ${XDC} +endif +ifneq (${SDC},) + SDC_CMD := -s ${SDC} +endif +ifneq (${PCF},) + PCF_CMD := -p ${PCF} +endif + +.DELETE_ON_ERROR: + +# Build design +all: ${BOARD_BUILDDIR}/${TOP}.bit + +${BOARD_BUILDDIR}: + mkdir -p ${BOARD_BUILDDIR} + +${BOARD_BUILDDIR}/${TOP}.eblif: | ${BOARD_BUILDDIR} + cd ${BOARD_BUILDDIR} && symbiflow_synth -t ${TOP} -v ${SOURCES} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} ${XDC_CMD} 2>&1 > /dev/null + +${BOARD_BUILDDIR}/${TOP}.net: ${BOARD_BUILDDIR}/${TOP}.eblif + cd ${BOARD_BUILDDIR} && symbiflow_pack -e ${TOP}.eblif -d ${DEVICE} ${SDC_CMD} 2>&1 > /dev/null + +${BOARD_BUILDDIR}/${TOP}.place: ${BOARD_BUILDDIR}/${TOP}.net + cd ${BOARD_BUILDDIR} && symbiflow_place -e ${TOP}.eblif -d ${DEVICE} ${PCF_CMD} -n ${TOP}.net -P ${PARTNAME} ${SDC_CMD} 2>&1 > /dev/null + +${BOARD_BUILDDIR}/${TOP}.route: ${BOARD_BUILDDIR}/${TOP}.place + cd ${BOARD_BUILDDIR} && symbiflow_route -e ${TOP}.eblif -d ${DEVICE} ${SDC_CMD} 2>&1 > /dev/null + +${BOARD_BUILDDIR}/${TOP}.fasm: ${BOARD_BUILDDIR}/${TOP}.route + cd ${BOARD_BUILDDIR} && symbiflow_write_fasm -e ${TOP}.eblif -d ${DEVICE} + +${BOARD_BUILDDIR}/${TOP}.bit: ${BOARD_BUILDDIR}/${TOP}.fasm + cd ${BOARD_BUILDDIR} && symbiflow_write_bitstream -d ${BITSTREAM_DEVICE} -f ${TOP}.fasm -p ${PARTNAME} -b ${TOP}.bit + +clean: + rm -rf ${BUILDDIR} \ No newline at end of file diff --git a/docs/getting-symbiflow.rst b/docs/getting-symbiflow.rst index 7118029..4ed500a 100644 --- a/docs/getting-symbiflow.rst +++ b/docs/getting-symbiflow.rst @@ -117,11 +117,11 @@ Download architecture definitions: :name: download-arch-def-xc7 mkdir -p $INSTALL_DIR/xc7/install - wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/201/20210325-000253/symbiflow-arch-defs-install-1c7a3d1e.tar.xz | tar -xJC $INSTALL_DIR/xc7/install - wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/201/20210325-000253/symbiflow-arch-defs-xc7a50t_test-1c7a3d1e.tar.xz | tar -xJC $INSTALL_DIR/xc7/install - wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/201/20210325-000253/symbiflow-arch-defs-xc7a100t_test-1c7a3d1e.tar.xz | tar -xJC $INSTALL_DIR/xc7/install - wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/201/20210325-000253/symbiflow-arch-defs-xc7a200t_test-1c7a3d1e.tar.xz | tar -xJC $INSTALL_DIR/xc7/install - wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/201/20210325-000253/symbiflow-arch-defs-xc7z010_test-1c7a3d1e.tar.xz | tar -xJC $INSTALL_DIR/xc7/install + wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/361/20210816-133520/symbiflow-arch-defs-install-5bd496ab.tar.xz | tar -xJC $INSTALL_DIR/xc7/install + wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/361/20210816-133520/symbiflow-arch-defs-xc7a50t_test-5bd496ab.tar.xz | tar -xJC $INSTALL_DIR/xc7/install + wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/361/20210816-133520/symbiflow-arch-defs-xc7a100t_test-5bd496ab.tar.xz | tar -xJC $INSTALL_DIR/xc7/install + wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/361/20210816-133520/symbiflow-arch-defs-xc7a200t_test-5bd496ab.tar.xz | tar -xJC $INSTALL_DIR/xc7/install + wget -qO- https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/361/20210816-133520/symbiflow-arch-defs-xc7z010_test-5bd496ab.tar.xz | tar -xJC $INSTALL_DIR/xc7/install .. group-tab:: EOS-S3 diff --git a/xc7/counter_test/Makefile b/xc7/counter_test/Makefile index 07bc449..df92f1f 100644 --- a/xc7/counter_test/Makefile +++ b/xc7/counter_test/Makefile @@ -1,68 +1,21 @@ -mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) -current_dir := $(patsubst %/,%,$(dir $(mkfile_path))) +current_dir := ${CURDIR} TOP := top -VERILOG := ${current_dir}/counter.v -DEVICE := xc7a50t_test -BITSTREAM_DEVICE := artix7 -BUILDDIR := build +SOURCES := ${current_dir}/counter.v ifeq ($(TARGET),arty_35) - PARTNAME := xc7a35tcsg324-1 XDC := ${current_dir}/arty.xdc - BOARD_BUILDDIR := ${BUILDDIR}/arty_35 else ifeq ($(TARGET),arty_100) - PARTNAME := xc7a100tcsg324-1 XDC := ${current_dir}/arty.xdc - DEVICE := xc7a100t_test - BOARD_BUILDDIR := ${BUILDDIR}/arty_100 else ifeq ($(TARGET),nexys4ddr) - PARTNAME := xc7a100tcsg324-1 XDC := ${current_dir}/nexys4ddr.xdc - DEVICE := xc7a100t_test - BOARD_BUILDDIR := ${BUILDDIR}/nexys4ddr else ifeq ($(TARGET),zybo) - PARTNAME := xc7z010clg400-1 XDC := ${current_dir}/zybo.xdc - DEVICE := xc7z010_test - BITSTREAM_DEVICE := zynq7 - BOARD_BUILDDIR := ${BUILDDIR}/zybo - VERILOG:=${current_dir}/counter_zynq.v + SOURCES:=${current_dir}/counter_zynq.v else ifeq ($(TARGET),nexys_video) - PARTNAME := xc7a200tsbg484-1 XDC := ${current_dir}/nexys_video.xdc - DEVICE := xc7a200t_test - BOARD_BUILDDIR := ${BUILDDIR}/nexys_video else - PARTNAME := xc7a35tcpg236-1 XDC := ${current_dir}/basys3.xdc - BOARD_BUILDDIR := ${BUILDDIR}/basys3 endif -.DELETE_ON_ERROR: +include ${current_dir}/../../common/Makefile - -all: ${BOARD_BUILDDIR}/${TOP}.bit - -${BOARD_BUILDDIR}: - mkdir -p ${BOARD_BUILDDIR} - -${BOARD_BUILDDIR}/${TOP}.eblif: | ${BOARD_BUILDDIR} - cd ${BOARD_BUILDDIR} && symbiflow_synth -t ${TOP} -v ${VERILOG} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} -x ${XDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.net: ${BOARD_BUILDDIR}/${TOP}.eblif - cd ${BOARD_BUILDDIR} && symbiflow_pack -e ${TOP}.eblif -d ${DEVICE} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.place: ${BOARD_BUILDDIR}/${TOP}.net - cd ${BOARD_BUILDDIR} && symbiflow_place -e ${TOP}.eblif -d ${DEVICE} -n ${TOP}.net -P ${PARTNAME} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.route: ${BOARD_BUILDDIR}/${TOP}.place - cd ${BOARD_BUILDDIR} && symbiflow_route -e ${TOP}.eblif -d ${DEVICE} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.fasm: ${BOARD_BUILDDIR}/${TOP}.route - cd ${BOARD_BUILDDIR} && symbiflow_write_fasm -e ${TOP}.eblif -d ${DEVICE} - -${BOARD_BUILDDIR}/${TOP}.bit: ${BOARD_BUILDDIR}/${TOP}.fasm - cd ${BOARD_BUILDDIR} && symbiflow_write_bitstream -d ${BITSTREAM_DEVICE} -f ${TOP}.fasm -p ${PARTNAME} -b ${TOP}.bit - -clean: - rm -rf ${BUILDDIR} diff --git a/xc7/environment.yml b/xc7/environment.yml index d0aba2a..86c0ac4 100644 --- a/xc7/environment.yml +++ b/xc7/environment.yml @@ -3,12 +3,12 @@ channels: - litex-hub dependencies: - litex-hub::openocd=0.10.0_1514_ga8edbd020=20201119_154304 - - litex-hub::symbiflow-yosys-plugins=1.0.0_7_323_gfca6031=20210507_125510 - litex-hub::prjxray-tools=0.1_2842_g6867429c=20210301_104249 - - litex-hub::prjxray-db=0.0_248_g2e51ad3=20210312_125539 - - litex-hub::vtr-optimized=8.0.0_3445_ga806b1609=20210312_125539 - - litex-hub::yosys=0.9_5266_g0fb4224e=20210301_104249_py37 - litex-hub::gcc-riscv64-elf-newlib=9.2.0=20201119_154229 + - litex-hub::prjxray-db=0.0_248_g2e51ad3=20210312_125539 + - litex-hub::vtr-optimized=8.0.0_4118_g06317d042=20210813_070938 + - litex-hub::yosys=0.9_5567_g539d4ee9=20210813_070938_py37 + - litex-hub::symbiflow-yosys-plugins=1.0.0_7_375_ge9e412b=20210813_070938 - make - lxml - simplejson diff --git a/xc7/linux_litex_demo/Makefile b/xc7/linux_litex_demo/Makefile index 31c50e1..81f81b5 100644 --- a/xc7/linux_litex_demo/Makefile +++ b/xc7/linux_litex_demo/Makefile @@ -1,53 +1,10 @@ -mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) -current_dir := $(patsubst %/,%,$(dir $(mkfile_path))) +current_dir := ${CURDIR} TOP := top -VERILOG := ${current_dir}/baselitex_arty.v \ +SOURCES := ${current_dir}/baselitex_arty.v \ ${current_dir}/VexRiscv_Linux.v -MEM_INIT := ${current_dir}/mem.init \ - ${current_dir}/mem_1.init \ - ${current_dir}/mem_2.init -BITSTREAM_DEVICE := artix7 + PCF := ${current_dir}/arty.pcf SDC := ${current_dir}/arty.sdc XDC := ${current_dir}/arty.xdc -BUILDDIR := build -ifeq ($(TARGET),arty_100) - PARTNAME := xc7a100tcsg324-1 - DEVICE := xc7a100t_test - BOARD_BUILDDIR := ${BUILDDIR}/arty_100 -else - PARTNAME := xc7a35tcsg324-1 - DEVICE := xc7a50t_test - BOARD_BUILDDIR := ${BUILDDIR}/arty_35 -endif - -.DELETE_ON_ERROR: - - -all: ${BOARD_BUILDDIR}/${TOP}.bit - -${BOARD_BUILDDIR}: - mkdir -p ${BOARD_BUILDDIR} - ln -s ${MEM_INIT} ${BOARD_BUILDDIR} - -${BOARD_BUILDDIR}/${TOP}.eblif: | ${BOARD_BUILDDIR} - cd ${BOARD_BUILDDIR} && symbiflow_synth -t ${TOP} -v ${VERILOG} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} -x ${XDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.net: ${BOARD_BUILDDIR}/${TOP}.eblif - cd ${BOARD_BUILDDIR} && symbiflow_pack -e ${TOP}.eblif -d ${DEVICE} -s ${SDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.place: ${BOARD_BUILDDIR}/${TOP}.net - cd ${BOARD_BUILDDIR} && symbiflow_place -e ${TOP}.eblif -d ${DEVICE} -p ${PCF} -n ${TOP}.net -P ${PARTNAME} -s ${SDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.route: ${BOARD_BUILDDIR}/${TOP}.place - cd ${BOARD_BUILDDIR} && symbiflow_route -e ${TOP}.eblif -d ${DEVICE} -s ${SDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.fasm: ${BOARD_BUILDDIR}/${TOP}.route - cd ${BOARD_BUILDDIR} && symbiflow_write_fasm -e ${TOP}.eblif -d ${DEVICE} - -${BOARD_BUILDDIR}/${TOP}.bit: ${BOARD_BUILDDIR}/${TOP}.fasm - cd ${BOARD_BUILDDIR} && symbiflow_write_bitstream -d ${BITSTREAM_DEVICE} -f ${TOP}.fasm -p ${PARTNAME} -b ${TOP}.bit - -clean: - rm -rf ${BUILDDIR} +include ${current_dir}/../../common/Makefile \ No newline at end of file diff --git a/xc7/picosoc_demo/Makefile b/xc7/picosoc_demo/Makefile index cf01292..c39fdf7 100644 --- a/xc7/picosoc_demo/Makefile +++ b/xc7/picosoc_demo/Makefile @@ -1,66 +1,24 @@ -mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) -current_dir := $(patsubst %/,%,$(dir $(mkfile_path))) +current_dir := ${CURDIR} TOP := top -VERILOG := ${current_dir}/picosoc_noflash.v \ +SOURCES := ${current_dir}/picosoc_noflash.v \ ${current_dir}/picorv32.v \ ${current_dir}/simpleuart.v \ ${current_dir}/progmem.v -PARTNAME := xc7a35tcpg236-1 -DEVICE := xc7a50t_test -BITSTREAM_DEVICE := artix7 -PCF := ${current_dir}/basys3.pcf + SDC := ${current_dir}/picosoc.sdc -BUILDDIR := build ifeq ($(TARGET),arty_35) - VERILOG += ${current_dir}/arty.v - PARTNAME := xc7a35tcsg324-1 + SOURCES += ${current_dir}/arty.v PCF := ${current_dir}/arty.pcf - BOARD_BUILDDIR := ${BUILDDIR}/arty_35 else ifeq ($(TARGET),arty_100) - VERILOG += ${current_dir}/arty.v - PARTNAME := xc7a100tcsg324-1 - PCF:=${current_dir}/arty.pcf - DEVICE := xc7a100t_test - BOARD_BUILDDIR := ${BUILDDIR}/arty_100 + SOURCES += ${current_dir}/arty.v + PCF := ${current_dir}/arty.pcf else ifeq ($(TARGET),nexys4ddr) - VERILOG += ${current_dir}/nexys4ddr.v - PARTNAME := xc7a100tcsg324-1 - PCF:=${current_dir}/nexys4ddr.pcf - DEVICE := xc7a100t_test - BOARD_BUILDDIR := ${BUILDDIR}/nexys4ddr + SOURCES += ${current_dir}/nexys4ddr.v + PCF := ${current_dir}/nexys4ddr.pcf else - VERILOG += ${current_dir}/basys3.v - PARTNAME := xc7a35tcpg236-1 + SOURCES += ${current_dir}/basys3.v PCF := ${current_dir}/basys3.pcf - BOARD_BUILDDIR := ${BUILDDIR}/basys3 endif -.DELETE_ON_ERROR: - - -all: ${BOARD_BUILDDIR}/${TOP}.bit - -${BOARD_BUILDDIR}: - mkdir -p ${BOARD_BUILDDIR} - -${BOARD_BUILDDIR}/${TOP}.eblif: | ${BOARD_BUILDDIR} - cd ${BOARD_BUILDDIR} && symbiflow_synth -t ${TOP} -v ${VERILOG} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.net: ${BOARD_BUILDDIR}/${TOP}.eblif - cd ${BOARD_BUILDDIR} && symbiflow_pack -e ${TOP}.eblif -d ${DEVICE} -s ${SDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.place: ${BOARD_BUILDDIR}/${TOP}.net - cd ${BOARD_BUILDDIR} && symbiflow_place -e ${TOP}.eblif -d ${DEVICE} -p ${PCF} -n ${TOP}.net -P ${PARTNAME} -s ${SDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.route: ${BOARD_BUILDDIR}/${TOP}.place - cd ${BOARD_BUILDDIR} && symbiflow_route -e ${TOP}.eblif -d ${DEVICE} -s ${SDC} 2>&1 > /dev/null - -${BOARD_BUILDDIR}/${TOP}.fasm: ${BOARD_BUILDDIR}/${TOP}.route - cd ${BOARD_BUILDDIR} && symbiflow_write_fasm -e ${TOP}.eblif -d ${DEVICE} - -${BOARD_BUILDDIR}/${TOP}.bit: ${BOARD_BUILDDIR}/${TOP}.fasm - cd ${BOARD_BUILDDIR} && symbiflow_write_bitstream -d ${BITSTREAM_DEVICE} -f ${TOP}.fasm -p ${PARTNAME} -b ${TOP}.bit - -clean: - rm -rf ${BUILDDIR} +include ${current_dir}/../../common/Makefile \ No newline at end of file