mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Better help message printing for command line tool
This commit is contained in:
		
							parent
							
								
									7751c491fb
								
							
						
					
					
						commit
						d6ee6f653f
					
				
					 1 changed files with 77 additions and 72 deletions
				
			
		
							
								
								
									
										149
									
								
								kernel/driver.cc
									
										
									
									
									
								
							
							
						
						
									
										149
									
								
								kernel/driver.cc
									
										
									
									
									
								
							|  | @ -92,6 +92,82 @@ int main(int argc, char **argv) | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | 	if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "-help") || !strcmp(argv[1], "--help"))) | ||||||
|  | 	{ | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("Usage: %s [options] [<infile> [..]]\n", argv[0]); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -Q\n"); | ||||||
|  | 		printf("        suppress printing of banner (copyright, disclaimer, version)\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -T\n"); | ||||||
|  | 		printf("        suppress printing of footer (log hash, version, timing statistics)\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -q\n"); | ||||||
|  | 		printf("        quiet operation. only write warnings and error messages to console\n"); | ||||||
|  | 		printf("        use this option twice to also quiet warning messages\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -v <level>\n"); | ||||||
|  | 		printf("        print log headers up to level <level> to the console. (implies -q)\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -t\n"); | ||||||
|  | 		printf("        annotate all log messages with a time stamp\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -d\n"); | ||||||
|  | 		printf("        print more detailed timing stats at exit\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -l logfile\n"); | ||||||
|  | 		printf("        write log messages to the specified file\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -o outfile\n"); | ||||||
|  | 		printf("        write the design to the specified file on exit\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -b backend\n"); | ||||||
|  | 		printf("        use this backend for the output file specified on the command line\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -f backend\n"); | ||||||
|  | 		printf("        use the specified front for the input files on the command line\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -H\n"); | ||||||
|  | 		printf("        print the command list\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -h command\n"); | ||||||
|  | 		printf("        print the help message for the specified command\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -s scriptfile\n"); | ||||||
|  | 		printf("        execute the commands in the script file\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -c tcl_scriptfile\n"); | ||||||
|  | 		printf("        execute the commands in the tcl script file (see 'help tcl' for details)\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -p command\n"); | ||||||
|  | 		printf("        execute the commands\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -m module_file\n"); | ||||||
|  | 		printf("        load the specified module (aka plugin)\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -A\n"); | ||||||
|  | 		printf("        will call abort() at the end of the script. useful for debugging\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    -V\n"); | ||||||
|  | 		printf("        print version information and exit\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("The option -S is an shortcut for calling the \"synth\" command, a default\n"); | ||||||
|  | 		printf("script for transforming the verilog input to a gate-level netlist. For example:\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("    yosys -o output.blif -S input.v\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("For more complex synthesis jobs it is recommended to use the read_* and write_*\n"); | ||||||
|  | 		printf("commands in a script file instead of specifying input and output files on the\n"); | ||||||
|  | 		printf("command line.\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		printf("When no commands, script files or input files are specified on the command\n"); | ||||||
|  | 		printf("line, yosys automatically enters the interactive command mode. Use the 'help'\n"); | ||||||
|  | 		printf("command to get information on the individual commands.\n"); | ||||||
|  | 		printf("\n"); | ||||||
|  | 		exit(0); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	int opt; | 	int opt; | ||||||
| 	while ((opt = getopt(argc, argv, "AQTVSm:f:Hh:b:o:p:l:qv:tds:c:")) != -1) | 	while ((opt = getopt(argc, argv, "AQTVSm:f:Hh:b:o:p:l:qv:tds:c:")) != -1) | ||||||
| 	{ | 	{ | ||||||
|  | @ -165,78 +241,7 @@ int main(int argc, char **argv) | ||||||
| 			scriptfile_tcl = true; | 			scriptfile_tcl = true; | ||||||
| 			break; | 			break; | ||||||
| 		default: | 		default: | ||||||
| 			fprintf(stderr, "\n"); | 			fprintf(stderr, "Run '%s -h' for help.\n", argv[0]); | ||||||
| 			fprintf(stderr, "Usage: %s [-V -S -Q -T -q] [-v <level>[-t] [-l <logfile>] [-o <outfile>] [-f <frontend>] [-h cmd] \\\n", argv[0]); |  | ||||||
| 			fprintf(stderr, "       %*s[{-s|-c} <scriptfile>] [-p <pass> [-p ..]] [-b <backend>] [-m <module_file>] [<infile> [..]]\n", int(strlen(argv[0])+1), ""); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -Q\n"); |  | ||||||
| 			fprintf(stderr, "        suppress printing of banner (copyright, disclaimer, version)\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -T\n"); |  | ||||||
| 			fprintf(stderr, "        suppress printing of footer (log hash, version, timing statistics)\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -q\n"); |  | ||||||
| 			fprintf(stderr, "        quiet operation. only write warnings and error messages to console\n"); |  | ||||||
| 			fprintf(stderr, "        use this option twice to also quiet warning messages\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -v <level>\n"); |  | ||||||
| 			fprintf(stderr, "        print log headers up to level <level> to the console. (implies -q)\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -t\n"); |  | ||||||
| 			fprintf(stderr, "        annotate all log messages with a time stamp\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -d\n"); |  | ||||||
| 			fprintf(stderr, "        print more detailed timing stats at exit\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -l logfile\n"); |  | ||||||
| 			fprintf(stderr, "        write log messages to the specified file\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -o outfile\n"); |  | ||||||
| 			fprintf(stderr, "        write the design to the specified file on exit\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -b backend\n"); |  | ||||||
| 			fprintf(stderr, "        use this backend for the output file specified on the command line\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -f backend\n"); |  | ||||||
| 			fprintf(stderr, "        use the specified front for the input files on the command line\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -H\n"); |  | ||||||
| 			fprintf(stderr, "        print the command list\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -h command\n"); |  | ||||||
| 			fprintf(stderr, "        print the help message for the specified command\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -s scriptfile\n"); |  | ||||||
| 			fprintf(stderr, "        execute the commands in the script file\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -c tcl_scriptfile\n"); |  | ||||||
| 			fprintf(stderr, "        execute the commands in the tcl script file (see 'help tcl' for details)\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -p command\n"); |  | ||||||
| 			fprintf(stderr, "        execute the commands\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -m module_file\n"); |  | ||||||
| 			fprintf(stderr, "        load the specified module (aka plugin)\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -A\n"); |  | ||||||
| 			fprintf(stderr, "        will call abort() at the end of the script. useful for debugging\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    -V\n"); |  | ||||||
| 			fprintf(stderr, "        print version information and exit\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "The option -S is an shortcut for calling the \"synth\" command, a default\n"); |  | ||||||
| 			fprintf(stderr, "script for transforming the verilog input to a gate-level netlist. For example:\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "    yosys -o output.blif -S input.v\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "For more complex synthesis jobs it is recommended to use the read_* and write_*\n"); |  | ||||||
| 			fprintf(stderr, "commands in a script file instead of specifying input and output files on the\n"); |  | ||||||
| 			fprintf(stderr, "command line.\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			fprintf(stderr, "When no commands, script files or input files are specified on the command\n"); |  | ||||||
| 			fprintf(stderr, "line, yosys automatically enters the interactive command mode. Use the 'help'\n"); |  | ||||||
| 			fprintf(stderr, "command to get information on the individual commands.\n"); |  | ||||||
| 			fprintf(stderr, "\n"); |  | ||||||
| 			exit(1); | 			exit(1); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue