Improved help message for "shell" command
authorClifford Wolf <clifford@clifford.at>
Thu, 28 Feb 2013 15:53:34 +0000 (16:53 +0100)
committerClifford Wolf <clifford@clifford.at>
Thu, 28 Feb 2013 15:53:34 +0000 (16:53 +0100)
kernel/driver.cc

index 105e4647d2aa39f5b3e28a1f5852cfe1f187d30b..94c6b39bb2269cb11bf3bd1ce2eb19a0fbcb18b7 100644 (file)
@@ -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);