diff options
Diffstat (limited to 'frontends/verilog')
| -rw-r--r-- | frontends/verilog/verilog_frontend.cc | 23 | ||||
| -rw-r--r-- | frontends/verilog/verilog_frontend.h | 6 | ||||
| -rw-r--r-- | frontends/verilog/verilog_parser.y | 2 | 
3 files changed, 29 insertions, 2 deletions
diff --git a/frontends/verilog/verilog_frontend.cc b/frontends/verilog/verilog_frontend.cc index 504f8b3f3..ed6ce2ecb 100644 --- a/frontends/verilog/verilog_frontend.cc +++ b/frontends/verilog/verilog_frontend.cc @@ -145,8 +145,18 @@ struct VerilogFrontend : public Frontend {  		log("    -nodpi\n");  		log("        disable DPI-C support\n");  		log("\n"); +		log("    -noblackbox\n"); +		log("        do not automatically add a (* blackbox *) attribute to an\n"); +		log("        empty module.\n"); +		log("\n");  		log("    -lib\n");  		log("        only create empty blackbox modules. This implies -DBLACKBOX.\n"); +		log("        modules with the (* whitebox *) attribute will be preserved.\n"); +		log("        (* lib_whitebox *) will be treated like (* whitebox *).\n"); +		log("\n"); +		log("    -nowb\n"); +		log("        delete (* whitebox *) and (* lib_whitebox *) attributes from\n"); +		log("        all modules.\n");  		log("\n");  		log("    -noopt\n");  		log("        don't perform basic optimizations (such as const folding) in the\n"); @@ -227,7 +237,9 @@ struct VerilogFrontend : public Frontend {  		formal_mode = false;  		norestrict_mode = false;  		assume_asserts_mode = false; +		noblackbox_mode = false;  		lib_mode = false; +		nowb_mode = false;  		default_nettype_wire = true;  		log_header(design, "Executing Verilog-2005 frontend.\n"); @@ -329,11 +341,19 @@ struct VerilogFrontend : public Frontend {  				flag_nodpi = true;  				continue;  			} +			if (arg == "-noblackbox") { +				noblackbox_mode = true; +				continue; +			}  			if (arg == "-lib") {  				lib_mode = true;  				defines_map["BLACKBOX"] = string();  				continue;  			} +			if (arg == "-nowb") { +				nowb_mode = true; +				continue; +			}  			if (arg == "-noopt") {  				flag_noopt = true;  				continue; @@ -429,7 +449,8 @@ struct VerilogFrontend : public Frontend {  		if (flag_nodpi)  			error_on_dpi_function(current_ast); -		AST::process(design, current_ast, flag_dump_ast1, flag_dump_ast2, flag_no_dump_ptr, flag_dump_vlog1, flag_dump_vlog2, flag_dump_rtlil, flag_nolatches, flag_nomeminit, flag_nomem2reg, flag_mem2reg, lib_mode, flag_noopt, flag_icells, flag_nooverwrite, flag_overwrite, flag_defer, default_nettype_wire); +		AST::process(design, current_ast, flag_dump_ast1, flag_dump_ast2, flag_no_dump_ptr, flag_dump_vlog1, flag_dump_vlog2, flag_dump_rtlil, flag_nolatches, +				flag_nomeminit, flag_nomem2reg, flag_mem2reg, noblackbox_mode, lib_mode, nowb_mode, flag_noopt, flag_icells, flag_nooverwrite, flag_overwrite, flag_defer, default_nettype_wire);  		if (!flag_nopp)  			delete lexin; diff --git a/frontends/verilog/verilog_frontend.h b/frontends/verilog/verilog_frontend.h index 523bbc897..ca40946cb 100644 --- a/frontends/verilog/verilog_frontend.h +++ b/frontends/verilog/verilog_frontend.h @@ -69,9 +69,15 @@ namespace VERILOG_FRONTEND  	// running in -assert-assumes mode  	extern bool assert_assumes_mode; +	// running in -noblackbox mode +	extern bool noblackbox_mode; +  	// running in -lib mode  	extern bool lib_mode; +	// running in -nowb mode +	extern bool nowb_mode; +  	// lexer input stream  	extern std::istream *lexin;  } diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 52685f637..40968d17a 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -59,7 +59,7 @@ namespace VERILOG_FRONTEND {  	std::vector<char> case_type_stack;  	bool do_not_require_port_stubs;  	bool default_nettype_wire; -	bool sv_mode, formal_mode, lib_mode; +	bool sv_mode, formal_mode, noblackbox_mode, lib_mode, nowb_mode;  	bool noassert_mode, noassume_mode, norestrict_mode;  	bool assume_asserts_mode, assert_assumes_mode;  	bool current_wire_rand, current_wire_const;  | 
