summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-02-28 16:53:34 +0100
committerClifford Wolf <clifford@clifford.at>2013-02-28 16:53:34 +0100
commitcd71c70b4f55c89cdcfd6da23ff5f2002cb7d49d (patch)
tree260cbab3e8a728036d46268a22b2dddc6df55f09 /kernel
parenta5c4bf2161311d73650b015b79f496651643da1e (diff)
Improved help message for "shell" command
Diffstat (limited to 'kernel')
-rw-r--r--kernel/driver.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc
index 105e4647..94c6b39b 100644
--- a/kernel/driver.cc
+++ b/kernel/driver.cc
@@ -145,6 +145,14 @@ static const char *create_prompt(RTLIL::Design *design)
static void shell(RTLIL::Design *design)
{
+ static bool recursion_detect = false;
+
+ if (recursion_detect) {
+ log("Already in interactive shell.\n");
+ return;
+ }
+
+ recursion_detect = true;
log_cmd_error_throw = true;
rl_readline_name = "yosys";
@@ -167,6 +175,7 @@ static void shell(RTLIL::Design *design)
}
}
+ recursion_detect = false;
log_cmd_error_throw = false;
}
@@ -180,6 +189,27 @@ struct ShellPass : public Pass {
log("in a script to interrupt the script at a certain point and allow for\n");
log("interactive inspection or manual synthesis of the design at this point.\n");
log("\n");
+ log("The command prompt of the interactive shell indicates the current\n");
+ log("selection (see 'help select'):\n");
+ log("\n");
+ log(" yosys>\n");
+ log(" the entire design is selected\n");
+ log("\n");
+ log(" yosys*>\n");
+ log(" only part of the design is selected\n");
+ log("\n");
+ log(" yosys [modname]>\n");
+ log(" the entire module 'modname' is selected using 'select -module modname'\n");
+ log("\n");
+ log(" yosys [modname]*>\n");
+ log(" only part of current module 'modname' is selected\n");
+ log("\n");
+ log("When in interavtive shell, some errors (e.g. invalid command arguments)\n");
+ log("do not terminate yosys but return to the command prompt.\n");
+ log("\n");
+ log("This command is the default action if nothing else has been specified\n");
+ log("on the command line.\n");
+ log("\n");
}
virtual void execute(std::vector<std::string>, RTLIL::Design *design) {
shell(design);