#!/usr/bin/env python3 import sys sys.path.append("..") import gen_tests_makefile gen_tests_makefile.generate_autotest("*.v", "", """if grep -Eq 'expect-(wr-ports|rd-ports|rd-clk)' $@; then \\ $(YOSYS) -f verilog -qp "proc; opt; memory -nomap; dump -outfile $(@:.v=).dmp t:\\$$mem_v2" $@; \\ if grep -q expect-wr-ports $@; then \\ val=$$(gawk '/expect-wr-ports/ { print $$3; }' $@); \\ grep -Fq "parameter \\\\WR_PORTS $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected number of write ports."; exit 1; }; \\ fi; \\ if grep -q expect-wr-wide-continuation $@; then \\ val=$$(gawk '/expect-wr-wide-continuation/ { print $$3; }' $@); \\ grep -Fq "parameter \\\\WR_WIDE_CONTINUATION $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected write wide continuation."; exit 1; }; \\ fi; \\ if grep -q expect-rd-ports $@; then \\ val=$$(gawk '/expect-rd-ports/ { print $$3; }' $@); \\ grep -Fq "parameter \\\\RD_PORTS $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected number of read ports."; exit 1; }; \\ fi; \\ if grep -q expect-rd-clk $@; then \\ val=$$(gawk '/expect-rd-clk/ { print $$3; }' $@); \\ grep -Fq "connect \\\\RD_CLK $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read clock."; exit 1; }; \\ fi; \\ if grep -q expect-rd-en $@; then \\ val=$$(gawk '/expect-rd-en/ { print $$3; }' $@); \\ grep -Fq "connect \\\\RD_EN $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read enable."; exit 1; }; \\ fi; \\ if grep -q expect-rd-srst-sig $@; then \\ val=$$(gawk '/expect-rd-srst-sig/ { print $$3; }' $@); \\ grep -Fq "connect \\\\RD_SRST $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read sync reset."; exit 1; }; \\ fi; \\ if grep -q expect-rd-srst-val $@; then \\ val=$$(gawk '/expect-rd-srst-val/ { print $$3; }' $@); \\ grep -Fq "parameter \\\\RD_SRST_VALUE $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read sync reset value."; exit 1; }; \\ fi; \\ if grep -q expect-rd-arst-sig $@; then \\ val=$$(gawk '/expect-rd-arst-sig/ { print $$3; }' $@); \\ grep -Fq "connect \\\\RD_ARST $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read async reset."; exit 1; }; \\ fi; \\ if grep -q expect-rd-arst-val $@; then \\ val=$$(gawk '/expect-rd-arst-val/ { print $$3; }' $@); \\ grep -Fq "parameter \\\\RD_ARST_VALUE $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read async reset value."; exit 1; }; \\ fi; \\ if grep -q expect-rd-init-val $@; then \\ val=$$(gawk '/expect-rd-init-val/ { print $$3; }' $@); \\ grep -Fq "parameter \\\\RD_INIT_VALUE $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read init value."; exit 1; }; \\ fi; \\ if grep -q expect-rd-wide-continuation $@; then \\ val=$$(gawk '/expect-rd-wide-continuation/ { print $$3; }' $@); \\ grep -Fq "parameter \\\\RD_WIDE_CONTINUATION $$val" $(@:.v=).dmp || { echo " ERROR: Unexpected read wide continuation."; exit 1; }; \\ fi; \\ if grep -q expect-no-rd-clk $@; then \\ grep -Fq "connect \\\\RD_CLK 1'x" $(@:.v=).dmp || { echo " ERROR: Expected no read clock."; exit 1; }; \\ fi; \\ fi""")