Add support for reading files using uhdm-plugin Signed-off-by: Kamil Rakoczy <krakoczy@antmicro.com>
diff --git a/environment.yml b/environment.yml index a8437be..2713ff2 100644 --- a/environment.yml +++ b/environment.yml
@@ -14,6 +14,7 @@ - litex-hub::vtr-optimized - litex-hub::yosys - litex-hub::symbiflow-yosys-plugins + - litex-hub::surelog - litex-hub::zachjs-sv2v=0.0.5_0025_ge9f9696=20201120_205532 - cmake - make
diff --git a/xc/xc7/tests/install_test/CMakeLists.txt b/xc/xc7/tests/install_test/CMakeLists.txt index e1ae7b2..117a15d 100644 --- a/xc/xc7/tests/install_test/CMakeLists.txt +++ b/xc/xc7/tests/install_test/CMakeLists.txt
@@ -2,7 +2,7 @@ get_target_property_required(XC7FRAMES2BIT env XC7FRAMES2BIT) -function(add_binary_test test_name part_name device board) +function(add_binary_test test_name part_name device board surelog_cmd) add_test(NAME ${test_name} COMMAND ${CMAKE_COMMAND} -E env PATH=${INSTALLATION_DIR_BIN}:$ENV{PATH} @@ -10,11 +10,15 @@ PYTHONPATH=${PRJXRAY_DIR}:${PRJXRAY_DIR}/third_party/fasm DATABASE_DIR=${PRJXRAY_DB_DIR} FRAMES2BIT=${XC7FRAMES2BIT} + SURELOG_CMD=${surelog_cmd} make PARTNAME=${part_name} DEVICE=${device} BOARD=${board} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endfunction() -add_binary_test(binary_toolchain_test_xc7_50t xc7a35tcpg236-1 xc7a50t_test basys3) -add_binary_test(binary_toolchain_test_xc7_100t xc7a100tcsg324-1 xc7a100t_test arty-100t) -add_binary_test(binary_toolchain_test_xc7_200t xc7a200tsbg484-1 xc7a200t_test nexys_video) +add_binary_test(binary_toolchain_test_xc7_50t xc7a35tcpg236-1 xc7a50t_test basys3 "") +add_binary_test(binary_toolchain_test_xc7_100t xc7a100tcsg324-1 xc7a100t_test arty-100t "") +add_binary_test(binary_toolchain_test_xc7_200t xc7a200tsbg484-1 xc7a200t_test nexys_video "") +add_binary_test(binary_toolchain_test_xc7_50t_surelog xc7a35tcpg236-1 xc7a50t_test basys3 "-parse -DSYNTHESIS") +add_binary_test(binary_toolchain_test_xc7_100t_surelog xc7a100tcsg324-1 xc7a100t_test arty-100t "-parse -DSYNTHESIS") +add_binary_test(binary_toolchain_test_xc7_200t_surelog xc7a200tsbg484-1 xc7a200t_test nexys_video "-parse -DSYNTHESIS")
diff --git a/xc/xc7/tests/install_test/Makefile b/xc/xc7/tests/install_test/Makefile index 564d1b7..82eacd1 100644 --- a/xc/xc7/tests/install_test/Makefile +++ b/xc/xc7/tests/install_test/Makefile
@@ -10,13 +10,19 @@ BUILDDIR:=build_${BOARD} ADDITIONAL_VPR_OPTIONS="--seed 1024" +# Determine if we should use uhdm-plugin to read sources +ifneq (${SURELOG_CMD},) + SURELOG_OPT := -s ${SURELOG_CMD} + BUILDDIR = build_${BOARD}_surelog +endif + all: ${BUILDDIR}/${TOP}.bit ${BUILDDIR}: mkdir ${BUILDDIR} ${BUILDDIR}/${TOP}.eblif: | ${BUILDDIR} - cd ${BUILDDIR} && symbiflow_synth -t ${TOP} -v ${VERILOG} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} -x ${XDC} + cd ${BUILDDIR} && symbiflow_synth -t ${TOP} ${SURELOG_OPT} -v ${VERILOG} -d ${BITSTREAM_DEVICE} -p ${PARTNAME} -x ${XDC} ${BUILDDIR}/${TOP}.net: ${BUILDDIR}/${TOP}.eblif cd ${BUILDDIR} && symbiflow_pack -e ${TOP}.eblif -d ${DEVICE} -a ${ADDITIONAL_VPR_OPTIONS}
diff --git a/xc/xc7/toolchain_wrappers/symbiflow_synth b/xc/xc7/toolchain_wrappers/symbiflow_synth index 11996f5..5d2e4b8 100755 --- a/xc/xc7/toolchain_wrappers/symbiflow_synth +++ b/xc/xc7/toolchain_wrappers/symbiflow_synth
@@ -18,12 +18,14 @@ TOP=top DEVICE="*" PART="" +SURELOG_CMD=() VERILOGLIST=0 XDCLIST=0 TOPNAME=0 DEVICENAME=0 PARTNAME=0 +SURELOG=0 for arg in $@; do echo $arg @@ -35,6 +37,7 @@ TOPNAME=1 DEVICENAME=0 PARTNAME=0 + SURELOG=0 ;; -x|--xdc) VERILOGLIST=0 @@ -42,6 +45,7 @@ TOPNAME=0 DEVICENAME=0 PARTNAME=0 + SURELOG=0 ;; -v|--verilog) VERILOGLIST=1 @@ -49,6 +53,7 @@ TOPNAME=0 DEVICENAME=0 PARTNAME=0 + SURELOG=0 ;; -d|--device) VERILOGLIST=0 @@ -56,6 +61,7 @@ TOPNAME=0 DEVICENAME=1 PARTNAME=0 + SURELOG=0 ;; -p|--part) VERILOGLIST=0 @@ -63,6 +69,15 @@ TOPNAME=0 DEVICENAME=0 PARTNAME=1 + SURELOG=0 + ;; + -s|--surelog) + VERILOGLIST=0 + XDCLIST=0 + TOPNAME=0 + DEVICENAME=0 + PARTNAME=0 + SURELOG=1 ;; *) if [ $VERILOGLIST -eq 1 ]; then @@ -75,9 +90,11 @@ DEVICE=$arg elif [ $PARTNAME -eq 1 ]; then PART=$arg + elif [ $SURELOG -eq 1 ]; then + SURELOG_CMD+=($arg) else echo "Usage: synth [-t|--top <top module name> -v|--verilog <Verilog files list> [-x|--xdc <XDC files list>]" - echo " [-d|--device <device type (e.g. artix7)>] [-p|--part <part name>]" + echo " [-d|--device <device type (e.g. artix7)>] [-p|--part <part name>] [-s|--surelog] <parameters to surelog>" echo "note: device and part parameters are required if xdc is passed" exit 1 fi @@ -104,7 +121,10 @@ export OUT_FASM_EXTRA=${TOP}_fasm_extra.fasm export PYTHON3=${PYTHON3:=$(which python3)} LOG=${TOP}_synth.log - +if [ -z "$SURELOG_CMD" ]; then yosys -p "tcl ${SYNTH_TCL_PATH}" -l $LOG ${VERILOG_FILES[*]} +else +yosys -p "plugin -i uhdm" -p "read_verilog_with_uhdm ${SURELOG_CMD[*]} ${VERILOG_FILES[*]}" -p "tcl ${SYNTH_TCL_PATH}" -l $LOG +fi python3 ${SPLIT_INOUTS} -i ${OUT_JSON} -o ${SYNTH_JSON} yosys -p "read_json $SYNTH_JSON; tcl ${CONV_TCL_PATH}"