add test and make help message more verbose
authorN. Engelhardt <nak@symbioticeda.com>
Thu, 12 Dec 2019 19:51:59 +0000 (20:51 +0100)
committerN. Engelhardt <nak@symbioticeda.com>
Thu, 12 Dec 2019 19:51:59 +0000 (20:51 +0100)
passes/cmds/scratchpad.cc
tests/various/scratchpad.sh [new file with mode: 0755]

index 7d53c8a4fd7373068f15d6b381f9e3960cfae8ff..c11c41caf272579fd5bba74c1aecfc7d74489121 100644 (file)
@@ -2,6 +2,7 @@
  *  yosys -- Yosys Open SYnthesis Suite
  *
  *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at>
+ *                2019  Nina Engelhardt <nak@symbioticeda.com>
  *
  *  Permission to use, copy, modify, and/or distribute this software for any
  *  purpose with or without fee is hereby granted, provided that the above
@@ -30,14 +31,18 @@ struct ScratchpadPass : public Pass {
        {
                //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
                log("\n");
-               log("    scratchpad [ -get id | -set id val | -unset id | -copy id1 id2 ]\n");
+               log("    scratchpad [options]\n");
                log("\n");
                log("This pass allows to read and modify values from the scratchpad of the current\n");
                log("design. Options:\n");
                log("    -get <identifier>\n");
+               log("        print the value saved in the scratchpad under the given identifier\n");
                log("    -set <identifier> <value>\n");
+               log("        save the given value in the scratchpad under the given identifier\n");
                log("    -unset <identifier>\n");
+               log("        remove the entry for the given identifier from the scratchpad\n");
                log("    -copy <identifier_from> <identifier_to>\n");
+               log("        copy the value of the first identifier to the second identifier\n");
                log("The identifier may not contain whitespace. By convention, it is usually prefixed\n");
                log("by the name of the pass that uses it, e.g. 'opt.did_something'. If the value\n");
                log("contains whitespace, it must be enclosed in double quotes.\n");
diff --git a/tests/various/scratchpad.sh b/tests/various/scratchpad.sh
new file mode 100755 (executable)
index 0000000..4e92473
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+trap 'echo "ERROR in scratchpad.sh" >&2; exit 1' ERR
+
+../../yosys -qp "scratchpad -set foo \"bar baz\"; \
+scratchpad -copy foo oof; scratchpad -unset foo; \
+tee -o scratchpad1.log scratchpad -get oof; \
+tee -o scratchpad2.log scratchpad -get foo"
+
+test "$(cat scratchpad1.log)" = "bar baz"
+test "$(cat scratchpad2.log)" = "\"foo\" not set"
+
+rm scratchpad1.log
+rm scratchpad2.log