mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	Merge pull request #2173 from whitequark/use-cxx11-final-override
Use C++11 final/override/[[noreturn]]
This commit is contained in:
		
						commit
						ede4b10da8
					
				
					 222 changed files with 545 additions and 556 deletions
				
			
		| 
						 | 
				
			
			@ -116,7 +116,7 @@ static void add_wire(RTLIL::Design *design, RTLIL::Module *module, std::string n
 | 
			
		|||
 | 
			
		||||
struct AddPass : public Pass {
 | 
			
		||||
	AddPass() : Pass("add", "add objects to the design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +150,7 @@ struct AddPass : public Pass {
 | 
			
		|||
		log("Add module[s] with the specified name[s].\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string command;
 | 
			
		||||
		std::string arg_name;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ int autoname_worker(Module *module)
 | 
			
		|||
 | 
			
		||||
struct AutonamePass : public Pass {
 | 
			
		||||
	AutonamePass() : Pass("autoname", "automatically assign names to objects") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -102,7 +102,7 @@ struct AutonamePass : public Pass {
 | 
			
		|||
		log("with $-prefix).\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct BlackboxPass : public Pass {
 | 
			
		||||
	BlackboxPass() : Pass("blackbox", "convert modules into blackbox modules") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ struct BlackboxPass : public Pass {
 | 
			
		|||
		log("module attribute).\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct BugpointPass : public Pass {
 | 
			
		||||
	BugpointPass() : Pass("bugpoint", "minimize testcases") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -313,7 +313,7 @@ struct BugpointPass : public Pass {
 | 
			
		|||
		return nullptr;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		string yosys_cmd = "yosys", script, grep;
 | 
			
		||||
		bool fast = false, clean = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct CheckPass : public Pass {
 | 
			
		||||
	CheckPass() : Pass("check", "check for obvious problems in the design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ struct CheckPass : public Pass {
 | 
			
		|||
		log("    Produce a runtime error if any problems are found in the current design.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		int counter = 0;
 | 
			
		||||
		bool noinit = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct ChformalPass : public Pass {
 | 
			
		||||
	ChformalPass() : Pass("chformal", "change formal constraints of the design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ struct ChformalPass : public Pass {
 | 
			
		|||
		log("        change the roles of cells as indicated. these options can be combined\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool assert2assume = false;
 | 
			
		||||
		bool assume2assert = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct ChtypePass : public Pass {
 | 
			
		||||
	ChtypePass() : Pass("chtype", "change type of cells in the design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ struct ChtypePass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		IdString set_type;
 | 
			
		||||
		dict<IdString, IdString> map_types;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ static void unset_drivers(RTLIL::Design *design, RTLIL::Module *module, SigMap &
 | 
			
		|||
 | 
			
		||||
struct ConnectPass : public Pass {
 | 
			
		||||
	ConnectPass() : Pass("connect", "create or remove connections") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ struct ConnectPass : public Pass {
 | 
			
		|||
		log("This command does not operate on module with processes.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		RTLIL::Module *module = nullptr;
 | 
			
		||||
		for (auto mod : design->selected_modules()) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,7 +143,7 @@ struct ConnwrappersWorker
 | 
			
		|||
 | 
			
		||||
struct ConnwrappersPass : public Pass {
 | 
			
		||||
	ConnwrappersPass() : Pass("connwrappers", "match width of input-output port pairs") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -165,7 +165,7 @@ struct ConnwrappersPass : public Pass {
 | 
			
		|||
		log("The options -signed, -unsigned, and -port can be specified multiple times.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		ConnwrappersWorker worker;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct CopyPass : public Pass {
 | 
			
		||||
	CopyPass() : Pass("copy", "copy modules in the design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ struct CopyPass : public Pass {
 | 
			
		|||
		log("by this command.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		if (args.size() != 3)
 | 
			
		||||
			log_cmd_error("Invalid number of arguments!\n");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct CoverPass : public Pass {
 | 
			
		||||
	CoverPass() : Pass("cover", "print code coverage counters") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -83,7 +83,7 @@ struct CoverPass : public Pass {
 | 
			
		|||
		log("Coverage counters are only available in Yosys for Linux.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::vector<FILE*> out_files;
 | 
			
		||||
		std::vector<std::string> patterns;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct DeletePass : public Pass {
 | 
			
		||||
	DeletePass() : Pass("delete", "delete objects in the design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ struct DeletePass : public Pass {
 | 
			
		|||
		log("selected wires, thus 'deleting' module ports.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool flag_input = false;
 | 
			
		||||
		bool flag_output = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ std::vector<RTLIL::Design*> pushed_designs;
 | 
			
		|||
 | 
			
		||||
struct DesignPass : public Pass {
 | 
			
		||||
	DesignPass() : Pass("design", "save, restore and reset current design") { }
 | 
			
		||||
	~DesignPass() YS_OVERRIDE {
 | 
			
		||||
	~DesignPass() override {
 | 
			
		||||
		for (auto &it : saved_designs)
 | 
			
		||||
			delete it.second;
 | 
			
		||||
		saved_designs.clear();
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ struct DesignPass : public Pass {
 | 
			
		|||
			delete it;
 | 
			
		||||
		pushed_designs.clear();
 | 
			
		||||
	}
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -105,7 +105,7 @@ struct DesignPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool got_mode = false;
 | 
			
		||||
		bool reset_mode = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct EdgetypePass : public Pass {
 | 
			
		||||
	EdgetypePass() : Pass("edgetypes", "list all types of edges in selection") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ struct EdgetypePass : public Pass {
 | 
			
		|||
		log("is a 4-tuple of source and sink cell type and port name.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct ExecPass : public Pass {
 | 
			
		||||
	ExecPass() : Pass("exec", "execute commands in the operating system shell") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +71,7 @@ struct ExecPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string cmd = "";
 | 
			
		||||
		char buf[1024] = {};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct LogPass : public Pass {
 | 
			
		||||
	LogPass() : Pass("log", "print text and log files") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ struct LogPass : public Pass {
 | 
			
		|||
		log("        do not append a newline\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design*) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design*) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		bool to_stdout = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct LoggerPass : public Pass {
 | 
			
		||||
	LoggerPass() : Pass("logger", "set logger properties") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ struct LoggerPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design * design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design * design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,7 +141,7 @@ struct LtpWorker
 | 
			
		|||
 | 
			
		||||
struct LtpPass : public Pass {
 | 
			
		||||
	LtpPass() : Pass("ltp", "print longest topological path") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +154,7 @@ struct LtpPass : public Pass {
 | 
			
		|||
		log("        automatically exclude FF cell types\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool noff = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ void load_plugin(std::string, std::vector<std::string>)
 | 
			
		|||
 | 
			
		||||
struct PluginPass : public Pass {
 | 
			
		||||
	PluginPass() : Pass("plugin", "load and list loaded plugins") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ struct PluginPass : public Pass {
 | 
			
		|||
		log("        List loaded plugins\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string plugin_filename;
 | 
			
		||||
		std::vector<std::string> plugin_aliases;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct PortlistPass : public Pass {
 | 
			
		||||
	PortlistPass() : Pass("portlist", "list (top-level) ports") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +39,7 @@ struct PortlistPass : public Pass {
 | 
			
		|||
		log("    print verilog blackbox module definitions instead of port lists\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool m_mode = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct PrintAttrsPass : public Pass {
 | 
			
		||||
	PrintAttrsPass() : Pass("printattrs", "print attributes of selected objects") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ struct PrintAttrsPass : public Pass {
 | 
			
		|||
			log_assert(x.flags == RTLIL::CONST_FLAG_STRING || x.flags == RTLIL::CONST_FLAG_NONE); //intended to fail
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx = 1;
 | 
			
		||||
		extra_args(args, argidx, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -778,7 +778,7 @@ struct QwpWorker
 | 
			
		|||
 | 
			
		||||
struct QwpPass : public Pass {
 | 
			
		||||
	QwpPass() : Pass("qwp", "quadratic wirelength placer") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -808,7 +808,7 @@ struct QwpPass : public Pass {
 | 
			
		|||
		log("dense matrix operations. It is only a toy-placer for small circuits.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		QwpConfig config;
 | 
			
		||||
		xorshift32_state = 123456789;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -104,7 +104,7 @@ static IdString derive_name_from_cell_output_wire(const RTLIL::Cell *cell)
 | 
			
		|||
 | 
			
		||||
struct RenamePass : public Pass {
 | 
			
		||||
	RenamePass() : Pass("rename", "rename object in the design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +152,7 @@ struct RenamePass : public Pass {
 | 
			
		|||
		log("Rename top module.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string pattern_prefix = "_", pattern_suffix = "_";
 | 
			
		||||
		bool flag_src = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct ScatterPass : public Pass {
 | 
			
		||||
	ScatterPass() : Pass("scatter", "add additional intermediate nets") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ struct ScatterPass : public Pass {
 | 
			
		|||
		log("Use the opt_clean command to get rid of the additional nets.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		CellTypes ct(design);
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -218,7 +218,7 @@ struct SccWorker
 | 
			
		|||
 | 
			
		||||
struct SccPass : public Pass {
 | 
			
		||||
	SccPass() : Pass("scc", "detect strongly connected components (logic loops)") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -255,7 +255,7 @@ struct SccPass : public Pass {
 | 
			
		|||
		log("        that are part of a found logic loop\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::map<std::string, std::string> setAttr;
 | 
			
		||||
		bool allCellTypes = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct ScratchpadPass : public Pass {
 | 
			
		||||
	ScratchpadPass() : Pass("scratchpad", "get/set values in the scratchpad") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ struct ScratchpadPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1021,7 +1021,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct SelectPass : public Pass {
 | 
			
		||||
	SelectPass() : Pass("select", "modify and view the list of selected objects") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1250,7 +1250,7 @@ struct SelectPass : public Pass {
 | 
			
		|||
		log("    select */t:SWITCH %%x:+[GATE] */t:SWITCH %%d\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool add_mode = false;
 | 
			
		||||
		bool del_mode = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -1587,7 +1587,7 @@ struct SelectPass : public Pass {
 | 
			
		|||
 | 
			
		||||
struct CdPass : public Pass {
 | 
			
		||||
	CdPass() : Pass("cd", "a shortcut for 'select -module <name>'") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1613,7 +1613,7 @@ struct CdPass : public Pass {
 | 
			
		|||
		log("This is just a shortcut for 'select -clear'.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		if (args.size() != 1 && args.size() != 2)
 | 
			
		||||
			log_cmd_error("Invalid number of arguments.\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1693,7 +1693,7 @@ static void log_matches(const char *title, Module *module, const T &list)
 | 
			
		|||
 | 
			
		||||
struct LsPass : public Pass {
 | 
			
		||||
	LsPass() : Pass("ls", "list modules or objects in modules") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1704,7 +1704,7 @@ struct LsPass : public Pass {
 | 
			
		|||
		log("When an active module is selected, this prints a list of objects in the module.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx = 1;
 | 
			
		||||
		extra_args(args, argidx, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ static void do_setunset(dict<RTLIL::IdString, RTLIL::Const> &attrs, const std::v
 | 
			
		|||
 | 
			
		||||
struct SetattrPass : public Pass {
 | 
			
		||||
	SetattrPass() : Pass("setattr", "set/unset attributes on objects") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -69,7 +69,7 @@ struct SetattrPass : public Pass {
 | 
			
		|||
		log("instead of objects within modules.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::vector<setunset_t> setunset_list;
 | 
			
		||||
		bool flag_mod = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ struct SetattrPass : public Pass {
 | 
			
		|||
 | 
			
		||||
struct WbflipPass : public Pass {
 | 
			
		||||
	WbflipPass() : Pass("wbflip", "flip the whitebox attribute") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +138,7 @@ struct WbflipPass : public Pass {
 | 
			
		|||
		log("vice-versa. Blackbox cells are not effected by this command.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++)
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +167,7 @@ struct WbflipPass : public Pass {
 | 
			
		|||
 | 
			
		||||
struct SetparamPass : public Pass {
 | 
			
		||||
	SetparamPass() : Pass("setparam", "set/unset parameters on objects") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +179,7 @@ struct SetparamPass : public Pass {
 | 
			
		|||
		log("The -type option can be used to change the cell type of the selected cells.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		vector<setunset_t> setunset_list;
 | 
			
		||||
		string new_cell_type;
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +219,7 @@ struct SetparamPass : public Pass {
 | 
			
		|||
 | 
			
		||||
struct ChparamPass : public Pass {
 | 
			
		||||
	ChparamPass() : Pass("chparam", "re-evaluate modules with new parameters") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -234,7 +234,7 @@ struct ChparamPass : public Pass {
 | 
			
		|||
		log("List the available parameters of the selected modules.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::vector<setunset_t> setunset_list;
 | 
			
		||||
		dict<RTLIL::IdString, RTLIL::Const> new_parameters;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ struct SetundefWorker
 | 
			
		|||
 | 
			
		||||
struct SetundefPass : public Pass {
 | 
			
		||||
	SetundefPass() : Pass("setundef", "replace undef values with defined constants") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -147,7 +147,7 @@ struct SetundefPass : public Pass {
 | 
			
		|||
		log("        replace undef in cell parameters\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		int got_value = 0;
 | 
			
		||||
		bool undriven_mode = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -587,7 +587,7 @@ struct ShowWorker
 | 
			
		|||
 | 
			
		||||
struct ShowPass : public Pass {
 | 
			
		||||
	ShowPass() : Pass("show", "generate schematics using graphviz") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -674,7 +674,7 @@ struct ShowPass : public Pass {
 | 
			
		|||
		log("the 'show' command is executed.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Generating Graphviz representation of design.\n");
 | 
			
		||||
		log_push();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -246,7 +246,7 @@ struct SpliceWorker
 | 
			
		|||
 | 
			
		||||
struct SplicePass : public Pass {
 | 
			
		||||
	SplicePass() : Pass("splice", "create explicit splicing cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -287,7 +287,7 @@ struct SplicePass : public Pass {
 | 
			
		|||
		log("by selected wires are rewired.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool sel_by_cell = false;
 | 
			
		||||
		bool sel_by_wire = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,7 +95,7 @@ struct SplitnetsWorker
 | 
			
		|||
 | 
			
		||||
struct SplitnetsPass : public Pass {
 | 
			
		||||
	SplitnetsPass() : Pass("splitnets", "split up multi-bit nets") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ struct SplitnetsPass : public Pass {
 | 
			
		|||
		log("        and split nets so that no driver drives only part of a net.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool flag_ports = false;
 | 
			
		||||
		bool flag_driver = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -282,7 +282,7 @@ void read_liberty_cellarea(dict<IdString, double> &cell_area, string liberty_fil
 | 
			
		|||
 | 
			
		||||
struct StatPass : public Pass {
 | 
			
		||||
	StatPass() : Pass("stat", "print some statistics") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -308,7 +308,7 @@ struct StatPass : public Pass {
 | 
			
		|||
		log("        e.g. $add_8 for an 8 bit wide $add cell.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Printing statistics.\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct TeePass : public Pass {
 | 
			
		||||
	TeePass() : Pass("tee", "redirect command output to file") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ struct TeePass : public Pass {
 | 
			
		|||
		log("        Add/subtract INT from the -v setting for this command.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::vector<FILE*> backup_log_files, files_to_close;
 | 
			
		||||
		std::vector<std::ostream*> backup_log_streams;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct TorderPass : public Pass {
 | 
			
		||||
	TorderPass() : Pass("torder", "print cells in topological order") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ struct TorderPass : public Pass {
 | 
			
		|||
		log("        are not used in topological sorting. this option deactivates that.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool noautostop = false;
 | 
			
		||||
		dict<IdString, pool<IdString>> stop_db;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,34 +25,34 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct TraceMonitor : public RTLIL::Monitor
 | 
			
		||||
{
 | 
			
		||||
	void notify_module_add(RTLIL::Module *module) YS_OVERRIDE
 | 
			
		||||
	void notify_module_add(RTLIL::Module *module) override
 | 
			
		||||
	{
 | 
			
		||||
		log("#TRACE# Module add: %s\n", log_id(module));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void notify_module_del(RTLIL::Module *module) YS_OVERRIDE
 | 
			
		||||
	void notify_module_del(RTLIL::Module *module) override
 | 
			
		||||
	{
 | 
			
		||||
		log("#TRACE# Module delete: %s\n", log_id(module));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, const RTLIL::SigSpec &sig) YS_OVERRIDE
 | 
			
		||||
	void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, const RTLIL::SigSpec &sig) override
 | 
			
		||||
	{
 | 
			
		||||
		log("#TRACE# Cell connect: %s.%s.%s = %s (was: %s)\n", log_id(cell->module), log_id(cell), log_id(port), log_signal(sig), log_signal(old_sig));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void notify_connect(RTLIL::Module *module, const RTLIL::SigSig &sigsig) YS_OVERRIDE
 | 
			
		||||
	void notify_connect(RTLIL::Module *module, const RTLIL::SigSig &sigsig) override
 | 
			
		||||
	{
 | 
			
		||||
		log("#TRACE# Connection in module %s: %s = %s\n", log_id(module), log_signal(sigsig.first), log_signal(sigsig.second));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void notify_connect(RTLIL::Module *module, const std::vector<RTLIL::SigSig> &sigsig_vec) YS_OVERRIDE
 | 
			
		||||
	void notify_connect(RTLIL::Module *module, const std::vector<RTLIL::SigSig> &sigsig_vec) override
 | 
			
		||||
	{
 | 
			
		||||
		log("#TRACE# New connections in module %s:\n", log_id(module));
 | 
			
		||||
		for (auto &sigsig : sigsig_vec)
 | 
			
		||||
			log("##    %s = %s\n", log_signal(sigsig.first), log_signal(sigsig.second));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void notify_blackout(RTLIL::Module *module) YS_OVERRIDE
 | 
			
		||||
	void notify_blackout(RTLIL::Module *module) override
 | 
			
		||||
	{
 | 
			
		||||
		log("#TRACE# Blackout in module %s:\n", log_id(module));
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ struct TraceMonitor : public RTLIL::Monitor
 | 
			
		|||
 | 
			
		||||
struct TracePass : public Pass {
 | 
			
		||||
	TracePass() : Pass("trace", "redirect command output to file") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +70,7 @@ struct TracePass : public Pass {
 | 
			
		|||
		log("the design in real time.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++)
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ struct TracePass : public Pass {
 | 
			
		|||
 | 
			
		||||
struct DebugPass : public Pass {
 | 
			
		||||
	DebugPass() : Pass("debug", "run command with debug log messages enabled") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -105,7 +105,7 @@ struct DebugPass : public Pass {
 | 
			
		|||
		log("Execute the specified command with debug log messages enabled\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		size_t argidx;
 | 
			
		||||
		for (argidx = 1; argidx < args.size(); argidx++)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct WriteFileFrontend : public Frontend {
 | 
			
		||||
	WriteFileFrontend() : Frontend("=write_file", "write a text to a file") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ struct WriteFileFrontend : public Frontend {
 | 
			
		|||
		log("    EOT\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design*) YS_OVERRIDE
 | 
			
		||||
	void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design*) override
 | 
			
		||||
	{
 | 
			
		||||
		bool append_mode = false;
 | 
			
		||||
		std::string output_filename;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct EquivAddPass : public Pass {
 | 
			
		||||
	EquivAddPass() : Pass("equiv_add", "add a $equiv cell") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +39,7 @@ struct EquivAddPass : public Pass {
 | 
			
		|||
		log("This command adds $equiv cells for the ports of the specified cells.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool try_mode = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -162,7 +162,7 @@ struct EquivInductWorker
 | 
			
		|||
 | 
			
		||||
struct EquivInductPass : public Pass {
 | 
			
		||||
	EquivInductPass() : Pass("equiv_induct", "proving $equiv cells using temporal induction") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +192,7 @@ struct EquivInductPass : public Pass {
 | 
			
		|||
		log("after reset.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		int success_counter = 0;
 | 
			
		||||
		bool model_undef = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -466,7 +466,7 @@ struct EquivMakeWorker
 | 
			
		|||
 | 
			
		||||
struct EquivMakePass : public Pass {
 | 
			
		||||
	EquivMakePass() : Pass("equiv_make", "prepare a circuit for equivalence checking") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -491,7 +491,7 @@ struct EquivMakePass : public Pass {
 | 
			
		|||
		log("checking problem. Use 'miter -equiv' if you want to create a miter circuit.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		EquivMakeWorker worker;
 | 
			
		||||
		worker.ct.setup(design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -204,7 +204,7 @@ struct EquivMarkWorker
 | 
			
		|||
 | 
			
		||||
struct EquivMarkPass : public Pass {
 | 
			
		||||
	EquivMarkPass() : Pass("equiv_mark", "mark equivalence checking regions") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -216,7 +216,7 @@ struct EquivMarkPass : public Pass {
 | 
			
		|||
		log("wires and cells.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing EQUIV_MARK pass.\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -261,7 +261,7 @@ struct EquivMiterWorker
 | 
			
		|||
 | 
			
		||||
struct EquivMiterPass : public Pass {
 | 
			
		||||
	EquivMiterPass() : Pass("equiv_miter", "extract miter from equiv circuit") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -282,7 +282,7 @@ struct EquivMiterPass : public Pass {
 | 
			
		|||
		log("        Create compare logic that handles undefs correctly\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		EquivMiterWorker worker;
 | 
			
		||||
		worker.ct.setup(design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ struct EquivOptPass:public ScriptPass
 | 
			
		|||
{
 | 
			
		||||
	EquivOptPass() : ScriptPass("equiv_opt", "prove equivalence for optimized circuit") { }
 | 
			
		||||
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ struct EquivOptPass:public ScriptPass
 | 
			
		|||
	std::string command, techmap_opts, make_opts;
 | 
			
		||||
	bool assert, undef, multiclock, async2sync;
 | 
			
		||||
 | 
			
		||||
	void clear_flags() YS_OVERRIDE
 | 
			
		||||
	void clear_flags() override
 | 
			
		||||
	{
 | 
			
		||||
		command = "";
 | 
			
		||||
		techmap_opts = "";
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +79,7 @@ struct EquivOptPass:public ScriptPass
 | 
			
		|||
		async2sync = false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector < std::string > args, RTLIL::Design * design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector < std::string > args, RTLIL::Design * design) override
 | 
			
		||||
	{
 | 
			
		||||
		string run_from, run_to;
 | 
			
		||||
		clear_flags();
 | 
			
		||||
| 
						 | 
				
			
			@ -148,7 +148,7 @@ struct EquivOptPass:public ScriptPass
 | 
			
		|||
		log_pop();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void script() YS_OVERRIDE
 | 
			
		||||
	void script() override
 | 
			
		||||
	{
 | 
			
		||||
		if (check_label("run_pass")) {
 | 
			
		||||
			run("hierarchy -auto-top");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ struct EquivPurgeWorker
 | 
			
		|||
 | 
			
		||||
struct EquivPurgePass : public Pass {
 | 
			
		||||
	EquivPurgePass() : Pass("equiv_purge", "purge equivalence checking module") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -187,7 +187,7 @@ struct EquivPurgePass : public Pass {
 | 
			
		|||
		log("ports as needed.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing EQUIV_PURGE pass.\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct EquivRemovePass : public Pass {
 | 
			
		||||
	EquivRemovePass() : Pass("equiv_remove", "remove $equiv cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ struct EquivRemovePass : public Pass {
 | 
			
		|||
		log("        keep gate circuit\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool mode_gold = false;
 | 
			
		||||
		bool mode_gate = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -273,7 +273,7 @@ struct EquivSimpleWorker
 | 
			
		|||
 | 
			
		||||
struct EquivSimplePass : public Pass {
 | 
			
		||||
	EquivSimplePass() : Pass("equiv_simple", "try proving simple $equiv instances") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -298,7 +298,7 @@ struct EquivSimplePass : public Pass {
 | 
			
		|||
		log("        the max. number of time steps to be considered (default = 1)\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool verbose = false, short_cones = false, model_undef = false, nogroup = false;
 | 
			
		||||
		int success_counter = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct EquivStatusPass : public Pass {
 | 
			
		||||
	EquivStatusPass() : Pass("equiv_status", "print status of equivalent checking module") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ struct EquivStatusPass : public Pass {
 | 
			
		|||
		log("        produce an error if any unproven $equiv cell is found\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool assert_mode = false;
 | 
			
		||||
		int unproven_count = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -283,7 +283,7 @@ struct EquivStructWorker
 | 
			
		|||
 | 
			
		||||
struct EquivStructPass : public Pass {
 | 
			
		||||
	EquivStructPass() : Pass("equiv_struct", "structural equivalence checking") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -314,7 +314,7 @@ struct EquivStructPass : public Pass {
 | 
			
		|||
		log("        maximum number of iterations to run before aborting\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		pool<IdString> fwonly_cells({ ID($equiv) });
 | 
			
		||||
		bool mode_icells = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct FsmPass : public Pass {
 | 
			
		||||
	FsmPass() : Pass("fsm", "extract and optimize finite state machines") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ struct FsmPass : public Pass {
 | 
			
		|||
		log("        passed through to fsm_recode pass\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool flag_nomap = false;
 | 
			
		||||
		bool flag_norecode = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -257,7 +257,7 @@ static void detect_fsm(RTLIL::Wire *wire)
 | 
			
		|||
 | 
			
		||||
struct FsmDetectPass : public Pass {
 | 
			
		||||
	FsmDetectPass() : Pass("fsm_detect", "finding FSMs in design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -273,7 +273,7 @@ struct FsmDetectPass : public Pass {
 | 
			
		|||
		log("'fsm_encoding' attribute to \"none\".\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing FSM_DETECT pass (finding FSMs in design).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -265,7 +265,7 @@ struct FsmExpand
 | 
			
		|||
 | 
			
		||||
struct FsmExpandPass : public Pass {
 | 
			
		||||
	FsmExpandPass() : Pass("fsm_expand", "expand FSM cells by merging logic into it") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -279,7 +279,7 @@ struct FsmExpandPass : public Pass {
 | 
			
		|||
		log("word-wide cells. Call with -full to consider all cells for merging.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool full_mode = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -120,7 +120,7 @@ void write_kiss2(struct RTLIL::Module *module, struct RTLIL::Cell *cell, std::st
 | 
			
		|||
 */
 | 
			
		||||
struct FsmExportPass : public Pass {
 | 
			
		||||
	FsmExportPass() : Pass("fsm_export", "exporting FSMs to KISS2 files") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +143,7 @@ struct FsmExportPass : public Pass {
 | 
			
		|||
		log("        use binary state encoding as state names instead of s0, s1, ...\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		dict<RTLIL::IdString, RTLIL::Const>::iterator attr_it;
 | 
			
		||||
		std::string arg;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -401,7 +401,7 @@ static void extract_fsm(RTLIL::Wire *wire)
 | 
			
		|||
 | 
			
		||||
struct FsmExtractPass : public Pass {
 | 
			
		||||
	FsmExtractPass() : Pass("fsm_extract", "extracting FSMs in design") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -417,7 +417,7 @@ struct FsmExtractPass : public Pass {
 | 
			
		|||
		log("'opt_clean' pass to eliminate this signal.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing FSM_EXTRACT pass (extracting FSM from design).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct FsmInfoPass : public Pass {
 | 
			
		||||
	FsmInfoPass() : Pass("fsm_info", "print information on finite state machines") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ struct FsmInfoPass : public Pass {
 | 
			
		|||
		log("pass so that this information is included in the synthesis log file.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing FSM_INFO pass (dumping all available information on FSM cells).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -322,7 +322,7 @@ static void map_fsm(RTLIL::Cell *fsm_cell, RTLIL::Module *module)
 | 
			
		|||
 | 
			
		||||
struct FsmMapPass : public Pass {
 | 
			
		||||
	FsmMapPass() : Pass("fsm_map", "mapping FSMs to basic logic") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -331,7 +331,7 @@ struct FsmMapPass : public Pass {
 | 
			
		|||
		log("This pass translates FSM cells to flip-flops and logic.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing FSM_MAP pass (mapping FSMs to basic logic).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -324,7 +324,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct FsmOptPass : public Pass {
 | 
			
		||||
	FsmOptPass() : Pass("fsm_opt", "optimize finite state machines") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -335,7 +335,7 @@ struct FsmOptPass : public Pass {
 | 
			
		|||
		log("combination with the 'opt_clean' pass (see also 'help fsm').\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing FSM_OPT pass (simple optimizations of FSMs).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,7 +126,7 @@ static void fsm_recode(RTLIL::Cell *cell, RTLIL::Module *module, FILE *fm_set_fs
 | 
			
		|||
 | 
			
		||||
struct FsmRecodePass : public Pass {
 | 
			
		||||
	FsmRecodePass() : Pass("fsm_recode", "recoding finite state machines") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -151,7 +151,7 @@ struct FsmRecodePass : public Pass {
 | 
			
		|||
		log("            .map <old_bitpattern> <new_bitpattern>\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		FILE *fm_set_fsm_file = NULL;
 | 
			
		||||
		FILE *encfile = NULL;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -558,7 +558,7 @@ RTLIL::Wire *find_implicit_port_wire(Module *module, Cell *cell, const std::stri
 | 
			
		|||
 | 
			
		||||
struct HierarchyPass : public Pass {
 | 
			
		||||
	HierarchyPass() : Pass("hierarchy", "check, expand and clean up design hierarchy") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -639,7 +639,7 @@ struct HierarchyPass : public Pass {
 | 
			
		|||
		log("in the current design.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing HIERARCHY pass (managing design hierarchy).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -319,7 +319,7 @@ struct SubmodWorker
 | 
			
		|||
 | 
			
		||||
struct SubmodPass : public Pass {
 | 
			
		||||
	SubmodPass() : Pass("submod", "moving part of a module to a new submodule") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -351,7 +351,7 @@ struct SubmodPass : public Pass {
 | 
			
		|||
		log("        original module with original public names.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing SUBMOD pass (moving cells to submodules as requested).\n");
 | 
			
		||||
		log_push();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct UniquifyPass : public Pass {
 | 
			
		||||
	UniquifyPass() : Pass("uniquify", "create unique copies of modules") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ struct UniquifyPass : public Pass {
 | 
			
		|||
		log("attribute set (the 'top' module is unique implicitly).\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing UNIQUIFY pass (creating unique copies of modules).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct MemoryPass : public Pass {
 | 
			
		||||
	MemoryPass() : Pass("memory", "translate memories to basic cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ struct MemoryPass : public Pass {
 | 
			
		|||
		log("or multiport memory blocks if called with the -nomap option.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool flag_nomap = false;
 | 
			
		||||
		bool flag_nordff = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1265,7 +1265,7 @@ void handle_cell(Cell *cell, const rules_t &rules)
 | 
			
		|||
 | 
			
		||||
struct MemoryBramPass : public Pass {
 | 
			
		||||
	MemoryBramPass() : Pass("memory_bram", "map memories to block rams") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1367,7 +1367,7 @@ struct MemoryBramPass : public Pass {
 | 
			
		|||
		log("the data bits to accommodate the enable pattern of port A.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(vector<string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(vector<string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		rules_t rules;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -245,7 +245,7 @@ static void handle_module(Design *design, Module *module)
 | 
			
		|||
 | 
			
		||||
struct MemoryCollectPass : public Pass {
 | 
			
		||||
	MemoryCollectPass() : Pass("memory_collect", "creating multi-port memory cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -255,7 +255,7 @@ struct MemoryCollectPass : public Pass {
 | 
			
		|||
		log("memory cells.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE {
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override {
 | 
			
		||||
		log_header(design, "Executing MEMORY_COLLECT pass (generating $mem cells).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
		for (auto module : design->selected_modules())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -291,7 +291,7 @@ struct MemoryDffWorker
 | 
			
		|||
 | 
			
		||||
struct MemoryDffPass : public Pass {
 | 
			
		||||
	MemoryDffPass() : Pass("memory_dff", "merge input/output DFFs into memories") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -305,7 +305,7 @@ struct MemoryDffPass : public Pass {
 | 
			
		|||
		log("        do not merge registers on read ports\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool flag_wr_only = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -403,7 +403,7 @@ struct MemoryMapWorker
 | 
			
		|||
 | 
			
		||||
struct MemoryMapPass : public Pass {
 | 
			
		||||
	MemoryMapPass() : Pass("memory_map", "translate multiport memories to basic cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -425,7 +425,7 @@ struct MemoryMapPass : public Pass {
 | 
			
		|||
		log("        for -attr, ignore case of <value>.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool attr_icase = false;
 | 
			
		||||
		dict<RTLIL::IdString, std::vector<RTLIL::Const>> attributes;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct MemoryMemxPass : public Pass {
 | 
			
		||||
	MemoryMemxPass() : Pass("memory_memx", "emulate vlog sim behavior for mem ports") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +38,7 @@ struct MemoryMemxPass : public Pass {
 | 
			
		|||
		log("behavior for out-of-bounds memory reads and writes.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE {
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override {
 | 
			
		||||
		log_header(design, "Executing MEMORY_MEMX pass (converting $mem cells to logic and flip-flops).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct MemoryNordffPass : public Pass {
 | 
			
		||||
	MemoryNordffPass() : Pass("memory_nordff", "extract read port FFs from memories") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ struct MemoryNordffPass : public Pass {
 | 
			
		|||
		log("similar to what one would get from calling memory_dff with -nordff.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing MEMORY_NORDFF pass (extracting $dff cells from $mem).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -734,7 +734,7 @@ struct MemoryShareWorker
 | 
			
		|||
 | 
			
		||||
struct MemorySharePass : public Pass {
 | 
			
		||||
	MemorySharePass() : Pass("memory_share", "consolidate memory ports") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -760,7 +760,7 @@ struct MemorySharePass : public Pass {
 | 
			
		|||
		log("optimizations) such as \"share\" and \"opt_merge\".\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE {
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override {
 | 
			
		||||
		log_header(design, "Executing MEMORY_SHARE pass (consolidating $memrd/$memwr cells).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
		MemoryShareWorker msw(design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ void handle_module(RTLIL::Design *design, RTLIL::Module *module)
 | 
			
		|||
 | 
			
		||||
struct MemoryUnpackPass : public Pass {
 | 
			
		||||
	MemoryUnpackPass() : Pass("memory_unpack", "unpack multi-port memory cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +137,7 @@ struct MemoryUnpackPass : public Pass {
 | 
			
		|||
		log("$memwr cells. It is the counterpart to the memory_collect pass.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE {
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override {
 | 
			
		||||
		log_header(design, "Executing MEMORY_UNPACK pass (generating $memrd/$memwr cells form $mem cells).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
		for (auto module : design->selected_modules())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -326,7 +326,7 @@ struct MuxpackWorker
 | 
			
		|||
 | 
			
		||||
struct MuxpackPass : public Pass {
 | 
			
		||||
	MuxpackPass() : Pass("muxpack", "$mux/$pmux cascades to $pmux") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -341,7 +341,7 @@ struct MuxpackPass : public Pass {
 | 
			
		|||
		log("certain that their select inputs are mutually exclusive.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing MUXPACK pass ($mux cell cascades to $pmux).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct OptPass : public Pass {
 | 
			
		||||
	OptPass() : Pass("opt", "perform simple optimizations") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ struct OptPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string opt_clean_args;
 | 
			
		||||
		std::string opt_expr_args;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -526,7 +526,7 @@ void rmunused_module(RTLIL::Module *module, bool purge_mode, bool verbose, bool
 | 
			
		|||
 | 
			
		||||
struct OptCleanPass : public Pass {
 | 
			
		||||
	OptCleanPass() : Pass("opt_clean", "remove unused cells and wires") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -543,7 +543,7 @@ struct OptCleanPass : public Pass {
 | 
			
		|||
		log("        also remove internal nets if they have a public name\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool purge_mode = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -592,7 +592,7 @@ struct OptCleanPass : public Pass {
 | 
			
		|||
 | 
			
		||||
struct CleanPass : public Pass {
 | 
			
		||||
	CleanPass() : Pass("clean", "remove unused cells and wires") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -607,7 +607,7 @@ struct CleanPass : public Pass {
 | 
			
		|||
		log("in -purge mode between the commands.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool purge_mode = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -169,7 +169,7 @@ void demorgan_worker(
 | 
			
		|||
 | 
			
		||||
struct OptDemorganPass : public Pass {
 | 
			
		||||
	OptDemorganPass() : Pass("opt_demorgan", "Optimize reductions with DeMorgan equivalents") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +179,7 @@ struct OptDemorganPass : public Pass {
 | 
			
		|||
		log("overall gate count of the circuit\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing OPT_DEMORGAN pass (push inverters through $reduce_* cells).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2009,7 +2009,7 @@ skip_alu_split:
 | 
			
		|||
 | 
			
		||||
struct OptExprPass : public Pass {
 | 
			
		||||
	OptExprPass() : Pass("opt_expr", "perform const folding and simple expression rewriting") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -2043,7 +2043,7 @@ struct OptExprPass : public Pass {
 | 
			
		|||
		log("        replaced by 'a'. the -keepdc option disables all such optimizations.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool mux_undef = false;
 | 
			
		||||
		bool mux_bool = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -520,7 +520,7 @@ static void split(std::vector<std::string> &tokens, const std::string &text, cha
 | 
			
		|||
 | 
			
		||||
struct OptLutPass : public Pass {
 | 
			
		||||
	OptLutPass() : Pass("opt_lut", "optimize LUT cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -538,7 +538,7 @@ struct OptLutPass : public Pass {
 | 
			
		|||
		log("        only perform the first N combines, then stop. useful for debugging.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing OPT_LUT pass (optimize LUTs).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct OptLutInsPass : public Pass {
 | 
			
		||||
	OptLutInsPass() : Pass("opt_lut_ins", "discard unused LUT inputs") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ struct OptLutInsPass : public Pass {
 | 
			
		|||
		log("        to the given technology.  Valid values are: xilinx, ecp5, gowin.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing OPT_LUT_INS pass (discard unused LUT inputs).\n");
 | 
			
		||||
		string techname;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ struct OptMemWorker
 | 
			
		|||
 | 
			
		||||
struct OptMemPass : public Pass {
 | 
			
		||||
	OptMemPass() : Pass("opt_mem", "optimize memories") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ struct OptMemPass : public Pass {
 | 
			
		|||
		log("This pass performs various optimizations on memories in the design.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing OPT_MEM pass (optimize memories).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -326,7 +326,7 @@ struct OptMergeWorker
 | 
			
		|||
 | 
			
		||||
struct OptMergePass : public Pass {
 | 
			
		||||
	OptMergePass() : Pass("opt_merge", "consolidate identical cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -342,7 +342,7 @@ struct OptMergePass : public Pass {
 | 
			
		|||
		log("        Operate on all cell types, not just built-in types.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing OPT_MERGE pass (detect identical cells).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -473,7 +473,7 @@ struct OptMuxtreeWorker
 | 
			
		|||
 | 
			
		||||
struct OptMuxtreePass : public Pass {
 | 
			
		||||
	OptMuxtreePass() : Pass("opt_muxtree", "eliminate dead trees in multiplexer trees") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -486,7 +486,7 @@ struct OptMuxtreePass : public Pass {
 | 
			
		|||
		log("This pass only operates on completely selected modules without processes.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing OPT_MUXTREE pass (detect dead branches in mux trees).\n");
 | 
			
		||||
		extra_args(args, 1, design);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -332,7 +332,7 @@ struct OptReduceWorker
 | 
			
		|||
 | 
			
		||||
struct OptReducePass : public Pass {
 | 
			
		||||
	OptReducePass() : Pass("opt_reduce", "simplify large MUXes and AND/OR gates") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -353,7 +353,7 @@ struct OptReducePass : public Pass {
 | 
			
		|||
		log("      alias for -fine\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool do_fine = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -540,7 +540,7 @@ delete_dff:
 | 
			
		|||
 | 
			
		||||
struct OptRmdffPass : public Pass {
 | 
			
		||||
	OptRmdffPass() : Pass("opt_rmdff", "remove DFFs with constant inputs") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -554,7 +554,7 @@ struct OptRmdffPass : public Pass {
 | 
			
		|||
		log("        non-constant inputs) that can also be replaced with a constant driver\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		int total_count = 0, total_initdrv = 0;
 | 
			
		||||
		log_header(design, "Executing OPT_RMDFF pass (remove dff with constant values).\n");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -473,7 +473,7 @@ dict<RTLIL::SigSpec, OpMuxConn> find_valid_op_mux_conns(RTLIL::Module *module, d
 | 
			
		|||
 | 
			
		||||
struct OptSharePass : public Pass {
 | 
			
		||||
	OptSharePass() : Pass("opt_share", "merge mutually exclusive cells of the same type that share an input signal") {}
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -488,7 +488,7 @@ struct OptSharePass : public Pass {
 | 
			
		|||
		log("multiplexing its output to multiplexing the non-shared input signals.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
		log_header(design, "Executing OPT_SHARE pass.\n");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -198,7 +198,7 @@ struct OnehotDatabase
 | 
			
		|||
 | 
			
		||||
struct Pmux2ShiftxPass : public Pass {
 | 
			
		||||
	Pmux2ShiftxPass() : Pass("pmux2shiftx", "transform $pmux cells to $shiftx cells") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +225,7 @@ struct Pmux2ShiftxPass : public Pass {
 | 
			
		|||
		log("        disable $sub inference for \"range decoders\"\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		int min_density = 50;
 | 
			
		||||
		int min_choices = 3;
 | 
			
		||||
| 
						 | 
				
			
			@ -737,7 +737,7 @@ struct Pmux2ShiftxPass : public Pass {
 | 
			
		|||
 | 
			
		||||
struct OnehotPass : public Pass {
 | 
			
		||||
	OnehotPass() : Pass("onehot", "optimize $eq cells for onehot signals") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -749,7 +749,7 @@ struct OnehotPass : public Pass {
 | 
			
		|||
		log("        verbose output\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool verbose = false;
 | 
			
		||||
		bool verbose_onehot = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct RmportsPassPass : public Pass {
 | 
			
		||||
	RmportsPassPass() : Pass("rmports", "remove module ports with no connections") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +39,7 @@ struct RmportsPassPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing RMPORTS pass (remove ports with no connections).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1444,7 +1444,7 @@ struct ShareWorker
 | 
			
		|||
 | 
			
		||||
struct SharePass : public Pass {
 | 
			
		||||
	SharePass() : Pass("share", "perform sat-based resource sharing") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1476,7 +1476,7 @@ struct SharePass : public Pass {
 | 
			
		|||
		log("    Only perform the first N merges, then stop. This is useful for debugging.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		ShareWorkerConfig config;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -482,7 +482,7 @@ struct WreduceWorker
 | 
			
		|||
 | 
			
		||||
struct WreducePass : public Pass {
 | 
			
		||||
	WreducePass() : Pass("wreduce", "reduce the word size of operations if possible") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -505,7 +505,7 @@ struct WreducePass : public Pass {
 | 
			
		|||
		log("        Do not optimize explicit don't-care values.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		WreduceConfig config;
 | 
			
		||||
		bool opt_memx = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -275,7 +275,7 @@ void create_ice40_dsp(ice40_dsp_pm &pm)
 | 
			
		|||
 | 
			
		||||
struct Ice40DspPass : public Pass {
 | 
			
		||||
	Ice40DspPass() : Pass("ice40_dsp", "iCE40: map multipliers") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -294,7 +294,7 @@ struct Ice40DspPass : public Pass {
 | 
			
		|||
		log("the accumulator to an arbitrary value can be inferred to use the {C,D} input.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing ICE40_DSP pass (map multipliers).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ void create_ice40_wrapcarry(ice40_wrapcarry_pm &pm)
 | 
			
		|||
 | 
			
		||||
struct Ice40WrapCarryPass : public Pass {
 | 
			
		||||
	Ice40WrapCarryPass() : Pass("ice40_wrapcarry", "iCE40: wrap carries") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ struct Ice40WrapCarryPass : public Pass {
 | 
			
		|||
		log("        including restoring their attributes.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool unwrap = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ pool<SigBit> rminitbits;
 | 
			
		|||
 | 
			
		||||
struct PeepoptPass : public Pass {
 | 
			
		||||
	PeepoptPass() : Pass("peepopt", "collection of peephole optimizers") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ struct PeepoptPass : public Pass {
 | 
			
		|||
		log("This pass applies a collection of peephole optimizers to the current design.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string genmode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -118,7 +118,7 @@ void opt_eqpmux(test_pmgen_pm &pm)
 | 
			
		|||
 | 
			
		||||
struct TestPmgenPass : public Pass {
 | 
			
		||||
	TestPmgenPass() : Pass("test_pmgen", "test pass for pmgen") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -239,7 +239,7 @@ struct TestPmgenPass : public Pass {
 | 
			
		|||
		log_cmd_error("Unknown pattern: %s\n", pattern.c_str());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		if (GetSize(args) > 1)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -744,7 +744,7 @@ void xilinx_dsp_packC(xilinx_dsp_CREG_pm &pm)
 | 
			
		|||
 | 
			
		||||
struct XilinxDspPass : public Pass {
 | 
			
		||||
	XilinxDspPass() : Pass("xilinx_dsp", "Xilinx: pack resources into DSPs") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -785,7 +785,7 @@ struct XilinxDspPass : public Pass {
 | 
			
		|||
		log("        default: xc7\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing XILINX_DSP pass (pack resources into DSPs).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -188,7 +188,7 @@ void run_variable(xilinx_srl_pm &pm)
 | 
			
		|||
 | 
			
		||||
struct XilinxSrlPass : public Pass {
 | 
			
		||||
	XilinxSrlPass() : Pass("xilinx_srl", "Xilinx shift register extraction") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +212,7 @@ struct XilinxSrlPass : public Pass {
 | 
			
		|||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing XILINX_SRL pass (Xilinx shift register extraction).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ PRIVATE_NAMESPACE_BEGIN
 | 
			
		|||
 | 
			
		||||
struct ProcPass : public Pass {
 | 
			
		||||
	ProcPass() : Pass("proc", "translate processes to netlists") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ struct ProcPass : public Pass {
 | 
			
		|||
		log("        executed in -ifx mode.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string global_arst;
 | 
			
		||||
		bool ifxmode = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -203,7 +203,7 @@ restart_proc_arst:
 | 
			
		|||
 | 
			
		||||
struct ProcArstPass : public Pass {
 | 
			
		||||
	ProcArstPass() : Pass("proc_arst", "detect asynchronous resets") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -221,7 +221,7 @@ struct ProcArstPass : public Pass {
 | 
			
		|||
		log("        in the 'init' attribute on the net.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		std::string global_arst;
 | 
			
		||||
		bool global_arst_neg = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -166,7 +166,7 @@ void proc_clean(RTLIL::Module *mod, RTLIL::Process *proc, int &total_count, bool
 | 
			
		|||
 | 
			
		||||
struct ProcCleanPass : public Pass {
 | 
			
		||||
	ProcCleanPass() : Pass("proc_clean", "remove empty parts of processes") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +179,7 @@ struct ProcCleanPass : public Pass {
 | 
			
		|||
		log("if it contains only empty structures.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		int total_count = 0;
 | 
			
		||||
		bool quiet = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -370,7 +370,7 @@ void proc_dff(RTLIL::Module *mod, RTLIL::Process *proc, ConstEval &ce)
 | 
			
		|||
 | 
			
		||||
struct ProcDffPass : public Pass {
 | 
			
		||||
	ProcDffPass() : Pass("proc_dff", "extract flip-flops from processes") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -380,7 +380,7 @@ struct ProcDffPass : public Pass {
 | 
			
		|||
		log("d-type flip-flop cells.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing PROC_DFF pass (convert process syncs to FFs).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -434,7 +434,7 @@ void proc_dlatch(proc_dlatch_db_t &db, RTLIL::Process *proc)
 | 
			
		|||
 | 
			
		||||
struct ProcDlatchPass : public Pass {
 | 
			
		||||
	ProcDlatchPass() : Pass("proc_dlatch", "extract latches from processes") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -444,7 +444,7 @@ struct ProcDlatchPass : public Pass {
 | 
			
		|||
		log("d-type latches.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing PROC_DLATCH pass (convert process syncs to latches).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ void proc_init(RTLIL::Module *mod, SigMap &sigmap, RTLIL::Process *proc)
 | 
			
		|||
 | 
			
		||||
struct ProcInitPass : public Pass {
 | 
			
		||||
	ProcInitPass() : Pass("proc_init", "convert initial block to init attributes") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ struct ProcInitPass : public Pass {
 | 
			
		|||
		log("respective wire.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		log_header(design, "Executing PROC_INIT pass (extract init attributes).\n");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -438,7 +438,7 @@ void proc_mux(RTLIL::Module *mod, RTLIL::Process *proc, bool ifxmode)
 | 
			
		|||
 | 
			
		||||
struct ProcMuxPass : public Pass {
 | 
			
		||||
	ProcMuxPass() : Pass("proc_mux", "convert decision trees to multiplexers") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -452,7 +452,7 @@ struct ProcMuxPass : public Pass {
 | 
			
		|||
		log("        'case' expressions and 'if' conditions.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		bool ifxmode = false;
 | 
			
		||||
		log_header(design, "Executing PROC_MUX pass (convert decision trees to multiplexers).\n");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -125,7 +125,7 @@ struct PruneWorker
 | 
			
		|||
 | 
			
		||||
struct ProcPrunePass : public Pass {
 | 
			
		||||
	ProcPrunePass() : Pass("proc_prune", "remove redundant assignments") { }
 | 
			
		||||
	void help() YS_OVERRIDE
 | 
			
		||||
	void help() override
 | 
			
		||||
	{
 | 
			
		||||
		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | 
			
		||||
		log("\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +135,7 @@ struct ProcPrunePass : public Pass {
 | 
			
		|||
		log("a later assignment to the same signal and removes them.\n");
 | 
			
		||||
		log("\n");
 | 
			
		||||
	}
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	void execute(std::vector<std::string> args, RTLIL::Design *design) override
 | 
			
		||||
	{
 | 
			
		||||
		int total_removed_count = 0, total_promoted_count = 0;
 | 
			
		||||
		log_header(design, "Executing PROC_PRUNE pass (remove redundant assignments in processes).\n");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue