diff --git a/tests/Makefile b/tests/Makefile index 37d4bdbf2..19e79718e 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -70,7 +70,7 @@ MK_TEST_DIRS += ./proc MK_TEST_DIRS += ./blif #SH_TEST_DIRS += ./arch #SH_TEST_DIRS += ./rpc -#SH_TEST_DIRS += ./memfile +MK_TEST_DIRS += ./memfile #SH_TEST_DIRS += ./fmt #SH_TEST_DIRS += ./cxxrtl #SH_TEST_DIRS += ./liberty diff --git a/tests/memfile/generate_mk.py b/tests/memfile/generate_mk.py new file mode 100644 index 000000000..a40f99ad0 --- /dev/null +++ b/tests/memfile/generate_mk.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +import sys +sys.path.append("..") + +import gen_tests_makefile + +def create_tests(): + setup = "mkdir -p temp && cp content1.dat temp/content2.dat" + + gen_tests_makefile.generate_cmd_test("parent_content1", [ + f"{setup};", + '(cd .. && $(YOSYS_ABS) -qp "read_verilog -defer memfile/memory.v;', + 'chparam -set MEMFILE \\"content1.dat\\" memory") >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("parent_content2_temp", [ + f"{setup};", + '(cd .. && $(YOSYS_ABS) -qp "read_verilog -defer memfile/memory.v;', + 'chparam -set MEMFILE \\"temp/content2.dat\\" memory") >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("parent_content2_full", [ + f"{setup};", + '(cd .. && $(YOSYS_ABS) -qp "read_verilog -defer memfile/memory.v;', + 'chparam -set MEMFILE \\"memfile/temp/content2.dat\\" memory") >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("same_content1", [ + f"{setup};", + '$(YOSYS) -qp "read_verilog -defer memory.v;', + 'chparam -set MEMFILE \\"content1.dat\\" memory" >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("same_content2", [ + f"{setup};", + '$(YOSYS) -qp "read_verilog -defer memory.v;', + 'chparam -set MEMFILE \\"temp/content2.dat\\" memory" >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("child_content1", [ + f"{setup};", + '(cd temp && ../$(YOSYS) -qp "read_verilog -defer ../memory.v;', + 'chparam -set MEMFILE \\"content1.dat\\" memory") >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("child_content2_temp", [ + f"{setup};", + '(cd temp && ../$(YOSYS) -qp "read_verilog -defer ../memory.v;', + 'chparam -set MEMFILE \\"temp/content2.dat\\" memory") >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("child_content2_direct", [ + f"{setup};", + '(cd temp && ../$(YOSYS) -qp "read_verilog -defer ../memory.v;', + 'chparam -set MEMFILE \\"temp/content2.dat\\" memory") >/dev/null 2>&1', + ]) + + gen_tests_makefile.generate_cmd_test("fail_empty_filename", + '! $(YOSYS) -qp "read_verilog memory.v" >/dev/null 2>&1') + + gen_tests_makefile.generate_cmd_test("fail_missing_file", [ + '! $(YOSYS) -qp "read_verilog -defer memory.v;', + 'chparam -set MEMFILE \\"content3.dat\\" memory" >/dev/null 2>&1', + ]) + +extra = ["YOSYS_ABS := $(abspath $(YOSYS))"] +gen_tests_makefile.generate_custom(create_tests, extra) + diff --git a/tests/memfile/run-test.sh b/tests/memfile/run-test.sh deleted file mode 100755 index e2583ef3b..000000000 --- a/tests/memfile/run-test.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env bash -source ../common-env.sh - -set -e - -mkdir -p temp -cp content1.dat temp/content2.dat - -cd .. - -echo "Running from the parent directory with content1.dat" -../yosys -qp "read_verilog -defer memfile/memory.v; chparam -set MEMFILE \"content1.dat\" memory" >/dev/null 2>&1 -echo "Running from the parent directory with temp/content2.dat" -../yosys -qp "read_verilog -defer memfile/memory.v; chparam -set MEMFILE \"temp/content2.dat\" memory" >/dev/null 2>&1 -echo "Running from the parent directory with memfile/temp/content2.dat" -../yosys -qp "read_verilog -defer memfile/memory.v; chparam -set MEMFILE \"memfile/temp/content2.dat\" memory" >/dev/null 2>&1 - -cd memfile - -echo "Running from the same directory with content1.dat" -../../yosys -qp "read_verilog -defer memory.v; chparam -set MEMFILE \"content1.dat\" memory" >/dev/null 2>&1 -echo "Running from the same directory with temp/content2.dat" -../../yosys -qp "read_verilog -defer memory.v; chparam -set MEMFILE \"temp/content2.dat\" memory" >/dev/null 2>&1 - -cd temp - -echo "Running from a child directory with content1.dat" -../../../yosys -qp "read_verilog -defer ../memory.v; chparam -set MEMFILE \"content1.dat\" memory" >/dev/null 2>&1 -echo "Running from a child directory with temp/content2.dat" -../../../yosys -qp "read_verilog -defer ../memory.v; chparam -set MEMFILE \"temp/content2.dat\" memory" >/dev/null 2>&1 -echo "Running from a child directory with content2.dat" -../../../yosys -qp "read_verilog -defer ../memory.v; chparam -set MEMFILE \"temp/content2.dat\" memory" >/dev/null 2>&1 - -cd .. - -echo "Checking a failure when zero length filename is provided" -if ../../yosys -qp "read_verilog memory.v" >/dev/null 2>&1; then - echo "The execution should fail but it didn't happen, which is WRONG." - exit 1 -else - echo "Execution failed, which is OK." -fi - -echo "Checking a failure when not existing filename is provided" -if ../../yosys -qp "read_verilog -defer memory.v; chparam -set MEMFILE \"content3.dat\" memory" >/dev/null 2>&1; then - echo "The execution should fail but it didn't happen, which is WRONG." - exit 1 -else - echo "Execution failed, which is OK." -fi