mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Merge pull request #3457 from KrystalDelusion/docs_width
This commit is contained in:
		
						commit
						8e640663d6
					
				
					 35 changed files with 198 additions and 184 deletions
				
			
		| 
						 | 
					@ -512,8 +512,8 @@ struct BlifBackend : public Backend {
 | 
				
			||||||
		log("        suppresses the generation of this nets without fanout.\n");
 | 
							log("        suppresses the generation of this nets without fanout.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("The following options can be useful when the generated file is not going to be\n");
 | 
							log("The following options can be useful when the generated file is not going to be\n");
 | 
				
			||||||
		log("read by a BLIF parser but a custom tool. It is recommended to not name the output\n");
 | 
							log("read by a BLIF parser but a custom tool. It is recommended to not name the\n");
 | 
				
			||||||
		log("file *.blif when any of this options is used.\n");
 | 
							log("output file *.blif when any of this options is used.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -icells\n");
 | 
							log("    -icells\n");
 | 
				
			||||||
		log("        do not translate Yosys's internal gates to generic BLIF logic\n");
 | 
							log("        do not translate Yosys's internal gates to generic BLIF logic\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -107,8 +107,8 @@ struct EdifBackend : public Backend {
 | 
				
			||||||
		log("        constant drivers first)\n");
 | 
							log("        constant drivers first)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -gndvccy\n");
 | 
							log("    -gndvccy\n");
 | 
				
			||||||
		log("        create \"GND\" and \"VCC\" cells with \"Y\" outputs. (the default is \"G\"\n");
 | 
							log("        create \"GND\" and \"VCC\" cells with \"Y\" outputs. (the default is\n");
 | 
				
			||||||
		log("        for \"GND\" and \"P\" for \"VCC\".)\n");
 | 
							log("        \"G\" for \"GND\" and \"P\" for \"VCC\".)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -attrprop\n");
 | 
							log("    -attrprop\n");
 | 
				
			||||||
		log("        create EDIF properties for cell attributes\n");
 | 
							log("        create EDIF properties for cell attributes\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -397,8 +397,8 @@ struct JsonBackend : public Backend {
 | 
				
			||||||
		log("      \"signed\": <1 if the port is signed>\n");
 | 
							log("      \"signed\": <1 if the port is signed>\n");
 | 
				
			||||||
		log("    }\n");
 | 
							log("    }\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("The \"offset\" and \"upto\" fields are skipped if their value would be 0.");
 | 
							log("The \"offset\" and \"upto\" fields are skipped if their value would be 0.\n");
 | 
				
			||||||
		log("They don't affect connection semantics, and are only used to preserve original");
 | 
							log("They don't affect connection semantics, and are only used to preserve original\n");
 | 
				
			||||||
		log("HDL bit indexing.");
 | 
							log("HDL bit indexing.");
 | 
				
			||||||
		log("And <cell_details> is:\n");
 | 
							log("And <cell_details> is:\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
| 
						 | 
					@ -459,8 +459,8 @@ struct JsonBackend : public Backend {
 | 
				
			||||||
		log("connected to a constant driver are denoted as string \"0\", \"1\", \"x\", or\n");
 | 
							log("connected to a constant driver are denoted as string \"0\", \"1\", \"x\", or\n");
 | 
				
			||||||
		log("\"z\" instead of a number.\n");
 | 
							log("\"z\" instead of a number.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("Bit vectors (including integers) are written as string holding the binary");
 | 
							log("Bit vectors (including integers) are written as string holding the binary\n");
 | 
				
			||||||
		log("representation of the value. Strings are written as strings, with an appended");
 | 
							log("representation of the value. Strings are written as strings, with an appended\n");
 | 
				
			||||||
		log("blank in cases of strings of the form /[01xz]* */.\n");
 | 
							log("blank in cases of strings of the form /[01xz]* */.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("For example the following Verilog code:\n");
 | 
							log("For example the following Verilog code:\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2160,7 +2160,8 @@ struct VerilogBackend : public Backend {
 | 
				
			||||||
		log("        as binary numbers.\n");
 | 
							log("        as binary numbers.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -simple-lhs\n");
 | 
							log("    -simple-lhs\n");
 | 
				
			||||||
		log("        Connection assignments with simple left hand side without concatenations.\n");
 | 
							log("        Connection assignments with simple left hand side without\n");
 | 
				
			||||||
 | 
							log("        concatenations.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -extmem\n");
 | 
							log("    -extmem\n");
 | 
				
			||||||
		log("        instead of initializing memories using assignments to individual\n");
 | 
							log("        instead of initializing memories using assignments to individual\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -383,12 +383,12 @@ struct RpcFrontend : public Pass {
 | 
				
			||||||
		log("        request for the module <module-name> to be derived for a specific set of\n");
 | 
							log("        request for the module <module-name> to be derived for a specific set of\n");
 | 
				
			||||||
		log("        parameters. <param-name> starts with \\ for named parameters, and with $\n");
 | 
							log("        parameters. <param-name> starts with \\ for named parameters, and with $\n");
 | 
				
			||||||
		log("        for unnamed parameters, which are numbered starting at 1.<param-value>\n");
 | 
							log("        for unnamed parameters, which are numbered starting at 1.<param-value>\n");
 | 
				
			||||||
		log("        for integer parameters is always specified as a binary string of unlimited\n");
 | 
							log("        for integer parameters is always specified as a binary string of\n");
 | 
				
			||||||
		log("        precision. the <source> returned by the frontend is hygienically parsed\n");
 | 
							log("        unlimited precision. the <source> returned by the frontend is\n");
 | 
				
			||||||
		log("        by a built-in Yosys <frontend>, allowing the RPC frontend to return any\n");
 | 
							log("        hygienically parsedby a built-in Yosys <frontend>, allowing the RPC\n");
 | 
				
			||||||
		log("        convenient representation of the module. the derived module is cached,\n");
 | 
							log("        frontend to return anyconvenient representation of the module. the\n");
 | 
				
			||||||
		log("        so the response should be the same whenever the same set of parameters\n");
 | 
							log("        derived module is cached,so the response should be the same whenever the\n");
 | 
				
			||||||
		log("        is provided.\n");
 | 
							log("        same set of parameters is provided.\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
						void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,10 +34,10 @@ struct BugpointPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This command minimizes the current design that is known to crash Yosys with the\n");
 | 
							log("This command minimizes the current design that is known to crash Yosys with the\n");
 | 
				
			||||||
		log("given script into a smaller testcase. It does this by removing an arbitrary part\n");
 | 
							log("given script into a smaller testcase. It does this by removing an arbitrary part\n");
 | 
				
			||||||
		log("of the design and recursively invokes a new Yosys process with this modified design\n");
 | 
							log("of the design and recursively invokes a new Yosys process with this modified\n");
 | 
				
			||||||
		log("and the same script, repeating these steps while it can find a smaller design that\n");
 | 
							log("design and the same script, repeating these steps while it can find a smaller\n");
 | 
				
			||||||
		log("still causes a crash. Once this command finishes, it replaces the current design\n");
 | 
							log("design that still causes a crash. Once this command finishes, it replaces the\n");
 | 
				
			||||||
		log("with the smallest testcase it was able to produce.\n");
 | 
							log("current design with the smallest testcase it was able to produce.\n");
 | 
				
			||||||
		log("In order to save the reduced testcase you must write this out to a file with\n");
 | 
							log("In order to save the reduced testcase you must write this out to a file with\n");
 | 
				
			||||||
		log("another command after `bugpoint` like `write_rtlil` or `write_verilog`.\n");
 | 
							log("another command after `bugpoint` like `write_rtlil` or `write_verilog`.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,8 +32,8 @@ struct ChformalPass : public Pass {
 | 
				
			||||||
		log("    chformal [types] [mode] [options] [selection]\n");
 | 
							log("    chformal [types] [mode] [options] [selection]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("Make changes to the formal constraints of the design. The [types] options\n");
 | 
							log("Make changes to the formal constraints of the design. The [types] options\n");
 | 
				
			||||||
		log("the type of constraint to operate on. If none of the following options are given,\n");
 | 
							log("the type of constraint to operate on. If none of the following options are\n");
 | 
				
			||||||
		log("the command will operate on all constraint types:\n");
 | 
							log("given, the command will operate on all constraint types:\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -assert       $assert cells, representing assert(...) constraints\n");
 | 
							log("    -assert       $assert cells, representing assert(...) constraints\n");
 | 
				
			||||||
		log("    -assume       $assume cells, representing assume(...) constraints\n");
 | 
							log("    -assume       $assume cells, representing assume(...) constraints\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,8 +46,8 @@ struct ExecPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("Execute a command in the operating system shell.  All supplied arguments are\n");
 | 
							log("Execute a command in the operating system shell.  All supplied arguments are\n");
 | 
				
			||||||
		log("concatenated and passed as a command to popen(3).  Whitespace is not guaranteed\n");
 | 
							log("concatenated and passed as a command to popen(3).  Whitespace is not guaranteed\n");
 | 
				
			||||||
		log("to be preserved, even if quoted.  stdin and stderr are not connected, while stdout is\n");
 | 
							log("to be preserved, even if quoted.  stdin and stderr are not connected, while\n");
 | 
				
			||||||
		log("logged unless the \"-q\" option is specified.\n");
 | 
							log("stdout is logged unless the \"-q\" option is specified.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -q\n");
 | 
							log("    -q\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -431,41 +431,42 @@ struct GliftPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    glift <command> [options] [selection]\n");
 | 
							log("    glift <command> [options] [selection]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("Augments the current or specified module with gate-level information flow tracking\n");
 | 
							log("Augments the current or specified module with gate-level information flow \n");
 | 
				
			||||||
		log("(GLIFT) logic using the \"constructive mapping\" approach. Also can set up QBF-SAT\n");
 | 
							log("tracking (GLIFT) logic using the \"constructive mapping\" approach. Also can set\n");
 | 
				
			||||||
		log("optimization problems in order to optimize GLIFT models or trade off precision and\n");
 | 
							log("up QBF-SAT optimization problems in order to optimize GLIFT models or trade off\n");
 | 
				
			||||||
		log("complexity.\n");
 | 
							log("precision and complexity.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("Commands:\n");
 | 
							log("Commands:\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  -create-precise-model\n");
 | 
							log("  -create-precise-model\n");
 | 
				
			||||||
		log("    Replaces the current or specified module with one that has corresponding \"taint\"\n");
 | 
							log("    Replaces the current or specified module with one that has corresponding\n");
 | 
				
			||||||
		log("    inputs, outputs, and internal nets along with precise taint tracking logic.\n");
 | 
							log("    \"taint\" inputs, outputs, and internal nets along with precise taint\n");
 | 
				
			||||||
		log("    For example, precise taint tracking logic for an AND gate is:\n");
 | 
							log("    tracking logic. For example, precise taint tracking logic for an AND gate\n");
 | 
				
			||||||
 | 
							log("    is:\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("      y_t = a & b_t | b & a_t | a_t & b_t\n");
 | 
							log("      y_t = a & b_t | b & a_t | a_t & b_t\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  -create-imprecise-model\n");
 | 
							log("  -create-imprecise-model\n");
 | 
				
			||||||
		log("    Replaces the current or specified module with one that has corresponding \"taint\"\n");
 | 
							log("    Replaces the current or specified module with one that has corresponding\n");
 | 
				
			||||||
		log("    inputs, outputs, and internal nets along with imprecise \"All OR\" taint tracking\n");
 | 
							log("    \"taint\" inputs, outputs, and internal nets along with imprecise \"All OR\"\n");
 | 
				
			||||||
		log("    logic:\n");
 | 
							log("    taint tracking logic:\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("      y_t = a_t | b_t\n");
 | 
							log("      y_t = a_t | b_t\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  -create-instrumented-model\n");
 | 
							log("  -create-instrumented-model\n");
 | 
				
			||||||
		log("    Replaces the current or specified module with one that has corresponding \"taint\"\n");
 | 
							log("    Replaces the current or specified module with one that has corresponding\n");
 | 
				
			||||||
		log("    inputs, outputs, and internal nets along with 4 varying-precision versions of taint\n");
 | 
							log("    \"taint\" inputs, outputs, and internal nets along with 4 varying-precision\n");
 | 
				
			||||||
		log("    tracking logic. Which version of taint tracking logic is used for a given gate is\n");
 | 
							log("    versions of taint tracking logic. Which version of taint tracking logic is\n");
 | 
				
			||||||
		log("    determined by a MUX selected by an $anyconst cell.  By default, unless the\n");
 | 
							log("    used for a given gate is determined by a MUX selected by an $anyconst cell.\n");
 | 
				
			||||||
		log("    `-no-cost-model` option is provided, an additional wire named `__glift_weight` with\n");
 | 
							log("     By default, unless the `-no-cost-model` option is provided, an additional\n");
 | 
				
			||||||
		log("    the `keep` and `minimize` attributes is added to the module along with pmuxes and\n");
 | 
							log("    wire named `__glift_weight` with the `keep` and `minimize` attributes is\n");
 | 
				
			||||||
		log("    adders to calculate a rough estimate of the number of logic gates in the GLIFT model\n");
 | 
							log("    added to the module along with pmuxes and adders to calculate a rough\n");
 | 
				
			||||||
		log("    given an assignment for the $anyconst cells. The four versions of taint tracking logic\n");
 | 
							log("    estimate of the number of logic gates in the GLIFT model given an assignment\n");
 | 
				
			||||||
		log("    for an AND gate are:");
 | 
							log("    for the $anyconst cells. The four versions of taint tracking logic for an\n");
 | 
				
			||||||
		log("\n");
 | 
							log("    AND gate are:\n");
 | 
				
			||||||
		log("      y_t = a & b_t | b & a_t | a_t & b_t       (like `-create-precise-model`)\n");
 | 
							log("      y_t = a & b_t | b & a_t | a_t & b_t       (like `-create-precise-model`)\n");
 | 
				
			||||||
		log("      y_t = a_t | a & b_t\n");
 | 
							log("      y_t = a_t | a & b_t\n");
 | 
				
			||||||
		log("      y_t = b_t | b & a_t\n");
 | 
							log("      y_t = b_t | b & a_t\n");
 | 
				
			||||||
| 
						 | 
					@ -479,27 +480,30 @@ struct GliftPass : public Pass {
 | 
				
			||||||
		log("    (default: label constants as un-tainted)\n");
 | 
							log("    (default: label constants as un-tainted)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  -keep-outputs\n");
 | 
							log("  -keep-outputs\n");
 | 
				
			||||||
		log("    Do not remove module outputs. Taint tracking outputs will appear in the module ports\n");
 | 
							log("    Do not remove module outputs. Taint tracking outputs will appear in the\n");
 | 
				
			||||||
		log("    alongside the orignal outputs.\n");
 | 
							log("    module ports alongside the orignal outputs.\n");
 | 
				
			||||||
		log("    (default: original module outputs are removed)\n");
 | 
							log("    (default: original module outputs are removed)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  -simple-cost-model\n");
 | 
							log("  -simple-cost-model\n");
 | 
				
			||||||
		log("    Do not model logic area. Instead model the number of non-zero assignments to $anyconsts.\n");
 | 
							log("    Do not model logic area. Instead model the number of non-zero assignments to\n");
 | 
				
			||||||
		log("    Taint tracking logic versions vary in their size, but all reduced-precision versions are\n");
 | 
							log("    $anyconsts. Taint tracking logic versions vary in their size, but all\n");
 | 
				
			||||||
		log("    significantly smaller than the fully-precise version. A non-zero $anyconst assignment means\n");
 | 
							log("    reduced-precision versions are significantly smaller than the fully-precise\n");
 | 
				
			||||||
		log("    that reduced-precision taint tracking logic was chosen for some gate.\n");
 | 
							log("    version. A non-zero $anyconst assignment means that reduced-precision taint\n");
 | 
				
			||||||
		log("    Only applicable in combination with `-create-instrumented-model`.\n");
 | 
							log("    tracking logic was chosen for some gate. Only applicable in combination with\n");
 | 
				
			||||||
		log("    (default: use a complex model and give that wire the \"keep\" and \"minimize\" attributes)\n");
 | 
							log("    `-create-instrumented-model`. (default: use a complex model and give that\n");
 | 
				
			||||||
 | 
							log("     wire the \"keep\" and \"minimize\" attributes)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  -no-cost-model\n");
 | 
							log("  -no-cost-model\n");
 | 
				
			||||||
		log("    Do not model taint tracking logic area and do not create a `__glift_weight` wire.\n");
 | 
							log("    Do not model taint tracking logic area and do not create a `__glift_weight`\n");
 | 
				
			||||||
		log("    Only applicable in combination with `-create-instrumented-model`.\n");
 | 
							log("    wire. Only applicable in combination with `-create-instrumented-model`.\n");
 | 
				
			||||||
		log("    (default: model area and give that wire the \"keep\" and \"minimize\" attributes)\n");
 | 
							log("    (default: model area and give that wire the \"keep\" and \"minimize\"\n");
 | 
				
			||||||
 | 
							log("    attributes)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  -instrument-more\n");
 | 
							log("  -instrument-more\n");
 | 
				
			||||||
		log("    Allow choice from more versions of (even simpler) taint tracking logic. A total\n");
 | 
							log("    Allow choice from more versions of (even simpler) taint tracking logic. A\n");
 | 
				
			||||||
		log("    of 8 versions of taint tracking logic will be added per gate, including the 4\n");
 | 
							log("    total of 8 versions of taint tracking logic will be added per gate,\n");
 | 
				
			||||||
		log("    versions from `-create-instrumented-model` and these additional versions:\n");
 | 
							log("    including the 4 versions from `-create-instrumented-model` and these\n");
 | 
				
			||||||
 | 
							log("    additional versions:\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("      y_t = a_t\n");
 | 
							log("      y_t = a_t\n");
 | 
				
			||||||
		log("      y_t = b_t\n");
 | 
							log("      y_t = b_t\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,8 +38,9 @@ struct LogPass : public Pass {
 | 
				
			||||||
		log("logfiles.\n");
 | 
							log("logfiles.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -stdout\n");
 | 
							log("    -stdout\n");
 | 
				
			||||||
		log("        Print the output to stdout too. This is useful when all Yosys is executed\n");
 | 
							log("        Print the output to stdout too. This is useful when all Yosys is\n");
 | 
				
			||||||
		log("        with a script and the -q (quiet operation) argument to notify the user.\n");
 | 
							log("        executed with a script and the -q (quiet operation) argument to notify\n");
 | 
				
			||||||
 | 
							log("        the user.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -stderr\n");
 | 
							log("    -stderr\n");
 | 
				
			||||||
		log("        Print the output to stderr too.\n");
 | 
							log("        Print the output to stderr too.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,8 @@ struct ScratchpadPass : public Pass {
 | 
				
			||||||
		log("        copy the value of the first identifier to the second identifier.\n");
 | 
							log("        copy the value of the first identifier to the second identifier.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -assert <identifier> <value>\n");
 | 
							log("    -assert <identifier> <value>\n");
 | 
				
			||||||
		log("        assert that the entry for the given identifier is set to the given value.\n");
 | 
							log("        assert that the entry for the given identifier is set to the given\n");
 | 
				
			||||||
 | 
							log("        value.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -assert-set <identifier>\n");
 | 
							log("    -assert-set <identifier>\n");
 | 
				
			||||||
		log("        assert that the entry for the given identifier exists.\n");
 | 
							log("        assert that the entry for the given identifier exists.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1125,7 +1125,7 @@ struct SelectPass : public Pass {
 | 
				
			||||||
		log("    <obj_pattern>\n");
 | 
							log("    <obj_pattern>\n");
 | 
				
			||||||
		log("        select the specified object(s) from the current module\n");
 | 
							log("        select the specified object(s) from the current module\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("By default, patterns will not match black/white-box modules or their");
 | 
							log("By default, patterns will not match black/white-box modules or their\n");
 | 
				
			||||||
		log("contents. To include such objects, prefix the pattern with '='.\n");
 | 
							log("contents. To include such objects, prefix the pattern with '='.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("A <mod_pattern> can be a module name, wildcard expression (*, ?, [..])\n");
 | 
							log("A <mod_pattern> can be a module name, wildcard expression (*, ?, [..])\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -348,8 +348,8 @@ struct SubmodPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -hidden\n");
 | 
							log("    -hidden\n");
 | 
				
			||||||
		log("        instead of creating submodule ports with public names, create ports with\n");
 | 
							log("        instead of creating submodule ports with public names, create ports with\n");
 | 
				
			||||||
		log("        private names so that a subsequent 'flatten; clean' call will restore the\n");
 | 
							log("        private names so that a subsequent 'flatten; clean' call will restore\n");
 | 
				
			||||||
		log("        original module with original public names.\n");
 | 
							log("        the original module with original public names.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
						void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1245,7 +1245,8 @@ struct MemoryBramPass : public Pass {
 | 
				
			||||||
		log("greater than 1 share the same configuration bit.\n");
 | 
							log("greater than 1 share the same configuration bit.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("Using the same bram name in different bram blocks will create different variants\n");
 | 
							log("Using the same bram name in different bram blocks will create different variants\n");
 | 
				
			||||||
		log("of the bram. Verilog configuration parameters for the bram are created as needed.\n");
 | 
							log("of the bram. Verilog configuration parameters for the bram are created as\n");
 | 
				
			||||||
 | 
							log("needed.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("It is also possible to create variants by repeating statements in the bram block\n");
 | 
							log("It is also possible to create variants by repeating statements in the bram block\n");
 | 
				
			||||||
		log("and appending '@<label>' to the individual statements.\n");
 | 
							log("and appending '@<label>' to the individual statements.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -631,8 +631,8 @@ struct MemoryDffPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    memory_dff [-no-rw-check] [selection]\n");
 | 
							log("    memory_dff [-no-rw-check] [selection]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This pass detects DFFs at memory read ports and merges them into the memory port.\n");
 | 
							log("This pass detects DFFs at memory read ports and merges them into the memory\n");
 | 
				
			||||||
		log("I.e. it consumes an asynchronous memory port and the flip-flops at its\n");
 | 
							log("port. I.e. it consumes an asynchronous memory port and the flip-flops at its\n");
 | 
				
			||||||
		log("interface and yields a synchronous memory port.\n");
 | 
							log("interface and yields a synchronous memory port.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -no-rw-check\n");
 | 
							log("    -no-rw-check\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -523,8 +523,8 @@ struct MemorySharePass : public Pass {
 | 
				
			||||||
		log("  - When multiple write ports access the same address then this is converted\n");
 | 
							log("  - When multiple write ports access the same address then this is converted\n");
 | 
				
			||||||
		log("    to a single write port with a more complex data and/or enable logic path.\n");
 | 
							log("    to a single write port with a more complex data and/or enable logic path.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  - When multiple read or write ports access adjacent aligned addresses, they are\n");
 | 
							log("  - When multiple read or write ports access adjacent aligned addresses, they\n");
 | 
				
			||||||
		log("    merged to a single wide read or write port.  This transformation can be\n");
 | 
							log("    are merged to a single wide read or write port.  This transformation can be\n");
 | 
				
			||||||
		log("    disabled with the \"-nowiden\" option.\n");
 | 
							log("    disabled with the \"-nowiden\" option.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("  - When multiple write ports are never accessed at the same time (a SAT\n");
 | 
							log("  - When multiple write ports are never accessed at the same time (a SAT\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -853,14 +853,17 @@ struct OptDffPass : public Pass {
 | 
				
			||||||
		log("    opt_dff [-nodffe] [-nosdff] [-keepdc] [-sat] [selection]\n");
 | 
							log("    opt_dff [-nodffe] [-nosdff] [-keepdc] [-sat] [selection]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This pass converts flip-flops to a more suitable type by merging clock enables\n");
 | 
							log("This pass converts flip-flops to a more suitable type by merging clock enables\n");
 | 
				
			||||||
		log("and synchronous reset multiplexers, removing unused control inputs, or potentially\n");
 | 
							log("and synchronous reset multiplexers, removing unused control inputs, or\n");
 | 
				
			||||||
		log("removes the flip-flop altogether, converting it to a constant driver.\n");
 | 
							log("potentially removes the flip-flop altogether, converting it to a constant\n");
 | 
				
			||||||
 | 
							log("driver.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -nodffe\n");
 | 
							log("    -nodffe\n");
 | 
				
			||||||
		log("        disables dff -> dffe conversion, and other transforms recognizing clock enable\n");
 | 
							log("        disables dff -> dffe conversion, and other transforms recognizing clock\n");
 | 
				
			||||||
 | 
							log("        enable\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -nosdff\n");
 | 
							log("    -nosdff\n");
 | 
				
			||||||
		log("        disables dff -> sdff conversion, and other transforms recognizing sync resets\n");
 | 
							log("        disables dff -> sdff conversion, and other transforms recognizing sync\n");
 | 
				
			||||||
 | 
							log("        resets\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -simple-dffe\n");
 | 
							log("    -simple-dffe\n");
 | 
				
			||||||
		log("        only enables clock enable recognition transform for obvious cases\n");
 | 
							log("        only enables clock enable recognition transform for obvious cases\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -196,9 +196,9 @@ struct XilinxSrlPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This pass converts chains of built-in flops (bit-level: $_DFF_[NP]_, $_DFFE_*\n");
 | 
							log("This pass converts chains of built-in flops (bit-level: $_DFF_[NP]_, $_DFFE_*\n");
 | 
				
			||||||
		log("and word-level: $dff, $dffe) as well as Xilinx flops (FDRE, FDRE_1) into a\n");
 | 
							log("and word-level: $dff, $dffe) as well as Xilinx flops (FDRE, FDRE_1) into a\n");
 | 
				
			||||||
		log("$__XILINX_SHREG cell. Chains must be of the same cell type, clock, clock polarity,\n");
 | 
							log("$__XILINX_SHREG cell. Chains must be of the same cell type, clock, clock\n");
 | 
				
			||||||
		log("enable, and enable polarity (where relevant).\n");
 | 
							log("polarity, enable, and enable polarity (where relevant).\n");
 | 
				
			||||||
		log("Flops with resets cannot be mapped to Xilinx devices and will not be inferred.");
 | 
							log("Flops with resets cannot be mapped to Xilinx devices and will not be inferred.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -minlen N\n");
 | 
							log("    -minlen N\n");
 | 
				
			||||||
		log("        min length of shift register (default = 3)\n");
 | 
							log("        min length of shift register (default = 3)\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -508,11 +508,11 @@ struct QbfSatPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    qbfsat [options] [selection]\n");
 | 
							log("    qbfsat [options] [selection]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This command solves an \"exists-forall\" 2QBF-SAT problem defined over the currently\n");
 | 
							log("This command solves an \"exists-forall\" 2QBF-SAT problem defined over the\n");
 | 
				
			||||||
		log("selected module. Existentially-quantified variables are declared by assigning a wire\n");
 | 
							log("currently selected module. Existentially-quantified variables are declared by\n");
 | 
				
			||||||
		log("\"$anyconst\". Universally-quantified variables may be explicitly declared by assigning\n");
 | 
							log("assigning a wire \"$anyconst\". Universally-quantified variables may be\n");
 | 
				
			||||||
		log("a wire \"$allconst\", but module inputs will be treated as universally-quantified\n");
 | 
							log("explicitly declared by assigning a wire \"$allconst\", but module inputs will be\n");
 | 
				
			||||||
		log("variables by default.\n");
 | 
							log("treated as universally-quantified variables by default.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -nocleanup\n");
 | 
							log("    -nocleanup\n");
 | 
				
			||||||
		log("        Do not delete temporary files and directories. Useful for debugging.\n");
 | 
							log("        Do not delete temporary files and directories. Useful for debugging.\n");
 | 
				
			||||||
| 
						 | 
					@ -521,23 +521,25 @@ struct QbfSatPass : public Pass {
 | 
				
			||||||
		log("        Pass the --dump-smt2 option to yosys-smtbmc.\n");
 | 
							log("        Pass the --dump-smt2 option to yosys-smtbmc.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -assume-outputs\n");
 | 
							log("    -assume-outputs\n");
 | 
				
			||||||
		log("        Add an \"$assume\" cell for the conjunction of all one-bit module output wires.\n");
 | 
							log("        Add an \"$assume\" cell for the conjunction of all one-bit module output\n");
 | 
				
			||||||
 | 
							log("        wires.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -assume-negative-polarity\n");
 | 
							log("    -assume-negative-polarity\n");
 | 
				
			||||||
		log("        When adding $assume cells for one-bit module output wires, assume they are\n");
 | 
							log("        When adding $assume cells for one-bit module output wires, assume they\n");
 | 
				
			||||||
		log("        negative polarity signals and should always be low, for example like the\n");
 | 
							log("        are negative polarity signals and should always be low, for example like\n");
 | 
				
			||||||
		log("        miters created with the `miter` command.\n");
 | 
							log("        the miters created with the `miter` command.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -nooptimize\n");
 | 
							log("    -nooptimize\n");
 | 
				
			||||||
		log("        Ignore \"\\minimize\" and \"\\maximize\" attributes, do not emit \"(maximize)\" or\n");
 | 
							log("        Ignore \"\\minimize\" and \"\\maximize\" attributes, do not emit\n");
 | 
				
			||||||
		log("        \"(minimize)\" in the SMT-LIBv2, and generally make no attempt to optimize anything.\n");
 | 
							log("        \"(maximize)\" or \"(minimize)\" in the SMT-LIBv2, and generally make no\n");
 | 
				
			||||||
 | 
							log("        attempt to optimize anything.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -nobisection\n");
 | 
							log("    -nobisection\n");
 | 
				
			||||||
		log("        If a wire is marked with the \"\\minimize\" or \"\\maximize\" attribute, do not\n");
 | 
							log("        If a wire is marked with the \"\\minimize\" or \"\\maximize\" attribute,\n");
 | 
				
			||||||
		log("        attempt to optimize that value with the default iterated solving and threshold\n");
 | 
							log("        do not attempt to optimize that value with the default iterated solving\n");
 | 
				
			||||||
		log("        bisection approach. Instead, have yosys-smtbmc emit a \"(minimize)\" or \"(maximize)\"\n");
 | 
							log("        and threshold bisection approach. Instead, have yosys-smtbmc emit a\n");
 | 
				
			||||||
		log("        command in the SMT-LIBv2 output and hope that the solver supports optimizing\n");
 | 
							log("        \"(minimize)\" or \"(maximize)\" command in the SMT-LIBv2 output and\n");
 | 
				
			||||||
		log("        quantified bitvector problems.\n");
 | 
							log("        hope that the solver supports optimizing quantified bitvector problems.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -solver <solver>\n");
 | 
							log("    -solver <solver>\n");
 | 
				
			||||||
		log("        Use a particular solver. Choose one of: \"z3\", \"yices\", and \"cvc4\".\n");
 | 
							log("        Use a particular solver. Choose one of: \"z3\", \"yices\", and \"cvc4\".\n");
 | 
				
			||||||
| 
						 | 
					@ -567,13 +569,14 @@ struct QbfSatPass : public Pass {
 | 
				
			||||||
		log("        corresponding constant value from the model produced by the solver.\n");
 | 
							log("        corresponding constant value from the model produced by the solver.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -specialize-from-file <solution file>\n");
 | 
							log("    -specialize-from-file <solution file>\n");
 | 
				
			||||||
		log("        Do not run the solver, but instead only attempt to replace each \"$anyconst\"\n");
 | 
							log("        Do not run the solver, but instead only attempt to replace each\n");
 | 
				
			||||||
		log("        cell in the current module with a constant value provided by the specified file.\n");
 | 
							log("        \"$anyconst\" cell in the current module with a constant value provided\n");
 | 
				
			||||||
 | 
							log("        by the specified file.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -write-solution <solution file>\n");
 | 
							log("    -write-solution <solution file>\n");
 | 
				
			||||||
		log("        If the problem is satisfiable, write the corresponding constant value for each\n");
 | 
							log("        If the problem is satisfiable, write the corresponding constant value\n");
 | 
				
			||||||
		log("        \"$anyconst\" cell from the model produced by the solver to the specified file.");
 | 
							log("        for each \"$anyconst\" cell from the model produced by the solver to the\n");
 | 
				
			||||||
		log("\n");
 | 
							log("        specified file.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2013,7 +2013,8 @@ struct SimPass : public Pass {
 | 
				
			||||||
		log("        writeback mode: use final simulation state as new init state\n");
 | 
							log("        writeback mode: use final simulation state as new init state\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -r\n");
 | 
							log("    -r\n");
 | 
				
			||||||
		log("        read simulation results file (file formats supported: FST, VCD, AIW and WIT)\n");
 | 
							log("        read simulation results file\n");
 | 
				
			||||||
 | 
							log("            File formats supported: FST, VCD, AIW and WIT\n");
 | 
				
			||||||
		log("		 VCD support requires vcd2fst external tool to be present\n");
 | 
							log("		 VCD support requires vcd2fst external tool to be present\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -map <filename>\n");
 | 
							log("    -map <filename>\n");
 | 
				
			||||||
| 
						 | 
					@ -2248,8 +2249,8 @@ struct Fst2TbPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    fst2tb [options] [top-level]\n");
 | 
							log("    fst2tb [options] [top-level]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This command generates testbench for the circuit using the given top-level module\n");
 | 
							log("This command generates testbench for the circuit using the given top-level\n");
 | 
				
			||||||
		log("and simulus signal from FST file\n");
 | 
							log("module and simulus signal from FST file\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -tb <name>\n");
 | 
							log("    -tb <name>\n");
 | 
				
			||||||
		log("        generated testbench name.\n");
 | 
							log("        generated testbench name.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1532,7 +1532,8 @@ struct AbcPass : public Pass {
 | 
				
			||||||
		log("           NMUX, AOI3, OAI3, AOI4, OAI4.\n");
 | 
							log("           NMUX, AOI3, OAI3, AOI4, OAI4.\n");
 | 
				
			||||||
		log("        (The NOT gate is always added to this list automatically.)\n");
 | 
							log("        (The NOT gate is always added to this list automatically.)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("        The following aliases can be used to reference common sets of gate types:\n");
 | 
							log("        The following aliases can be used to reference common sets of gate\n");
 | 
				
			||||||
 | 
							log("        types:\n");
 | 
				
			||||||
		log("          simple: AND OR XOR MUX\n");
 | 
							log("          simple: AND OR XOR MUX\n");
 | 
				
			||||||
		log("          cmos2:  NAND NOR\n");
 | 
							log("          cmos2:  NAND NOR\n");
 | 
				
			||||||
		log("          cmos3:  NAND NOR AOI3 OAI3\n");
 | 
							log("          cmos3:  NAND NOR AOI3 OAI3\n");
 | 
				
			||||||
| 
						 | 
					@ -1576,8 +1577,8 @@ struct AbcPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -dress\n");
 | 
							log("    -dress\n");
 | 
				
			||||||
		log("        run the 'dress' command after all other ABC commands. This aims to\n");
 | 
							log("        run the 'dress' command after all other ABC commands. This aims to\n");
 | 
				
			||||||
		log("        preserve naming by an equivalence check between the original and post-ABC\n");
 | 
							log("        preserve naming by an equivalence check between the original and\n");
 | 
				
			||||||
		log("        netlists (experimental).\n");
 | 
							log("        post-ABC netlists (experimental).\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("When no target cell library is specified the Yosys standard cell library is\n");
 | 
							log("When no target cell library is specified the Yosys standard cell library is\n");
 | 
				
			||||||
		log("loaded into ABC before the ABC script is executed.\n");
 | 
							log("loaded into ABC before the ABC script is executed.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,8 +93,8 @@ struct Abc9Pass : public ScriptPass
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    abc9 [options] [selection]\n");
 | 
							log("    abc9 [options] [selection]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This script pass performs a sequence of commands to facilitate the use of the ABC\n");
 | 
							log("This script pass performs a sequence of commands to facilitate the use of the\n");
 | 
				
			||||||
		log("tool [1] for technology mapping of the current design to a target FPGA\n");
 | 
							log("ABC tool [1] for technology mapping of the current design to a target FPGA\n");
 | 
				
			||||||
		log("architecture. Only fully-selected modules are supported.\n");
 | 
							log("architecture. Only fully-selected modules are supported.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -run <from_label>:<to_label>\n");
 | 
							log("    -run <from_label>:<to_label>\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -303,8 +303,8 @@ struct Abc9ExePass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log(" \n");
 | 
							log(" \n");
 | 
				
			||||||
		log("This pass uses the ABC tool [1] for technology mapping of the top module\n");
 | 
							log("This pass uses the ABC tool [1] for technology mapping of the top module\n");
 | 
				
			||||||
		log("(according to the (* top *) attribute or if only one module is currently selected)\n");
 | 
							log("(according to the (* top *) attribute or if only one module is currently\n");
 | 
				
			||||||
		log("to a target FPGA architecture.\n");
 | 
							log("selected) to a target FPGA architecture.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -exe <command>\n");
 | 
							log("    -exe <command>\n");
 | 
				
			||||||
#ifdef ABCEXTERNAL
 | 
					#ifdef ABCEXTERNAL
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1572,14 +1572,14 @@ struct Abc9OpsPass : public Pass {
 | 
				
			||||||
		log("the `abc9' script pass. Only fully-selected modules are supported.\n");
 | 
							log("the `abc9' script pass. Only fully-selected modules are supported.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -check\n");
 | 
							log("    -check\n");
 | 
				
			||||||
		log("        check that the design is valid, e.g. (* abc9_box_id *) values are unique,\n");
 | 
							log("        check that the design is valid, e.g. (* abc9_box_id *) values are\n");
 | 
				
			||||||
		log("        (* abc9_carry *) is only given for one input/output port, etc.\n");
 | 
							log("        unique, (* abc9_carry *) is only given for one input/output port, etc.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -prep_hier\n");
 | 
							log("    -prep_hier\n");
 | 
				
			||||||
		log("        derive all used (* abc9_box *) or (* abc9_flop *) (if -dff option)\n");
 | 
							log("        derive all used (* abc9_box *) or (* abc9_flop *) (if -dff option)\n");
 | 
				
			||||||
		log("        whitebox modules. with (* abc9_flop *) modules, only those containing\n");
 | 
							log("        whitebox modules. with (* abc9_flop *) modules, only those containing\n");
 | 
				
			||||||
		log("        $dff/$_DFF_[NP]_ cells with zero initial state -- due to an ABC limitation\n");
 | 
							log("        $dff/$_DFF_[NP]_ cells with zero initial state -- due to an ABC\n");
 | 
				
			||||||
		log("        -- will be derived.\n");
 | 
							log("        limitation -- will be derived.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -prep_bypass\n");
 | 
							log("    -prep_bypass\n");
 | 
				
			||||||
		log("        create techmap rules in the '$abc9_map' and '$abc9_unmap' designs for\n");
 | 
							log("        create techmap rules in the '$abc9_map' and '$abc9_unmap' designs for\n");
 | 
				
			||||||
| 
						 | 
					@ -1597,33 +1597,35 @@ struct Abc9OpsPass : public Pass {
 | 
				
			||||||
		log("    -prep_dff_submod\n");
 | 
							log("    -prep_dff_submod\n");
 | 
				
			||||||
		log("        within (* abc9_flop *) modules, rewrite all edge-sensitive path\n");
 | 
							log("        within (* abc9_flop *) modules, rewrite all edge-sensitive path\n");
 | 
				
			||||||
		log("        declarations and $setup() timing checks ($specify3 and $specrule cells)\n");
 | 
							log("        declarations and $setup() timing checks ($specify3 and $specrule cells)\n");
 | 
				
			||||||
		log("        that share a 'DST' port with the $_DFF_[NP]_.Q port from this 'Q' port to\n");
 | 
							log("        that share a 'DST' port with the $_DFF_[NP]_.Q port from this 'Q' port\n");
 | 
				
			||||||
		log("        the DFF's 'D' port. this is to prepare such specify cells to be moved\n");
 | 
							log("        to the DFF's 'D' port. this is to prepare such specify cells to be moved\n");
 | 
				
			||||||
		log("        into the flop box.\n");
 | 
							log("        into the flop box.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -prep_dff_unmap\n");
 | 
							log("    -prep_dff_unmap\n");
 | 
				
			||||||
		log("        populate the '$abc9_unmap' design with techmap rules for mapping *_$abc9_flop\n");
 | 
							log("        populate the '$abc9_unmap' design with techmap rules for mapping\n");
 | 
				
			||||||
		log("        cells back into their derived cell types (where the rules created by\n");
 | 
							log("        *_$abc9_flop cells back into their derived cell types (where the rules\n");
 | 
				
			||||||
		log("        -prep_hier will then map back to the original cell with parameters).\n");
 | 
							log("        created by -prep_hier will then map back to the original cell with\n");
 | 
				
			||||||
 | 
							log("        parameters).\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -prep_delays\n");
 | 
							log("    -prep_delays\n");
 | 
				
			||||||
		log("        insert `$__ABC9_DELAY' blackbox cells into the design to account for\n");
 | 
							log("        insert `$__ABC9_DELAY' blackbox cells into the design to account for\n");
 | 
				
			||||||
		log("        certain required times.\n");
 | 
							log("        certain required times.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -break_scc\n");
 | 
							log("    -break_scc\n");
 | 
				
			||||||
		log("        for an arbitrarily chosen cell in each unique SCC of each selected module\n");
 | 
							log("        for an arbitrarily chosen cell in each unique SCC of each selected\n");
 | 
				
			||||||
		log("        (tagged with an (* abc9_scc_id = <int> *) attribute) interrupt all wires\n");
 | 
							log("        module (tagged with an (* abc9_scc_id = <int> *) attribute) interrupt\n");
 | 
				
			||||||
		log("        driven by this cell's outputs with a temporary $__ABC9_SCC_BREAKER cell\n");
 | 
							log("        all wires driven by this cell's outputs with a temporary\n");
 | 
				
			||||||
		log("        to break the SCC.\n");
 | 
							log("        $__ABC9_SCC_BREAKER cell to break the SCC.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -prep_xaiger\n");
 | 
							log("    -prep_xaiger\n");
 | 
				
			||||||
		log("        prepare the design for XAIGER output. this includes computing the\n");
 | 
							log("        prepare the design for XAIGER output. this includes computing the\n");
 | 
				
			||||||
		log("        topological ordering of ABC9 boxes, as well as preparing the '$abc9_holes'\n");
 | 
							log("        topological ordering of ABC9 boxes, as well as preparing the \n");
 | 
				
			||||||
		log("        design that contains the logic behaviour of ABC9 whiteboxes.\n");
 | 
							log("        '$abc9_holes' design that contains the logic behaviour of ABC9\n");
 | 
				
			||||||
 | 
							log("        whiteboxes.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -dff\n");
 | 
							log("    -dff\n");
 | 
				
			||||||
		log("        consider flop cells (those instantiating modules marked with (* abc9_flop *))\n");
 | 
							log("        consider flop cells (those instantiating modules marked with\n");
 | 
				
			||||||
		log("        during -prep_{delays,xaiger,box}.\n");
 | 
							log("        (* abc9_flop *)) during -prep_{delays,xaiger,box}.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -prep_lut <maxlut>\n");
 | 
							log("    -prep_lut <maxlut>\n");
 | 
				
			||||||
		log("        pre-compute the lut library by analysing all modules marked with\n");
 | 
							log("        pre-compute the lut library by analysing all modules marked with\n");
 | 
				
			||||||
| 
						 | 
					@ -1641,8 +1643,8 @@ struct Abc9OpsPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -reintegrate\n");
 | 
							log("    -reintegrate\n");
 | 
				
			||||||
		log("        for each selected module, re-intergrate the module '<module-name>$abc9'\n");
 | 
							log("        for each selected module, re-intergrate the module '<module-name>$abc9'\n");
 | 
				
			||||||
		log("        by first recovering ABC9 boxes, and then stitching in the remaining primary\n");
 | 
							log("        by first recovering ABC9 boxes, and then stitching in the remaining\n");
 | 
				
			||||||
		log("        inputs and outputs.\n");
 | 
							log("        primary inputs and outputs.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
						void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,34 +118,24 @@ struct DffLegalizePass : public Pass {
 | 
				
			||||||
		log("- $_DLATCH_[NP][NP][01]_\n");
 | 
							log("- $_DLATCH_[NP][NP][01]_\n");
 | 
				
			||||||
		log("- $_DLATCHSR_[NP][NP][NP]_\n");
 | 
							log("- $_DLATCHSR_[NP][NP][NP]_\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("The following transformations are performed by this pass:");
 | 
							log("The following transformations are performed by this pass:\n");
 | 
				
			||||||
		log("\n");
 | 
					 | 
				
			||||||
		log("- upconversion from a less capable cell to a more capable cell, if the less");
 | 
					 | 
				
			||||||
		log("  capable cell is not supported (eg. dff -> dffe, or adff -> dffsr)");
 | 
					 | 
				
			||||||
		log("\n");
 | 
					 | 
				
			||||||
		log("- unmapping FFs with clock enable (due to unsupported cell type or -mince)");
 | 
					 | 
				
			||||||
		log("\n");
 | 
					 | 
				
			||||||
		log("- unmapping FFs with sync reset (due to unsupported cell type or -minsrst)");
 | 
					 | 
				
			||||||
		log("\n");
 | 
					 | 
				
			||||||
		log("- adding inverters on the control pins (due to unsupported polarity)");
 | 
					 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
 | 
							log("- upconversion from a less capable cell to a more capable cell, if the less\n");
 | 
				
			||||||
 | 
							log("  capable cell is not supported (eg. dff -> dffe, or adff -> dffsr)\n");
 | 
				
			||||||
 | 
							log("- unmapping FFs with clock enable (due to unsupported cell type or -mince)\n");
 | 
				
			||||||
 | 
							log("- unmapping FFs with sync reset (due to unsupported cell type or -minsrst)\n");
 | 
				
			||||||
 | 
							log("- adding inverters on the control pins (due to unsupported polarity)\n");
 | 
				
			||||||
		log("- adding inverters on the D and Q pins and inverting the init/reset values\n");
 | 
							log("- adding inverters on the D and Q pins and inverting the init/reset values\n");
 | 
				
			||||||
		log("  (due to unsupported init or reset value)");
 | 
							log("  (due to unsupported init or reset value)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("- converting sr into adlatch (by tying D to 1 and using E as set input)\n");
 | 
				
			||||||
		log("- converting sr into adlatch (by tying D to 1 and using E as set input)");
 | 
							log("- emulating unsupported dffsr cell by adff + adff + sr + mux\n");
 | 
				
			||||||
		log("\n");
 | 
							log("- emulating unsupported dlatchsr cell by adlatch + adlatch + sr + mux\n");
 | 
				
			||||||
		log("- emulating unsupported dffsr cell by adff + adff + sr + mux");
 | 
					 | 
				
			||||||
		log("\n");
 | 
					 | 
				
			||||||
		log("- emulating unsupported dlatchsr cell by adlatch + adlatch + sr + mux");
 | 
					 | 
				
			||||||
		log("\n");
 | 
					 | 
				
			||||||
		log("- emulating adff when the (reset, init) value combination is unsupported by\n");
 | 
							log("- emulating adff when the (reset, init) value combination is unsupported by\n");
 | 
				
			||||||
		log("  dff + adff + dlatch + mux");
 | 
							log("  dff + adff + dlatch + mux\n");
 | 
				
			||||||
		log("\n");
 | 
					 | 
				
			||||||
		log("- emulating adlatch when the (reset, init) value combination is unsupported by\n");
 | 
							log("- emulating adlatch when the (reset, init) value combination is unsupported by\n");
 | 
				
			||||||
		log("- dlatch + adlatch + dlatch + mux");
 | 
							log("- dlatch + adlatch + dlatch + mux\n");
 | 
				
			||||||
		log("\n");
 | 
							log("If the pass is unable to realize a given cell type (eg. adff when only plain dff\n");
 | 
				
			||||||
		log("If the pass is unable to realize a given cell type (eg. adff when only plain dff");
 | 
							log("is available), an error is raised.\n");
 | 
				
			||||||
		log("is available), an error is raised.");
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Table of all supported cell types.
 | 
						// Table of all supported cell types.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -431,7 +431,7 @@ struct DfflibmapPass : public Pass {
 | 
				
			||||||
		log("cells, leaving remaining internal cells untouched.\n");
 | 
							log("cells, leaving remaining internal cells untouched.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("When called with -info, this command will only print the target cell\n");
 | 
							log("When called with -info, this command will only print the target cell\n");
 | 
				
			||||||
		log("list, along with their associated internal cell types, and the arguments");
 | 
							log("list, along with their associated internal cell types, and the arguments\n");
 | 
				
			||||||
		log("that would be passed to the dfflegalize pass.  The design will not be\n");
 | 
							log("that would be passed to the dfflegalize pass.  The design will not be\n");
 | 
				
			||||||
		log("changed.\n");
 | 
							log("changed.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,8 +33,8 @@ struct DffunmapPass : public Pass {
 | 
				
			||||||
		log("    dffunmap [options] [selection]\n");
 | 
							log("    dffunmap [options] [selection]\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("This pass transforms FF types with clock enable and/or synchronous reset into\n");
 | 
							log("This pass transforms FF types with clock enable and/or synchronous reset into\n");
 | 
				
			||||||
		log("their base type (with neither clock enable nor sync reset) by emulating the clock\n");
 | 
							log("their base type (with neither clock enable nor sync reset) by emulating the\n");
 | 
				
			||||||
		log("enable and synchronous reset with multiplexers on the cell input.\n");
 | 
							log("clock enable and synchronous reset with multiplexers on the cell input.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -ce-only\n");
 | 
							log("    -ce-only\n");
 | 
				
			||||||
		log("        unmap only clock enables, leave synchronous resets alone.\n");
 | 
							log("        unmap only clock enables, leave synchronous resets alone.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -476,7 +476,8 @@ struct SimplemapPass : public Pass {
 | 
				
			||||||
		log("  $not, $pos, $and, $or, $xor, $xnor\n");
 | 
							log("  $not, $pos, $and, $or, $xor, $xnor\n");
 | 
				
			||||||
		log("  $reduce_and, $reduce_or, $reduce_xor, $reduce_xnor, $reduce_bool\n");
 | 
							log("  $reduce_and, $reduce_or, $reduce_xor, $reduce_xnor, $reduce_bool\n");
 | 
				
			||||||
		log("  $logic_not, $logic_and, $logic_or, $mux, $tribuf\n");
 | 
							log("  $logic_not, $logic_and, $logic_or, $mux, $tribuf\n");
 | 
				
			||||||
		log("  $sr, $ff, $dff, $dffe, $dffsr, $dffsre, $adff, $adffe, $aldff, $aldffe, $sdff, $sdffe, $sdffce, $dlatch, $adlatch, $dlatchsr\n");
 | 
							log("  $sr, $ff, $dff, $dffe, $dffsr, $dffsre, $adff, $adffe, $aldff, $aldffe, $sdff,\n");
 | 
				
			||||||
 | 
							log("  $sdffe, $sdffce, $dlatch, $adlatch, $dlatchsr\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
						void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1026,8 +1026,8 @@ struct TechmapPass : public Pass {
 | 
				
			||||||
		log("When a module in the map file has the 'techmap_celltype' attribute set, it will\n");
 | 
							log("When a module in the map file has the 'techmap_celltype' attribute set, it will\n");
 | 
				
			||||||
		log("match cells with a type that match the text value of this attribute. Otherwise\n");
 | 
							log("match cells with a type that match the text value of this attribute. Otherwise\n");
 | 
				
			||||||
		log("the module name will be used to match the cell.  Multiple space-separated cell\n");
 | 
							log("the module name will be used to match the cell.  Multiple space-separated cell\n");
 | 
				
			||||||
		log("types can be listed, and wildcards using [] will be expanded (ie. \"$_DFF_[PN]_\"\n");
 | 
							log("types can be listed, and wildcards using [] will be expanded (ie.\n");
 | 
				
			||||||
		log("is the same as \"$_DFF_P_ $_DFF_N_\").\n");
 | 
							log("\"$_DFF_[PN]_\" is the same as \"$_DFF_P_ $_DFF_N_\").\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("When a module in the map file has the 'techmap_simplemap' attribute set, techmap\n");
 | 
							log("When a module in the map file has the 'techmap_simplemap' attribute set, techmap\n");
 | 
				
			||||||
		log("will use 'simplemap' (see 'help simplemap') to map cells matching the module.\n");
 | 
							log("will use 'simplemap' (see 'help simplemap') to map cells matching the module.\n");
 | 
				
			||||||
| 
						 | 
					@ -1083,11 +1083,11 @@ struct TechmapPass : public Pass {
 | 
				
			||||||
		log("        It is possible to combine both prefixes to 'RECURSION; CONSTMAP; '.\n");
 | 
							log("        It is possible to combine both prefixes to 'RECURSION; CONSTMAP; '.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    _TECHMAP_REMOVEINIT_<port-name>_\n");
 | 
							log("    _TECHMAP_REMOVEINIT_<port-name>_\n");
 | 
				
			||||||
		log("        When this wire is set to a constant value, the init attribute of the wire(s)\n");
 | 
							log("        When this wire is set to a constant value, the init attribute of the\n");
 | 
				
			||||||
		log("        connected to this port will be consumed.  This wire must have the same\n");
 | 
							log("        wire(s) connected to this port will be consumed.  This wire must have\n");
 | 
				
			||||||
		log("        width as the given port, and for every bit that is set to 1 in the value,\n");
 | 
							log("        the same width as the given port, and for every bit that is set to 1 in\n");
 | 
				
			||||||
		log("        the corresponding init attribute bit will be changed to 1'bx.  If all\n");
 | 
							log("        the value, the corresponding init attribute bit will be changed to 1'bx.\n");
 | 
				
			||||||
		log("        bits of an init attribute are left as x, it will be removed.\n");
 | 
							log("        If all bits of an init attribute are left as x, it will be removed.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("In addition to this special wires, techmap also supports special parameters in\n");
 | 
							log("In addition to this special wires, techmap also supports special parameters in\n");
 | 
				
			||||||
		log("modules in the map file:\n");
 | 
							log("modules in the map file:\n");
 | 
				
			||||||
| 
						 | 
					@ -1108,8 +1108,8 @@ struct TechmapPass : public Pass {
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    _TECHMAP_WIREINIT_<port-name>_\n");
 | 
							log("    _TECHMAP_WIREINIT_<port-name>_\n");
 | 
				
			||||||
		log("        When a parameter with this name exists, it will be set to the initial\n");
 | 
							log("        When a parameter with this name exists, it will be set to the initial\n");
 | 
				
			||||||
		log("        value of the wire(s) connected to the given port, as specified by the init\n");
 | 
							log("        value of the wire(s) connected to the given port, as specified by the\n");
 | 
				
			||||||
		log("        attribute. If the attribute doesn't exist, x will be filled for the\n");
 | 
							log("        init attribute. If the attribute doesn't exist, x will be filled for the\n");
 | 
				
			||||||
		log("        missing bits.  To remove the init attribute bits used, use the\n");
 | 
							log("        missing bits.  To remove the init attribute bits used, use the\n");
 | 
				
			||||||
		log("        _TECHMAP_REMOVEINIT_*_ wires.\n");
 | 
							log("        _TECHMAP_REMOVEINIT_*_ wires.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,8 +45,8 @@ struct SynthIce40Pass : public ScriptPass
 | 
				
			||||||
		log("This command runs synthesis for iCE40 FPGAs.\n");
 | 
							log("This command runs synthesis for iCE40 FPGAs.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -device < hx | lp | u >\n");
 | 
							log("    -device < hx | lp | u >\n");
 | 
				
			||||||
		log("        relevant only for '-abc9' flow, optimise timing for the specified device.\n");
 | 
							log("        relevant only for '-abc9' flow, optimise timing for the specified\n");
 | 
				
			||||||
		log("        default: hx\n");
 | 
							log("        device. default: hx\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -top <module>\n");
 | 
							log("    -top <module>\n");
 | 
				
			||||||
		log("        use the specified module as top module\n");
 | 
							log("        use the specified module as top module\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,21 +39,22 @@ struct SynthIntelPass : public ScriptPass {
 | 
				
			||||||
		log("    -family <max10 | cyclone10lp | cycloneiv | cycloneive>\n");
 | 
							log("    -family <max10 | cyclone10lp | cycloneiv | cycloneive>\n");
 | 
				
			||||||
		log("        generate the synthesis netlist for the specified family.\n");
 | 
							log("        generate the synthesis netlist for the specified family.\n");
 | 
				
			||||||
		log("        MAX10 is the default target if no family argument specified.\n");
 | 
							log("        MAX10 is the default target if no family argument specified.\n");
 | 
				
			||||||
		log("        For Cyclone IV GX devices, use cycloneiv argument; for Cyclone IV E, use cycloneive.\n");
 | 
							log("        For Cyclone IV GX devices, use cycloneiv argument; for Cyclone IV E, use\n");
 | 
				
			||||||
		log("        For Cyclone V and Cyclone 10 GX, use the synth_intel_alm backend instead.\n");
 | 
							log("        cycloneive. For Cyclone V and Cyclone 10 GX, use the synth_intel_alm\n");
 | 
				
			||||||
 | 
							log("        backend instead.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -top <module>\n");
 | 
							log("    -top <module>\n");
 | 
				
			||||||
		log("        use the specified module as top module (default='top')\n");
 | 
							log("        use the specified module as top module (default='top')\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -vqm <file>\n");
 | 
							log("    -vqm <file>\n");
 | 
				
			||||||
		log("        write the design to the specified Verilog Quartus Mapping File. Writing of an\n");
 | 
							log("        write the design to the specified Verilog Quartus Mapping File. Writing\n");
 | 
				
			||||||
		log("        output file is omitted if this parameter is not specified.\n");
 | 
							log("        of an output file is omitted if this parameter is not specified.\n");
 | 
				
			||||||
		log("        Note that this backend has not been tested and is likely incompatible\n");
 | 
							log("        Note that this backend has not been tested and is likely incompatible\n");
 | 
				
			||||||
		log("        with recent versions of Quartus.\n");
 | 
							log("        with recent versions of Quartus.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -vpr <file>\n");
 | 
							log("    -vpr <file>\n");
 | 
				
			||||||
		log("        write BLIF files for VPR flow experiments. The synthesized BLIF output file is not\n");
 | 
							log("        write BLIF files for VPR flow experiments. The synthesized BLIF output\n");
 | 
				
			||||||
		log("        compatible with the Quartus flow. Writing of an\n");
 | 
							log("        file is not compatible with the Quartus flow. Writing of an\n");
 | 
				
			||||||
		log("        output file is omitted if this parameter is not specified.\n");
 | 
							log("        output file is omitted if this parameter is not specified.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -run <from_label>:<to_label>\n");
 | 
							log("    -run <from_label>:<to_label>\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,21 +43,24 @@ struct SynthIntelALMPass : public ScriptPass {
 | 
				
			||||||
		log("    -family <family>\n");
 | 
							log("    -family <family>\n");
 | 
				
			||||||
		log("        target one of:\n");
 | 
							log("        target one of:\n");
 | 
				
			||||||
		log("        \"cyclonev\"    - Cyclone V (default)\n");
 | 
							log("        \"cyclonev\"    - Cyclone V (default)\n");
 | 
				
			||||||
		log("        \"arriav\"      - Arria V (non-GZ)");
 | 
							log("        \"arriav\"      - Arria V (non-GZ)\n");
 | 
				
			||||||
		log("        \"cyclone10gx\" - Cyclone 10GX\n");
 | 
							log("        \"cyclone10gx\" - Cyclone 10GX\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -vqm <file>\n");
 | 
							log("    -vqm <file>\n");
 | 
				
			||||||
		log("        write the design to the specified Verilog Quartus Mapping File. Writing of an\n");
 | 
							log("        write the design to the specified Verilog Quartus Mapping File. Writing\n");
 | 
				
			||||||
		log("        output file is omitted if this parameter is not specified. Implies -quartus.\n");
 | 
							log("        of an output file is omitted if this parameter is not specified. Implies\n");
 | 
				
			||||||
 | 
							log("        -quartus.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -noflatten\n");
 | 
							log("    -noflatten\n");
 | 
				
			||||||
		log("        do not flatten design before synthesis; useful for per-module area statistics\n");
 | 
							log("        do not flatten design before synthesis; useful for per-module area\n");
 | 
				
			||||||
 | 
							log("        statistics\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -quartus\n");
 | 
							log("    -quartus\n");
 | 
				
			||||||
		log("        output a netlist using Quartus cells instead of MISTRAL_* cells\n");
 | 
							log("        output a netlist using Quartus cells instead of MISTRAL_* cells\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -dff\n");
 | 
							log("    -dff\n");
 | 
				
			||||||
		log("        pass DFFs to ABC to perform sequential logic optimisations (EXPERIMENTAL)\n");
 | 
							log("        pass DFFs to ABC to perform sequential logic optimisations\n");
 | 
				
			||||||
 | 
							log("        (EXPERIMENTAL)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -run <from_label>:<to_label>\n");
 | 
							log("    -run <from_label>:<to_label>\n");
 | 
				
			||||||
		log("        only run the commands between the labels (see below). an empty\n");
 | 
							log("        only run the commands between the labels (see below). an empty\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,8 +48,8 @@ struct SynthQuickLogicPass : public ScriptPass {
 | 
				
			||||||
		log("        is omitted if this parameter is not specified.\n");
 | 
							log("        is omitted if this parameter is not specified.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -verilog <file>\n");
 | 
							log("    -verilog <file>\n");
 | 
				
			||||||
		log("        write the design to the specified verilog file. writing of an output file\n");
 | 
							log("        write the design to the specified verilog file. writing of an output\n");
 | 
				
			||||||
		log("        is omitted if this parameter is not specified.\n");
 | 
							log("        file is omitted if this parameter is not specified.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -abc\n");
 | 
							log("    -abc\n");
 | 
				
			||||||
		log("        use old ABC flow, which has generally worse mapping results but is less\n");
 | 
							log("        use old ABC flow, which has generally worse mapping results but is less\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,8 +45,8 @@ struct SynthSf2Pass : public ScriptPass
 | 
				
			||||||
		log("        is omitted if this parameter is not specified.\n");
 | 
							log("        is omitted if this parameter is not specified.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -vlog <file>\n");
 | 
							log("    -vlog <file>\n");
 | 
				
			||||||
		log("        write the design to the specified Verilog file. writing of an output file\n");
 | 
							log("        write the design to the specified Verilog file. writing of an output\n");
 | 
				
			||||||
		log("        is omitted if this parameter is not specified.\n");
 | 
							log("        file is omitted if this parameter is not specified.\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -json <file>\n");
 | 
							log("    -json <file>\n");
 | 
				
			||||||
		log("        write the design to the specified JSON file. writing of an output file\n");
 | 
							log("        write the design to the specified JSON file. writing of an output file\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,7 +93,8 @@ struct SynthXilinxPass : public ScriptPass
 | 
				
			||||||
		log("        do not use XORCY/MUXCY/CARRY4 cells in output netlist\n");
 | 
							log("        do not use XORCY/MUXCY/CARRY4 cells in output netlist\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -nowidelut\n");
 | 
							log("    -nowidelut\n");
 | 
				
			||||||
		log("        do not use MUXF[5-9] resources to implement LUTs larger than native for the target\n");
 | 
							log("        do not use MUXF[5-9] resources to implement LUTs larger than native for\n");
 | 
				
			||||||
 | 
							log("        the target\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -nodsp\n");
 | 
							log("    -nodsp\n");
 | 
				
			||||||
		log("        do not use DSP48*s to implement multipliers and associated logic\n");
 | 
							log("        do not use DSP48*s to implement multipliers and associated logic\n");
 | 
				
			||||||
| 
						 | 
					@ -109,8 +110,8 @@ struct SynthXilinxPass : public ScriptPass
 | 
				
			||||||
		log("        infer URAM288s for large memories (xcup only)\n");
 | 
							log("        infer URAM288s for large memories (xcup only)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -widemux <int>\n");
 | 
							log("    -widemux <int>\n");
 | 
				
			||||||
		log("        enable inference of hard multiplexer resources (MUXF[78]) for muxes at or\n");
 | 
							log("        enable inference of hard multiplexer resources (MUXF[78]) for muxes at\n");
 | 
				
			||||||
		log("        above this number of inputs (minimum value 2, recommended value >= 5).\n");
 | 
							log("        or above this number of inputs (minimum value 2, recommended value >= 5)\n");
 | 
				
			||||||
		log("        default: 0 (no inference)\n");
 | 
							log("        default: 0 (no inference)\n");
 | 
				
			||||||
		log("\n");
 | 
							log("\n");
 | 
				
			||||||
		log("    -run <from_label>:<to_label>\n");
 | 
							log("    -run <from_label>:<to_label>\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue